资源描述:
《计量经济学stata上机教程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
2014计量经济学上机教程1Stata操作基础主要内容:1.Stata的特点与功能2.Stata的界面管理3.Stata的命令语法4.数据处理5.统计描述、制图6.log文档与do文档7.常用函数8.Stata的帮助系统与学习资源9.课后练习1.Stata的特点与功能ü将统计功能与计量分析完整地结合起来。不仅可以实现诸多统计分析方法,比如描述统计、假设检验、方差分析、主成分分析等,而且可以实现多种计量经济模型的估计和检验,包括经典单方程回归模型、方程组模型、微观数据模型(离散选择模型、计数模型、截断模型、归并模型等)、时间序列数据模型(ARMA、VAR、GARCH等)以及面板数据分析。ü强大的数据处理功能。ü精致的作图功能。ü丰富的网络资源。Stata12有各种版本,其中尤以SE(特殊版)最为常用。用户可以在命令栏中输入about命令查看所安装的版本信息。不同的版本对于样本容量、变量个数、矩阵阶数等有着不同的限制,用户可以通过以下命令了解和改变这些设定:memory显示目前存储空间querymemory查看目前实际设定的存储空间setmemory10m设定存储空间的大小setmatsize250设定最大矩阵阶数setmaxvar2500设定最大变量数(最小设定为2048)25 helplimits显示Stata的各种极限2.Stata的界面管理ü首次打开Stata,将会出现一个询问是否进行更新的对话框。用户可根据需要进行选择。一般而言,更新与否不会影响基本功能的实现。如果需要进行官方最新命令或内容的更新,可在command窗口输入updateall;更新完成后需要输入updateswap,才能确保以新文件覆盖旧文件。在Stata12版中,则不需要输入updateswap。ü主菜单介绍主菜单一般包括上述8个下拉式菜单。有时用户需要使用不同菜单下的多个命令,点击菜单的操作方式显得麻烦且不利于重复运算,因此本课程将不介绍这一操作方式。所有的数据处理和估计过程都采用命令窗口或者do文件执行方式。ü工具栏介绍工具栏是一些常用的快捷按钮,我们仅做一些必要的说明。lSave按钮:用于保存当前正在使用的,存在于内存中的Stata数据,这些数据以变量的形式存在,该菜单命令将这些变量保存在一个Stata电子表格中。一般情况下不建议使用这一按钮,因为你的数据可能来自于一个已经存在的数据文件,点击save按钮以后,Stata按照原来调用的地址和文件名进行保存,会覆盖原来的文件。在打开和保存之间,我们的操作可能已经修改过其中的数据,而这一过程是不可逆的,保存以后就找不到原始文件了。在实证研究中,往往需要我们保存最原始的数据和给出处理的过程。我们建议在命令窗口中输入save路径名文件名l25 Log按钮:用来开启一个log文件。Log文件可以保存在屏幕输出窗口中的结果,其具体操作我们将在下文介绍。l图形窗口前置:点击该按钮的前提条件是我们已经绘制了一个图形,或者通过命令调入了一个图形文件,否则该按钮将显示为灰色(非激活状态)。l数据编辑器:可以对数据进行录入、编码、修改等工作。l数据浏览器:在该窗口中只能进行数据查看,不能对数据进行编辑和修改。l程序终止:在执行程序的过程中,用户可能会忽然想到程序需要修改某些内容,或者由于编写上存在错误导致出现死循环,迟迟不能呢给出计算结果,这是需要点击该按钮。ü对界面偏好进行设定有时用户对于界面设定并不满意,可以通过菜单“Edit-->Preference-->GeneralPreference”进行选择,包括数据编辑器、do文件编辑器、图形编辑器等的风格都可以设定。设定完可以保存“Edit-->Preference-->Save...-->New...任意输入一个名称,如myprefs”,也可以通过在命令窗口中输入:windowmanageprefssavemyprefs实现。更多的信息,可以在命令窗口键入helpwindowmanage进行了解。üCommand窗口Stata有三种命令执行方式(1)下拉菜单实现。这种操作方式需要不断地下拉菜单,执行起来相对较慢,而且菜单中仅包含一些经常性的命令,不能涵盖所有命令,特别是一些外部命令。(2)通过Command窗口实现。(3)Do文档实现。命令窗口方式较为直接迅速,但要求用户必须熟悉各种命令语言,而且每次只能执行一个命令。使用时,用户只需要在窗口中输入想要执行的命令即可。例如输入:sysuseauto回车键之后,Stata系统自带的数据auto.dta将被调出。üReview窗口历史命令窗口显示以前执行过的命令。在历史命令窗口中双击命令项可重复运行该命令。如果我们需要显示过去执行的多个命令,则可以在命令窗口中输入:#review4则Stata通过输出窗口显示当前命令之前执行过的4条命令。每次键入命令较为烦琐,如果用户的新命令与历史命令相同或相似,只需将历史命令稍作修改即可,此时可以点击该历史命令,该命令会显示在命令窗口中,我们进行修改后按回车键就可以执行新命令。找到历史命令的另一方法是用鼠标点击命令窗口后,用向上翻页键寻找前面执行过的命令。25 üVariables窗口变量列表窗口显示当前调入内存数据的所有变量名称、标签、变量类型和存储格式。如果没有定义变量名,则Stata自动显示为v1,v2,……;如果没有定义标签,则不显示标签。在编辑Stata命令时,我们往往需要调用某些变量,此时可以用鼠标双击相应的变量名称,则该名称会自动显现在窗口命令中。这种键入变量方式,可以避免手动输入时的拼写错误。üResults窗口屏幕输出窗口显示命令的执行结果。在Stata11和12版本中,结果输出窗口经常对于中文显示为乱码。为使其支持中文显示,需要修改界面设定:点击Edit-->Preference-->GeneralPreferenceResultsColor-->选择"Classic"üDo文件编辑窗口(点击链接至后文具体介绍)Do文件命令执行方式是Stata的第三种方式,这也是大多数学术研究人员采用的命令执行方式。该方式具有以下优点:第一,通过批量运行程序避免了菜单命令和命令窗口只能一次运行一个命令的局限,有助于处理大规模数据以及复杂的估计检验;第二,Do文件可以直接保存执行过的命令,方便检查和纠错,而且一旦需要类似的运算,可以直接从保存的命令文件中粘贴过来进行修改,避免重复劳动。自Stata11发布后,其do-files编辑器具有了语法高亮显示、结构代码折叠、书签设定等功能,而且,对于书写大型do-files的用户而言,命令的行数也不再受到任何限制。对于中文用户而言,只需稍作调整,即可获得很好的显示效果。打开Do文件编辑窗口有两种方式:第一种是在工具栏中点击(NewDo-fileEditor);第二种是直接在命令窗口中输入并运行命令doedit。3.Stata的命令语法Stata所有的命令语句遵循共同的语法格式:[byvarlist:]command[varlist][=exp][ifexp][inrange][weight][usingfilename][,options]其中,方括号[]表示可选项,command为命令函数,varlist为变量,[ifexp][inrange]用于设定变量或观测值的范围,[weight]设定观测值的权重,[usingfilename]表示使用的数据文件,options表示命令的选项,依具体命令而不同。[byvarlist:]表示对varlist(分类变量)中的每一类分别执行命令command。例如,计算基本统计指标的命令summarize的格式为[byvarlist:]summarize[varlist][if][in][weight][,options]25 byarea:summarizeincomeconsumeifincome<8000,detailüvarlist在Stata的语法中,varlist表示一个或多个变量,varname表示单个变量,newvarlist表示新变量。l已存在的变量对于数据中存在的变量,允许的表示形式包括*、?和-。其中,*表示任意字符,?表示一个字符,-表示两个变量之间的所有变量。例如,数据文件中共有10个变量var1,var2,……,var10,则var*表示前面含有var的所有变量;var?表示前面为var且后面只有一个字符的变量,即var1,var2,……,var9;var1-var6表示var1,var2,……,var6。l新变量生成新变量时,变量名称不能简化。如果变量具有相同的前缀并且都以数字结尾,可以用-表示。比如输入新变量v1、v2、v3、v4,可以键入inputv1-v4endl时间序列变量时间序列变量可以带有运算符,包括运算符含义例子1例子2L#.xx的#阶滞后L3.x=xt-3一阶滞后可直接写为L.xF#.xx的#阶超前F3.x=xt+3一阶超前可直接写为F.xD#.xx的#阶差分D2.x=(xt-xt-1)-(xt-1-xt-2)一阶差分可直接写为D.xS#.xx的#阶季节差分S12.x=xt-xt-12一阶季节差分可直接写为S.x上述运算符不区分大小写,可以重复,也可以进行各种组合。比如,L3.x也可以表述为LLL.x、LL2.x、L2L.x。#可以是单个数,也可以是数列(numlist),表示对同一变量的多次运算。比如L(1/3).x表示L.x、L2.x和L3.x。x可以是单个变量,也可以是多个变量,比如L2.(GDPCPI)。ü分类操作byvarlist表示按照by后面的变量进行分别操作。例如对于数据集auto.dta,我们想知道国产车和进口车的价格和重量的统计描述。sysuseauto,clear//从系统导入相应的数据集byforeign:sumpriceweightü赋值及运算=exp25 主要用于给新变量赋值或者替换原变量的值。例如,在原变量price的基础上生成一个新的变量price2,生成规则是原来的价格上涨15元。generateprice2=price+15listpriceprice2又如,直接将新生成的变量price2值减去15元,使得与price相同。replaceprice2=price2-15listpriceprice2ü条件表达式ifexp例1:查看国产车的品牌和价格两个变量的数据listmakepriceifforeign==0例2:查看价格超过1万元的进口车listmakepriceifforeign==1&price>10000例3:查看价格超过1万元的车或者是进口车listmakepriceifforeign==1|price>10000例4:分类查看国产和进口中超过1万元的车byforeign:listmakepriceifprice>10000ü其他选项以后具体介绍4.数据处理ü文件目录cdH:教学本科-计量经济学上机Stata_basics//改变工作路径pwd显示工作路径dir显示工作路经中的文件sysdirstata官方文件的路径clear清空内存中的变量及标签clearall清空内存(包括变量、标签、矩阵、程序等等)exit退出stataü数据录入用户可以在Stata的数据编辑器中录入数据,也可以通过数据导入的方法直接从其他数据文件中导入数据。edit打开数据编辑窗口preserve/restore暂存、恢复数据input[varliat]从键盘输入数据l使用已保存的Stata数据。25 usewage1.dta,clearsysuseauto,clearl手动录入(极少使用)。命令格式:input[type]varname例如:inputstr10nameage“Mike”22“Bruce”21end更为简便的方法是打开数据编辑器,直接录入数据。l从其他文件复制和粘贴。主要是指从txt和excel文档中粘贴数据,要求数据是-Tab-键分隔的。补充说明:需要下载一个外部命令shellout,用于在stata显示各种文档,只需在命令窗口输入sscinstalloutreg2则可以下载outreg2命令包,其中包括shellout。例如:shelloutnerlove.txtshelloutEx32.xls如何知道是否为Tab键分隔的?typenerlove.txttypenerlove.txt,showtabsl使用命令从其他文件导入。insheet从外部电子表格引进数据(以逗号或tab分隔字段)infile从外部引进数据(可用于以空格分隔字段的文件)例子:1.打开数据表“hs0.csv”insheetusinghs0.csv,clearinsheetusing“E:datahs0.csv”,clear2.打开外部数据“canada.raw”typecanada.raw发现该数据包含字符变量,以下几种方式则是错误的导入方式infileusingd2.txt,clearinfilev1-v5usingcanada.raw,clear//此时不能导入字符变量正确方式应该是infilestr21v1v2v3v4v5usingcanada.raw,clearü修改变量名和标签25 变量的名称由英文字母、数字或_组成,不能超过32个;区分大小写字母;首个元素必须是字母或_,而不能是数字。一般不建议以_开头,因为Stata的很多输出结果或内部变量也是以_开头。l设定数据集标签labeldata“string”设定数据标签l设定普通变量标签labelvariable“string”设定变量标签rename更改变量名l设定类别变量取值的文字标签第一步:设定数值标签labeldefinelbname#“string”#“string”第二步:将数值标签映射到变量中labelvaluesvarnamelbname例子1:renamev1placelabelvariableplace"Placename"renamev2poplabelvariablepop"Populationin1000s,1995"renamev3unemplabelvariableunemp"%15+populationumemployed,1995"renamev4mlifelabelvariablemlife"femalelifeexpectancyyears"renamev5flifelabelvariableflife"femalelifeexpectancyyears"savecanada.dta,replace//保存数据文件usefilename[,clearnolabel]打开.dta数据文件use[varlist][if][in]usingfilename[,clearnolabel]useplacepopusingcanada,clear//打开数据文件的一个子集例子2:sysuseauto,clearbrowselabeldefinerepair1"好"2"较好"3"中"4"较差"5"差"labelvaluesrep78repairbrowseü不同变量类型的转换l数值变量数值变量所有的观测值都是以数值形式储存,包括符号(+或-)、整数部分、小数部分、e(或E)以及指数部分,比如-5.2、.5、5.2e+2。25 数值以5种datatype储存:(更为详细的说明参考help文档)l字符变量字符是由一串字母或其它符号构成的,通常以双引号括起来,双引号本身不作为字符的内容。字符型变量的储存格式为str#,#表示字符的最大长度,而不是实际长度。在Stata的SE版本中,字符型的最长长度为244个,字符型变量在数据编辑器中显示为红色字体。字符可以用来识别国家、地区、厂商等内容。需要注意的是,字符区分大小写。字符变量可以用作数据排序(sort)和数据合并(merge)的指示变量,但不能直接进行统计分析。l改变变量存储类型sysuseauto,clearlistgear_ratioin1/5describegear_ratiorecastintgear_ratio,forcedescribegear_ratiolistgear_ratioin1/5compress//自动精简资料的存储格式l定义变量的显示格式(详细参考helpformat)*str18文字型变量,每个观察值占据18个空格*%-18s靠左列印于屏幕上;若%18s,则靠右列印;*若%~18s,则居中列印*%8.0g在`8.0'的原则下,以尽量多的有效位数列出*%6.2f6是总宽度,包括符号和小数点,2表示小数点后的位数例子:listpricegearin1/5formatprice%6.1fformatgear%6.4flistpricegearin1/5l数值变量与字符变量的相互转换当字符包含分类信息时,比如25 性别“female”和“male”,可以用encode和decode两个命令实现两类变量之间的转换。将字符变量转换为数值变量,其命令格式为:encodevarname[if][in],generate(newvar)[label(name)noextend]其中,generate(newvar)表示新生成的数值变量。Label(name)表示为数值变量添加标签,如果name已存在,则将其直接添加到newvar;如果name不存在,则首先创建然后再添加到newvar。如果newvar的部分数值没有包含在标签中,则默认添加任意数值到标签中,选项noextend表示出现这种情况不再运行该命令。将数值变量转换为字符变量,其命令格式为:decodevarname[if][in],generate(newvar)[maxlength(#)]新变量newvar的字符即varname的标签;maxlength设定字符的最大长度。例子:female为数值变量,没有数值标签。usewage1,clearlabeldefinesexlabel0"male"1"female"//建立数值标签labelvaluesfemalesexlabel//将数值标签映射到变量中decodefemale,generate(sex)//将female转换为字符变量sexencodesex,generate(gend)label(sexlabel)//将sex转换为数值变量gendlistfemalegendin1/20ü缺失值Stata用原点(.)表示缺失值。也可以是如下方式:.a、.b等。用户可以根据自己的需要定义不同类型的缺失值,比如为了区分不同原因造成的缺失值。Stata对单个变量执行命令时,忽略其缺失值。对多个变量执行统计命令时,如果其中某个变量包含缺失值,Stata忽略这个观测点上的所有变量的观测值。sysuseauto,clearmvencode_all,mv(999)//将所有的缺失值转化为数值999mvdecode_all,mv(999)//将所有的999转化为缺失值listrep78ifrep78==.//列出缺失值ü对变量和观测值的操作sort按一个或多个变量的数据由小到大排序gsort按一个或多个变量的数据由大到小或由小到大排序order移动一个或多个变量的位置aorder移动一个或多个变量的位置并按它们的名称排序move移动一个变量的位置generate生成新变量25 replace取代旧变量egen用某些函数生成变量drop删除变量或者观察值keep保留变量或观察值_n样本序号变量_N样本容量scalar生成新标量scalarlist显示当前存储的所有标量的内容scalardrop删除当前存储的标量display显示标量内容bysortvarlist1[(varlist2)][,rc0]:stata_cmd将样本按照类别变量由小到大排序,根据该类别变量将样本分组,再执行stata指令。byvarlist1[(varlist2)][,sortrc0]:stata_cmd样本以按照类别变量由小到大排序,现根据该类别变量将样本分组,再执行stata指令。例子:useCanada,cleargenerategap=flife-mlifelabelvariablegap“female-malegaplifeexpectancy”listplaceflifemlifegapformatgap%4.1flistreplacepop=pop*1000generatetype=1replacetype=2ifplace==”Yukon”|place==”NorthwestTerritories”replacetype=3ifplace==”Canada”listlabelvariabletype”Province,territoryornation”labelvaluestypetypelbllabeldefinetypelbl1”Province”2”Territory”3”Nation”listegenmgap=mean(gap)egenrmgap=rmean(gap)listmgaprmgapdropmgaprmgapgenerategpop=(pop-pop[_n-1])/pop[_n-1]listgpopgeneratelpop=(pop[_n]-pop[_N])/pop[_N]listlpop25 ü设定数据的子集commandinrange例子:listin10(anycommandmaybesubstitutedforlist)listin1/20listin20/l(lowercaseelatendofrange)listinf/10(fmeansthesameas1)listin-4/l(lowercaseelatendofrange)commandifexpComparisonoperators比较运算符>>===(等于)<<=!=(不等于)Logicaloperators逻辑运算符&(且)!(否)|(或)~(否)例子:listifunemp>15dropin6dropin10/12dropifplace==”canada”|pop<100keepplacepopunempsavecanada05.统计描述、制图与输出结果ü描述统计ldescribe:描述数据文件的基本结构。llist:列出每个观察值lsummarize:概括了观测值个数、平均值、标准差、最大值和最小值五个指标。如果设定detail选项,则还给出方差、偏度、峰度和各个分位数等指标。usecanada,clearlistdescribesummarizeformatpop%6.2f25 sumpop,formatsumpopunemp,detaillcodebook:计算变量的基本统计量。当一个变量中的非重复值小于9个时,Stata便会视此变量为类别变量,并列表统计。sysuseauto,clearcodebookpriceweightcodebookrep78linspec:计算变量的基本统计量。进一步绘制出直方图,以便对样本的分布有更直观的了解。inspectpriceweightlengthltabstat:表格形式的统计描述,其选项包括:by(varname):对变量varname的所有类别分别进行描述统计;statistics(statname):设定需要的统计量,statname包括mean、median、count(观测值个数)、sum、max、min等;columns(variables|statistics):variables表示列按变量排序,statistics表示列按统计量排序;casewise:表示根据共同的样本区间计算统计指标。例1:利用世界各国2004年的GDP、教育等数据,计算各国及低、中、高收入国家的GDP和教育的均值、中位数、标准差、偏度和峰度。usehdi,cleartabstatEducGDP,statistics(meanmediansdskewnesskurtosis)///by(LMH_income)format(%11.2f)tabstatEducGDP,statistics(meanmediansdskewnesskurtosis)///by(LMH_income)format(%11.2f)col(s)例2:根据某工厂前3个月5次采购原材料的数量和单价,计算其平均价格。usewmean,cleartabstatprice[fweight=quant],stats(mean)ltabulate:分类变量的统计描述。分类变量只代表观测值所属的类别,不代表其他含义。因此,对分类变量的描述统计是观察其不同类别的频数或百分数。Ø单个分类变量的汇总:usehdi,cleartabulateLMH_income,plotØ两个分类变量的列联表:列联表是考察两个分类变量相关关系的方法,给出了从属于两个分类变量不同类别的观测值频数以及相关测度指标。设两个分类变量分别有r、c个类别,则列联表共有r×c个单元格。tabulateLMH_incomeLMH_hdi25 tabulateLMH_incomeLMH_hdi,summarize(GDP)meanstableLMH_incomeLMH_hdi,contents(meanGDP)//自行查阅tablelcumul:经验分布函数是对变量累积分布函数的估计。cumulGDP,generate(cdf_gdp)scattercdf_gdpGDPü制图在Stata中,用户几乎可以任意控制图形的形式、大小、颜色等各个方面,绘制的图形可以非常精细。与此同时,用户需要设定非常多的选项,因此会感觉有些烦琐。为此,我们此处介绍画图的一些基本指令,同时可以在简单生成的图形上进行修改和调整以达到更好的效果。大家应该在应用中摸索总结更精美的制图方案。l基本结构[gragh][twoway]plot[if][in][,twoway_options]其中,plot可以有以下形式(plottype1varlist1spec1[,option1])(plottype2varlist2spec2[,option2])…或者plottype1varlist1spec1[,option1]||plottype2varlist2spec2[,option2]||…可见,一个总图中可以包含多个单元图,总图具有自己的选项,适用于所有单元图;各个单元图也有自己的选项,适用于该单元图。例子:usefrontier,cleargenlny=ln(valueadd)twoway(scatterlnylnk)(lfitlnylnk),///title("图1:产出与资本关系图",box)///xtitle("资本",margin(medsmall))///ytitle("产出")///ylabel(3(3)9)ymtick(##5)///legend(label(1"散点")label(2"拟合值"))///note("资料来源:Greene教材,frontier.dta")///caption("说明:讲义例子")///saving(mypig.gph,replace)生成图形之后,从File下拉菜单中选择StartGraghEditior或者直接点击图形编辑器的图标,图形便呈现如下的可编辑状态。用户可以通过所提示的有关图形大小、图例、标题、文字等进行调整。25 l基本图形Ø散点图twowayscattervarlist[if][in][weight][,options]varlist的形式是:y1[y2…]x,表示横轴为x变量,而纵轴为y1、y2…Ø连线图twowaylinevarlist[if][in][weight][,options]twowayconnectvarlist[if][in][weight][,options]Ø阴影图twowayareayvarxvart[if][in][weight][,options]Ø柱状、钉状、针状、点状只需将上述area分别改为bar、spike、dropline、dot。Ø直方图histogramvarname[if][in][weight][,[continuous_opts|discrete_opts]options]Ø密度函数图kdensityvarname[if][in][weight][,options]Ø区间作图twowaycommandy1vary2varxvar[if][in][,verticalhorizontaloptions]其中,vertical和horizontal分别表示垂直和水平区间。Command包括25 相类似地,还有配对作图和拟合作图,具体参考graphtwoway。Ø函数作图twowayfunction[[y]=]f(x)[if][in][weight][,options]例子:twoway(functiony=sin(x),range(-1010)lw(*1.5))///(functiony=cos(x),range(-1010)lw(*2.0)),///ytick(-2(0.5)2)ylabel(,angle(0))///yline(0,lcolor(black*0.5)lpattern(dash))scheme(s1mono)l图形的保存与导出(具体查阅helpgraphsave和graphexport)图形文件的三种保存方式第一种,点击图形编辑器中的保存键,并输入图形文件名称即可;第二种,graphsavefigname.gph,replace第三种,saving(figname.gph,replace)图形导出命令方式graphexportfigname.wmf,replacegraphexport"D:figname.wmf",replace除了wmf格式,还有ps、eps、emf、png、tif等常用格式。对于png和tif格式,还可以调整其分辨率,加入选项width()和height()即可。ü分析结果的呈现与导出l回归结果的制表显示estimatestable是官方命令,但是其功能较为局限。实际研究中,外部命令esttab更为常用。sysuseauto,clearquietlyregresspriceweightmpgestimatesstoremodel1quietlyregresspriceweightmpgforeign25 estimatesstoremodel2esttabmodel1model2esttabmodel1model2,ar2compressnogapstar(*0.1**0.05***0.01)esttabmodel1model2,ar2compressnogapstar(*0.1**0.05***0.01)///b(%6.3f)bracketsplabelvarprice“价格”labelvarweight“重量”esttabmodel1model2,label//显示变量的label,而不是变量名称esttabmodel1model2usingresult1.html,replace//输出为网页格式esttabmodel1model2usingresult1.csv,replace//输出为excel格式esttabmodel1model2usingresult1.csv,replacecompressnogapnonotes///addnotes("***1%**5%*10%")//修正之后更好看llogout可以将各种表格结果输出到各种格式的文档logout是外部命令,需要下载,输入sscinstalllogout例1:输出统计描述usehdi,clearlogout,save(result2)wordreplace:///tabstatCapital_GDPEducGDPLMH_income,///stats(meansdminp50max)c(s)f(%6.2f)logout,save(result2)excelreplace:///tabstatCapital_GDPEducGDPLMH_income,///stats(meansdminp50max)c(s)f(%6.2f)logout,save(result2)wordreplace:///pwcorrCapital_GDPEducGDPLMH_income例2:输出回归结果sysuseauto,clearquietlyregresspriceweightmpgestimatesstoremodel1quietlyregresspriceweightmpgforeignestimatesstoremodel2logout,save(result3)wordreplacefix(3):///esttabmodel1,model2(模型1模型2)b(%6.3f)se(%6.2f)///star(*0.1**0.05***0.01)scalar(r2r2_aNF)compressnogap//说明:fix(#)选项决定了转换的敏感度,此处fix(3)效果较好,也可以输出为excel格式。建议先输出为excel格式,再粘贴至word格式,方便调整表格格式。l还有xml_tab以及outreg2等命令可以使用,建议自己下载外部命令并查阅help文档自行掌握,或者熟悉上述两种即可。这些命令各有优劣,需要在实践中找到适合自己的。25 6.log文档与do文档ülog文件llog文件用于记录所有的操作命令和操作结果l如果在进行新的程序操作之前,Stata还运行着某个以前的log文件,则要先关掉该log文件,因此先输入caplogclose加“cap”的原因:若原来没有log文件在运行,则运行“logclose”命令会产生错误信息,Stata也会因此中断do文件的运行;“cap”可以阻止这种现象的产生。l开启新log文件的命令是loguse“路径logname.log”,replace“replace”表示如果在该路径下已经存在一个同名的log文件,则新建立的log文件将其覆盖;如果想在已经存在的log文件中继续记录,则将“replace”改为“append”。log//查询当前log文件的工作状态logoff//暂停运行log文件若想查看log文件的记录内容,可以在view命令之后加上log文件的路径和文件名。例子:sysuseauto,clearcaplogcloselogusingmylog1.log,textreplacesumpriceweightlengthlogcloseregresspriceweightlengthlogshelloutmylog1.loglogusingmylog1.log,appendregresspriceweightlengthlogoffviewmylog1.logüdo文档ldo文档是Stata命令的集合,是上述执行命令的第三种方式,也是研究人员最为常用的工具。在本课程的后续学习中,将充分利用do进行实验课程的教学,在没有必要的情况下,将尽力少使用word文档,而是直接在do文档中进行内容阐述。ldo文档的执行执行部分命令时,选中需要执行的命令,点击doedit25 窗口中第二行倒数第一个图标,或者使用快捷键:Ctrl+D执行全部命令时,在命令窗口输入dodename.dol注释语句Ø/*……*/可跨行使用的注释语句,其中的内容均不执行。Ø//……在行中某处出现,从“//”开始(“//”之前要空一格)到该行末端的内容为注释,不执行;若在行的最前端使用,则表示整行文字为注释,不执行。Ø*……在行的最前端使用,表示整行文字为注释,不执行。l断行方法:每一行的语句不要太长,不用拖动下方导引条即可阅读。第一种:///sysuseauto,cleartwoway(scatterpriceweight)///(lfitpriceweight)第二种/**/twoway(scatterpriceweight)/**/(lfitpriceweight)第三种断行方式:#delimit命令#delimit;twoway(scatterpricewei)(lfitpricewei),title("散点图和线性拟合图");#delimitcr7.常用函数/*Stata提供的函数包括数学函数、统计函数、字符串函数和特殊函数。这里介绍几个常用的数学函数,统计函数和特殊函数。函数必须与generate、replace、display或egen等指令结合起来使用。*/ü数学函数abs(x)//绝对值函数sqrt(x)//平方根函数exp(x)//指数函数In(x),1og(x)//自然对数函数round(x)//四舍五入log10(x)//常用对数函数(以10为底)lngamma(x)//整数x的函数之对数ln[(x)]digamma(x)//ln[(x)]的1阶导数dln[(x)]/dxtrigamma(x)//ln[(x)]的2阶导数d2ln[(x)]/dx225 ü统计函数normal(x)//标准正态分布的累积分布函数值,即invnorm(p)//标准正态分布的分位数,即累积分布函数的反函数normalden(z)//标准正态分布N(0,1)的密度函数值,即normalden(z,σ)/*正态分布的密度函数normden(z,1)=normden(z),normden(z,))=normden(z)/。*/normalden(z,m,σ)/*正态分布的密度函数,normden(z,m,))=normden((z-m)/)/。*/e.g.displaynormal(1.64485)//0.95displayinvnorm(0.95)//1.64485displaynormalden(1.95)/*0.05959471,标准正态分布的密度函数。*/displaynormalden(1.95,10)/*0.005959471,均值为0,标准差为10的正态分布的密度函数。*/displaynormalden(29.5,10,10)//0.005959471ttail(df,t)//自由度为df的t分布的生存函数,即累积分布函数的右端invttail(df,p)//自由度为df的t分布的上分位数函数e.g.displayttail(8,1.96)//0.042829displayinvttail(8,0.042829)//1.96displayinvttail(8,1-0.042829)//-1.96displayinvttail(8,0.021415)//2.405displayttail(8,2.405)//0.02142displayttail(8,-2.405)/0.97858F(dfl,df2,f)//自由度为dfl,df2的F分布的累积分布函数Ftail(dfl,df2,f)/*自由度为dfl、df2的F分布的生存函数,Ftail(dfl,df2,f)=1-F(dfl,df2,f)。*/invF(dfl,df2,p)/*自由度为dfl、df2的F分布的分位数函数,即F(dfl,df2,f)的反函数。*/invFtail(dfi,df2,p)/*自由度为dfl、df2的F分布的上分位数函数,即Ftail(dfl,df2,f)的反函数。*/e.g.diF(10,5,4.74)//0.9501042125 diinvF(10,5,0.95)//4.7350631diFtail(10,5,4.74)//0.04989579diinvFtail(10,5,0.05)//4.7350631chi2(df,x)//自由度为df的分布的累积分布函数chi2tail(df,x)/*自由度为df的分布的生存函数,chi2tail(df,x)=1-chi2(df,x)*/invchi2(df,p)/*自由度为df的分布的分位数函数,chi2(df,x)的反函数。*/invchi2tail(df,p)//自由度为df的分布的上分位数函数e.g.dichi2(10,16.8)//0.92109172diinvchi2(10,0.921091)//16.799926dichi2tail(10,16.8)//0.07890728diinvchi2tail(10,0.07891)//16.79992uniform()//产生(0,1)内的均匀分布的伪随机数。invnormal(uniform())/*产生均值为0、标准差为1的标准正态分布随机数,+×invnorm(uniform())产生均值为标准差为。*/ü特殊函数sign(x)//符号函数sign(x)。x>0时取1,x<0时取-1,x=0时取0。int(x)/*取整函数。去掉x的小数部分,得到整数。int(x+0.5)是对x四舍五入取整,int(x+sign(x)/2)产生与x最近的一个整数。*/sum(x)//累加函数,缺失值(missingvalue)当0处理。max(x1,x2,,xn)/*最大值函数。获得x1,x2,,xn中的最大值,忽略缺失值。*/min(x1,x2,,xn)/*最小值函数。获得x1,x2,,xn中的最小值,忽略缺失值。*/group(#)/*分组函数。将数据分成大小近似相等的个组。分别给予组编号1,,(当的值大于观测个数时,不连续)。其中为向上取整函数。比如#=4.1,则将数据分为5组。通常,的值需比观测的个数小。需与generate结合使用*/e.g.setobs10ga=group(2)//将10个观测平均分为2组,每组5个观测。25 gea1=group(20)//将10个观测平均为20组。此时有些组没有观测。group(varlist)/*分组函数。根据varlist的变量,生成分组变量。需与egen结合使用。*/e.g.egenagegrp=group(age)/*将相同的age分为一组,并按age从小到大的顺序对各组赋值,分别为1、2。*/float(x)//浮点转换函数。将x转换成浮点表示法。8.Stata的帮助系统与学习资源ü常用的帮助命令helpregress//用于官方命令searchunitroot,nethsearch"fixedeffect"//搜索help文档中的内容findittreatmenteffect//从网络上搜索,类似于searchtreatmenteffect,allü外部命令的下载l通过模糊搜索下载通过findit命令搜索关键词,然后点击进行下载。例如finditesttab可以看到:点击其中的st0085_1,可以看到25 按照提示点击“clickheretoinstall”即可以下载该外部命令。l通过ssc下载ssc是StatisticalSoftwareComponents的缩写,是BostonCollegeArchive所提供的相关软件包和文件,网址是http://www.repec.org。有大量的Stata外部命令来自于ssc,常用的命令有:sscwhatsnewsscdescribeb//列示以-b-开头的所有命令sscdescribexsscdesesttabsscdesivreg2sscinstallivreg2,replacel查询已安装的外部命令adoado,find(ivreg2)mypkgmypkgxt*whichivreg2l外部命令的更新adoupdateadoupdateivreg2,update25 ü主要网络资源Statawebsite:http://www.Stata.comSataresources:http://www.Stata.com/links/resources1.htmlStatajournal:http://www.Stata.com/support/faqs/res/sj.htmlStatalibrary:http://www.ats.ucla.edu/stat/Stata/library/Statalistarchive:http://www.hsph.harvard.edu/cgi-bin/lwgate/STATALIST/archives/StataFAQs:http://www.Stata.com/support/faqs/StatastatisticsFAQs:http://www.Stata.com/support/faqs/stat/Statalistserver:http://www.Stata.com/support/Statalist/Statadiscussionlist:Statalist@hsphsun2.harvard.edu9.课后练习练习题11.导入class.csv数据集;2.将v1-v13分别命名为“学号、姓名、培养类别、学院、系所、年级、专业、班级、校区、选课成功标志、教学班号、学年度、学期”各个中文名的拼音首字母,例如“学号”为“xh”,“选课成功标志”为“xkcgbz”。3.为上述变量添加标签,标签即为上述中文名称;4.将所有缺失值转化为数据999;5.删去存在缺失值的变量。练习题21.请从“中经网统计数据库”(详见学院图书馆数据库)下载你所在省份自1980年-2010年的以下数据:国内生产总值、人口数、居民消费价格指数,将其转化为dta数据文件,命名为你的学号;2.确认数据中包含年度、国内生产总值、人口数、居民消费价格指数四个变量,并将其分别命名为year、gdp、pop、cpi;3.生产国内生产总值的年度增长率序列,命名为gdp_gr;4.将cpi数据减去100,并替换原来的值;25 5.用gdp_gr减去上述新生成的cpi数据,得到一个近似的实际GDP增长率数据,记为gdp_gr2;6.以year为横轴,gdp_gr2为纵轴,画出两个变量的折线图,图的标题为“1980-2010年某省实际GDP增长率变化图”;7.计算人口数的年度均值和标准差。25