stata入门中文讲义.docx_第1页
stata入门中文讲义.docx_第2页
stata入门中文讲义.docx_第3页
stata入门中文讲义.docx_第4页
stata入门中文讲义.docx_第5页
已阅读5页,还剩50页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Stata及数据处理目录第一章STATA基础11.1命令格式21.2缩写、关系式和错误信息41.3do文件41.4标量和矩阵51.5使用Stata命令的结果61.6宏71.7循环语句81.8用户写的程序121.9参考文献121.10练习12第二章 数据管理和画图152.1数据类型和格式152.2 数据输入162.3 画图17第3章 线性回归基础183.1数据和数据描述183.1.1变量描述193.1.2简单统计193.1.3二维表193.1.4加统计信息的一维表223.1.5统计检验223.1.6数据画图233.2回归分析243.2.1相关分析243.2.2线性回归253.2.3假设检验 Wald test263.2.4估计结果呈现263.3预测293.4Stata 资源31第4章 数据处理的组织方法311、可执行程序的编写与执行31方法1:do文件31方法2:交互式-program-命令32方法3:在do文件中使用program命令33方法4:do文件合并34方法5:ado 文件352、do文件的组织363、数据导入364、_n和_N的用法4055第一章 STATA基础STATA的使用有两种方式,即菜单驱动和命令驱动。菜单驱动比较适合于初学者,容易入学,而命令驱动更有效率,适合于高级用户。我们主要着眼于经验分析,因而重点介绍命令驱动模式。图1.1Stata12.1的基本界面关于STATA的使用,可以参考Stata手册,特别是GS Getting Started with Stata,尤其是第章A sample session和第章The Stata User Interface。有关Stata使用的资料非常多,其中Stata官方的有Stata手册,比如对于初学者,GSGetting Started with Stata是有用的起点,最有用的手册可能是U Users Guide。除此之外,还有很多的其他相关手册 ,相关介绍参见用户手册U 1 Read thisit will help。Stata Journal (SJ) 和 Stata Technical Bulletin (STB) 是Stata的官方期刊,里面介绍一些没有包括在当前Stata 安装里的例子和程序。其中,STB是SJ的前身,自2001年起,STB改为SJ。另外,Stata的网站上有很多有用的信息Stata软件本身也提供很多有用的帮助命令,其中使用最多的可能是help命令,比如当你忘记Stata 命令regress的使用方法时,可以在命令窗口输入help regress,从而调出Stata的viewer窗口,提供regress命令的使用方法。有时,你如果不知道具体的命令,也可以使用help命令获得帮助,比如想了解特征的函数命令,但有忘记了,可以使用help function调出所有的函数。另外,Stata还提供search、findit、hsearch等搜索命令。search会在Stata官方帮助文件、FAQS、例子、SJ、STB等搜索关键词,但不会搜索网络。net search会在网络(包括SJ/STB)上搜索可安装的程序。findit 会进行更广范围的搜索,包括本机和网络信息,并且关键词不必完整。hsearch会在本机上搜索所有的帮助文件(扩展名为.sthlp或hlp的文件),包括官方命令和用户写的命令。1.1 命令格式所有Stata命令基本具有下列模式prefix: command varlist = expifinweightusing filename, options方括号表示可选项,打字机体是直接输入,斜体需要用户替代,其中Prefix表示前缀,command是相应的Stata命令,varlist是变量列表,exp是表达式,filename是文件名,options表示适用于该命令的一个或多个可选项。Su pric比如,简单统计命令summarize的命令格式为summarize varlist if in weight , options下划线表示该命令也可缩写为su。以系统自带数据auto.dta为例,看一下summarize命令的使用。可以利用help summarize查看它的可选项,比如用detail可选项,还可以把变量的偏度和峰度显示出来。再比如回归命令regress的格式为regress depvar indepvars if in weight , options假设我们用mpg (每加仑汽油可以跑多少英里,测度油耗)对价格price和车重weight回归,如下Weight的系数是-0.0058175,表示如果车重增加1000磅,每加仑汽车将少跑5.8英里。一个更复杂一些的使用如下:有时,我们不想看到输出结果,可以使用前缀quietly,比如1.2 缩写、关系式和错误信息Stata命令可以缩写,比如summarize可以缩写为su,regress可以缩写为reg,在help文件中,Stata命令下划线部分即该命令可以缩写的最短形式。加外,任意符*可以表示任意字母,比如sum t*表示对所有首字母为t的变量进行简单统计。数学运算符有加(+)、减(-)、乘(*)、除(/)、指数()、负(前缀-);关系运算符有大于()、小于()、等(=)、不等于(!=或=)。逻辑运算符有与(&)、或(|)、非(!或)。Stata运行出错时,会提供错误代码,比如r(111),用户可以交互式的通过search rc 111命令,获得错误代码的意思或直接在输出窗口中点击r(111)得到相应解释。1.3 do文件do文件是将Stata命令列表形式生成的一个文本文件,运行该文件时,Stata即会按照文件命令的排列顺序逐条执行。do文件是Stata软件的一个重要特色,在数据处理和实证分析中特别有用。do的书写可以使用任何文本编辑器进行,也可以使用Stata自带的编辑器书写,可以用命令doedit直接调出Stata自带文本编辑器进行编辑。比如我们写一个简单的do文件,将命令sysuse auto.dta, clear、summarize mpg, detail 放在同一个do文件中,起名为example.do。则我可以使用命令do example.do 来执行该文件。当do文件比较大,命令比较多时,加入解释和说明是必要的。Stata允许在do文件中加入说明。有三种方式,第1种,直接以*开头进行的一行的说明。第2种在命令后面直接加/第3种用/* */或/加注比如下面的example.do文件*This is an example of do files with commentslog using auto, replace / generate a log filesysuse auto, /*/ clear/*Summarize variable mpg */sum mpg /,detaillog close /close the log file当然,也可以通过改变结尾分隔符的方式来做,比如*change delimiter from cr to semicolomn and back to cr#delimit ;*more than one command per line and command spans more than one line;log using auto, replace; sysuse auto, clear; summarizempg; logclose;#delimit cr为了程序可读性,我们通常用/而不使用改变分隔符的形式。do文件的运行非常简单,直接在命令窗口输入do filename.do即可。1.4 标量和矩阵一个标量可以用来储存数字或字符,比如矩阵的使用有两种方式,一种是直接在命令窗口利用matrix前缀,另一种使用mata命令。1.5 使用Stata命令的结果Stata命令的结果有两类,一类是r类、一类是e类,Stata中分析数据但不估计参数的命令称为r类命令,这类命令的结果会保存在r()中,通过return list命令可以列出该命令产生的所有结果,比如,因而,可以利用这些信息计算一些有用的参数,比如我们计算mpg的极差,那些估计参数的命令称为e类命令,其结果会保存在e()中,利用ereturn list可以列出所有的结果。比如回归命令,1.6 宏宏(macro)是利用一个字符串代表另一个字符串。比如,我们可以利用宏xlist来代替”price weight”。这种替代可以使程序更短,增加易读性,并且很容易修改。宏分为全局宏和局部宏。全局宏用global进行定义,并用$进行引用,比如,全局宏可以适用于Stata软件的整个期间。比如修改example.do,调整宏xlist,都会起作用的。Example.dosysuse auto,clearsu mpg price weightreg mpg $xlistreg mpg xlist局部宏用local 进行定义,用进行引用(其中左引号通常在键上,与通常的单引号是不同的)。另一个例子1.7 循环语句Stata的循环语句有三种:foreach、forvalues、while。foreach是根据列表中的每一项进行循环,forvalues是根据连续整数进行循环,while是根据用户的条件是否满足进行循环。先看两处数据产生命令generate和replace,和随机数产生器runiform()。下面,我们分别用三种循环语句实现4个变量的求和。首先用foreach*foreach loop with a variable listquietly replace sum = 0foreach var of varlist x1 x2 x3 x4 quietly replace sum = sum +varsummarize sum下面用forvalesquietly replace sum = 0forvalues i=1(1)4 quietly replace sum = sum + xisummarize sum利用while命令quietly replace sum = 0local i=1while i=4 quietly replace sum = sum + xilocal i = i + 1 summarize sum1.8 有用的其他命令用户手册中提出的每个人需要知道的最常用的42条命令Getting online help U 4 Statas help and search facilitieshelp, hsearch,net search, search,finditKeeping Stata up to dateado, net, update U 28 Using the Internet to keep up to dateadoupdate R adoupdateOperating system interfacepwd, cd D cdUsing and saving data from disksave, saveold D saveuse D useappend, merge U 22 Combining datasetscompress D compressInputting data into Stata U 21 Inputting and importing dataimport D importedit D editBasic data reportingdescribe D describecodebook D codebooklist D listbrowse D editcount D countinspect D inspecttable R tabletabulate R tabulate oneway and R tabulate twowayData manipulation U 13 Functions and expressionsgenerate, replace D generateegen D egenrename D rename, D rename groupclear D cleardrop, keep D dropsort D sortencode, decode D encode, destring/tostringrecodeorder D orderby U 11.5 by varlist: constructreshape D reshapeKeeping track of your worklog U 15 Saving and printing outputlog filesnotes D notesConveniencedisplay R displayR Base Reference ManualD Data Management Reference ManualG Graphics Reference ManualM Mata Reference ManualMV Multivariate Statistics Reference ManualP Programming Reference ManualST Survival Analysis and Epidemiological Tables Reference MaunalSVY Survey Data Reference ManualTS Time-Series Reference ManualXT Longitudinal/Panel-Data Reference Manual1.8 用户写的程序比如ivreg2,psmatch2, 可以运用findit ivreg2并安装使用1.9 参考文献Baum, Christopher F. An Introduction to Modern Econometrics Using StataCameron, A. C. and P. K. Trivedi, 2009, Microeconometrics Using Stata, Stata Press, Texas.1.10 练习1. 运用数据auto.dta,获得价格price的简单统计信息,并利用r()的储存的信息计算价格的 变异系数(即标准差除以平均值)。2. 利用数据auto.dta,做mpg对price, weight的回归,并利用e()中储存的信息计算R2。3. 利用数据auto.dta,定义一个全局宏变量 varlist,代替变量mpg, price, weight,并获得varlist所代表变量的简单统计信息,利用局部宏重复上述过程。4. 利用数据auto.dta,利用循环语句foreach产生一个新的变量total,等于headroom和length的加和,并用summarize命令检验均值是否正确。参考答案:1.sysuse auto, clearsum priceretu listg cv=r(sd)/r(mean)di cv2. sysuse auto,clearreg mpg price weightg r2 = e(mss)/(e(mss)+e(rss)di r23. sysuse auto, clearglobal varlist mpg price weightsum $varlistlocal varlist mpg price weightsum varlist4.cap drop sumqui generate sum=0foreach var of varlist headroom length qui replace sum = sum + varsum sum第二章 数据管理和画图2.1数据类型和格式内部数值型数据有五种模式存在类型字节数最小最大byte1-127100int2-32,76732,740long4-2,147,483,6472,147,483,620float4-1.7014117331910381.701411733191038double8-8.9984656743103078.998465674310307另外,还有字符型数据,与其相关的两条命令是destring,将字符型变量转变为数值型,tostring则将数值型转化为字符型。encode/decode数据显示格式可以利用命令format来进行调整,具体参数有f固定形式%12.2f 3.5555 3.56g一般形式e指数形式c千分位加豆号可以利用命令help format了解数据显示格式的更多内容。2.2 数据输入useimport excelinsheetodbcinfile (free format)infix (fixed format)import sasxporthaverxmluseStata格式数据的输入 use filename , clear nolabel use varlist if in using filename , clear nolabel例:use auto, clearuse if foreign=1 using auto, clear输入文本文件数据 insheet varlist using filename , options nodouble override default storage type tab tab-delimited data comma comma-delimited data delimiter(char) use char as delimiter clear replace data in memory case preserve variable names case nonames variable names are included on the first line of the file例:insheet using path gdp.txt, clear.ODBC 调入ACCESS文件(工业企业数据)c:WindowsSysWoW64odbcad32odbc load, table(“QY05”)直接从键盘输入两种方法:edit和input. input y x y x 1. 3232 343 2. 43324 45634 3. 32423 45343 4. end其他输入方式,参考help import*StatTransfer软件可以进行不同格式数据转换2.3 画图1. 散点图 twoway scatter varlist if in weight , options graph matrix varlist if in weight , optionssc mpg weightsc mpg weight | lfit mpg weighttwoway (lfitci mpg weight,lwidth(medthick)(sc mpg weight)scatter lwage educ, msize(small) | lfit lwage educ, lwidth(medthick)graph twoway (scatter lwage educ, msize(small) )( lfit lwage educ, lwidth(medthick), title(Scatterplot and OLS fitted line)加置信区间:lfitci, qfit, qfitci, fpfitcigraph save graphname filename , asis replace或直接用选项saving(filename, asis replace)保存的图可以组合起来graph combine,打开盘中的图用graph use graph save save graph to disk graph use redisplay graph stored on disk graph display redisplay graph stored in memory graph combine combine multiple graphs2. 直方图histogram varname if in weight , continuous_opts | discrete_opts options3. 核密度图(Kernel density plot) kdensity varname if in weight , optionstwoway kdensity varname if in weight , optionstwoway kdensity lwage ,by(male) /显示在两张独立的图上twoway (kdensity lwage if male=1)(kdensity lwage if male=0) , legend(label(1 “Male”) label(2 “Female”)/同一图中2.4 更多资源参考U Users Guide 和 D Data Management Reference Manual。有用的在线帮助命令包括:1) double, string, format; 2) clear, use, insheet, infile, outsheet; 3) summarize, list, label, tabulate, generate, egen, keep drop, recode, sort, gsort, merge, append, collapse; 4) graph, scatter, histogram, kdensity, twoway, graph matrix。第3章 线性回归基础3.1 数据和数据描述比如我们研究收入决定模型,使用2002年的中国城镇居民收入调查数据ind02.dta。首先,将数据调入系统,对变量进行描述。3.1.1 变量描述use inc02.dta, cleardescribe wage lwage male age educ exper expersq ownership industry occupation ,detail3.1.2 简单统计summarize wage lwage male age educ exper expersq ownership industry occupationtabulate 可以用来对变量列表3.1.3 二维表tabulate male , nolabeltabulate industry male三维表table male ownership occupation3.1.4 加统计信息的一维表tabulate varlist ,summarize统计表格tabstattabstat wage educ exper, statistics( count mean p50 skew kurt) column(statistics)3.1.5 统计检验ttest 可以用来检验变量总体均值是否等于某一常数(H0: m=m*),或检验两个均值是否相等(H0: m1=m2)3.1.6 数据画图kdensity 和 twoway kdensity可以用来画变量的分布,比如工资的分布kdensity wagetwoway kdensity wage, by(male)Twoway (kdensity wage if male)(kdensity wage if !male), legend(label(1 male) label (2 female)3.2 回归分析3.2.1 相关分析correlate 相关系数,仅对所有变量同时取值时,不考虑缺失值pwcorr 相关系数,两两计算相关系数,考虑缺失值,可以加参数obs、sig(显著性)3.2.2 线性回归 regress depvar indepvars if in weight , optionsereturn listhelp regress postestimation3.2.3 假设检验 Wald testtest educ联合假设 test educ exper 有约束回归 cnsregconstraint 1 educ=.5cnsreg lwage educ exper, vce(robust)3.2.4 估计结果呈现estimate store 可以将e()中的回归结果保存起来。estimate table 可以将estimate store的结果以表格的形式呈现出来。estimate stats可以将样本容量和似然函数值统计出来。qui: reg lwage educ exper expersqest store m1est table m1qui: reg lwage educ exper expersq maleest store m2est table m1 m2est stats m1 m2est table m1 m2, b(%9.4f) se stats(N r2 F ll)一个更好的结果呈现命令:esttab,是用户写的非官方命令,用时需要先安装。esttab namelist using filename , options qui: reg lwage educ exper, vce(robust)estadd scalar pvalue=Ftail(e(df_r), e(df_m), e(F)est store m1qui: reg lwage educ exper male, vce(robust)estadd scalar pvalue=Ftail(e(df_r), e(df_m), e(F)est store m2esttab m1 m2 using result.rtf, replace b(%10.4f) scalars(F pvalue) mtitles star(* .10 * .05 * .01)esttab m1 m2, scalar(N r2 F ll) star(* .1 * .05 * .01)estimate drop 将内存中的保存的估计结果清除掉。estpost tabstat wage lwage age male educ exper, by(ownership) statistics(n mean sd) columns(statistics) listwiseeststo sum1esttab sum1, main(mean) aux(sd) nostar unstack noobs nonote nomtitle nonumber3.3 预测 predict type newvar if in , single_optionsxb 预测值residual残差,在使用预测命令时,最好加上条件if e(sample)以保证预测时所使用的样本和估计时使用的一样。比较命令predict y, xbpredict yhat if e(sample), xb 的不同边际效应(marginal effects)margins marginlist if in weight , response_options options用于求解边际影响,可以用于求解导数、弹性、半弹性等,特别适用非线性模型边际效应的计算。用于线性回归或非线性回归之后。老版本命令mfxmfxmfx, varlist(educ)mfx, eyex3.4 Stata 资源关键参考资料:U Users Guide 和 R regress, R regress postestimation, R estimates, R predict, R test。 用户自写程序estout。第4章 数据处理的组织方法1、可执行程序的编写与执行方法1:do文件do文件是一个文本文件,里面包含了相关的Stata命令。执行do文件时,Stata会逐条执行do文件里面的命令。do文件可以运用各种文字编辑器编辑,可以使用Windows自带的记事本,或Stata自带的文本编辑器(可以用doedit命令调用),最好不要使用Word等加格式的编辑器。比如一个简单的do文件:hello.do,内容如下:*Begin hello.dodisplay “Hello, world”exit*End hello.do在Stata命令输入窗口输入.do helloStata就会运行do文件里面的命令,其中带*的是注释语句,Stata会自动忽略,直接执行display “Hello, world”, 在Stata显示区将结果输出。方法2:交互式-program-命令另一种方式是在Stata命令窗口直接交互式的使用program命令定义程序,比如在命令窗口输入:.program hello1. display “Hello, world”2. end当我们想运行该程序时,直接在命令窗口输入.hello则Stata即可运行刚才输入的程序hello在实际使用中,我们很少直接使用交互式定义程序。另外,如果我们想修改该程序,比如我们在display “Hello, world”之后再加一条命令display “Hi, back”。你在命令窗口输入.program helloHello already definedr(110)Stata会返回错误,因为Stata会记住程序定义。如果你想重新定义一个程序,必须先利用命令program drop 把同名程序清除:.program drop gram hello1. display “Hello, world”2. display “Hi, back”3. end使用program命令定义程序的另一个问题是program不知道Stata内部命令的名称,如果你定义的程序名称和Stata内容命令同名,当你运行该程序时,实际将执行Stata的内容命令。比如你定义d程序.program d1. display “hello, world”2. end当执行上述命令时,实际运行的将是describe命令。第3个问题是program不检测语法,因而如果定义的program中命令有错误,在运行该程序时将出错。如果program定义的程序命令行很长,可以打开Stata的跟踪功能寻找可能发生的错误。.set trace on.set trace off 打开跟踪时不要忘记关掉,不然你将发现Stata的输出内容会很多。当修改比较复杂的程序时,可以利用 .set trace on /*打开跟踪*/.set more off /*将分屏显示关闭*/.log using junk, replace /*开始一个名为junk.smcl的日志文件*/.运行程序.log close /*关闭日志文件*/.set more on /*将分屏显示打开*/第4个问题是一个单个program文件包含不能超过3500行命令,并且在Stata/SE要小于135600个字符。第5个问题不能编辑修改程序。方法3:在do文件中使用program命令在do文件中使用program的好处是随时可以修改你的程序,比如我们建议一个hello.do文件*BEGIN hello.doprogram hellodisplay “Hello, world”endexit*END hello.do让我们运行一个该do文件,.do gram hellohello already definedr(110);end of do file出错了,为什么,因为刚才我们利用充互方式已经定义了一个同名的hello程序,因此要运行我们的do文件,必须先将内存中的同名程序清除,利用.program drop hello.do hello -我们输入的.program hello -Stata输入的1. display “Hello, world”2. end.exitend of do-file我们执行hello.do文件时,才把程序hello调入系统,但Stata并没有执行该程序。这时,我们在命令窗口直接输入程序名,Stata才会执行程序,如下:.helloHello, world我们也可以用run hello.do命令将do文件中的程序调入系统,run和do相同,但run不会将do文件中的命令行显示出来。方法4:do文件合并do文件可以做更多,交互式能做的,都可以放在do文件中,因而,我们可以将program程序定义,及程序执行全部放在同一个do文件中,比如*BEGIN hello.doprogram hellodisplay Hello, worldendhelloexit*END hello. Do用do hello执行该do文件,系统会提示错误,因为我们系统中刚才已经定义了hello程序,所以要先用program drop hello清除掉, 我们可以直接在do文件中将该条命令加入第1行,但如果系统中没有hello程序,运行清除命令时又会提示出错,我们可以在清除命令前加入capture,表示capture后面的命令出错时,Stata不会报错,也不会停下来,会直接执行后面的语句,但它会将错误保存下来。修改后的程序如下:*BEGIN hello.docapture program drop helloprogram hellodisplay Hello, worldendhelloexit*END hello. Do方法5:ado 文件ado文件实际上是以do文件形式写program程序方式的扩展,称为自执行文件,其运行类似于Stata内部命令。加到文件hello.do*BEGIN hello.doprogram hellodisplay “Hello, world”end*END hello.do直接将do文件保存为hello.ado,内容不变,即*BEGIN hello.adoprogram hellodisplay Hello, worldend*END hello.ado运行该ado文件时,先用program drop hello清除系统内的hello程序,然后在命令窗口直接输入.hello注意:在修改ado文件后,运行之前要用discard清除原ado文件,从而刷新ado文件,否则你可能发现修改很多次的ado文件运行结果一直没有改变。2、do文件的组织3、数据导入Stata数据格式文件,直接用use 可以打开,如果是利用电子表格文件转化来的文本文件,可以使用insheet using 命令导入。如果数据具有固定格式,需要用infile命令导入。假设我们要处理一个包含家庭信息及个人信息的数据,基本数据信息如下:06470 1 1 家庭信息 1 232 0 个人信息 2 230 1 个人信息07470 1 0 家庭信息1 240 1 个人信息. .假设家庭记录:第15列为家庭代码,第7列为“1”表示家庭信息,第9列为住房类型。 个人记录:第15列为个人代码,第7列为“2”表示个人信息,第89列为年龄,第11列为性别代码。现在我们想产生一个Stata数据,包含下列信息:家庭代码、住房类型、个人代码、年龄、性别代码。每个记录只包含一个个人信息,并且来自同一家庭的个人家庭信息相同。如果原始数据中个人记录中也有家庭代码信息,则可以分别将家庭信息和个人信息读入系统,建立两个数据文件,然后根据家庭代码多对一合并数据即可。但原始记录中个人记录中没有家庭代码,这里需要我们自己构造一个新的家庭代码。首先,根据数据结构,建立两个数据字典文件famliy.dct和person.dct,分别如下:*BEGIN family.dctdictionary using hier.raw longfamid%5f family id_column(7)byterectype%1frecord type_column(9)bytedwell%1fdwelling code*END family.dct*BEGIN person.dctdictionary using hier.raw longperid%5fperson id_column(7)byterectype%1frecord type_column(8)byteage%2fage(years)_column(11)bytesex%1fsex code*END person.dct首先检验一下字典是否能够正确的将数据导入系统clearinfile using family if rectype=1 in 1/100list in 1/5type hier.rawclearinfile using person if rectype=2 in 1/100list in 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论