Stata简明讲义王非中国经济研究中心ebwf@163.comStata简明讲义中国经济研究中心王非〇、写在前面的话关于学习Stata的意义,大家只需知道:目前,Stata是计量经济学、特别是微观计量经济学的主流软件。因此,Stata很重要、很有用,而大家也会在使用Stata的过程中慢慢体会到它的特点。本讲义取名为“Stata简明讲义”,意在突出“简”和“明”两个字。虽然讲义长达五十多页,但相比Stata的完全手册来说,还不及九牛之一毛,故为“简”。实际上,完全手册中的很多内容都鲜有人(特别是计量经济学者)问津,而本讲义列出的内容则是大家经常用到的操作;所以,“简”也有“简”的好处。即便如此,掌握这份讲义也并非易事。所谓“明”,是明晰的意思。本讲义本着“手把手教”的精神,力求把每项操作都说得具体明晰,以方便初学者(特别是没有程序操作经历的初学者)尽快上手。至于本讲义在“简明”上做得怎么样,还需要各位读者来评判。中心的一位学长邹传伟,曾经写过一份“Stata介绍”,在网上可以下载。那份讲义比较全面,但不够具体明晰。本讲义参照那份讲义,在框架上查漏补缺,并进一步地明晰化。本讲义第二部分的“do文件”和第七部分的“残差分析”的相关内容均来自于中心的沈艳老师的相关讲义,而沈老师对于本讲义的成形给予了细致的指导。本讲义附带了一些数据文件,其中“WAGE1.dta”和“WAGEPRC.dta”均来自Wooldridge的中级计量教材的数据集,而其他数据则为作者自己的杜撰。尽管从别人那里拿来了许多好东西,但本讲义的任何错误仍源于作者自己的疏忽。本讲义是这样安排的:第一部分讲Stata的界面,第二部分讲do文件,第三部分讲怎样把数据导入Stata,第四部分专门讲help和search命令以及帮助文件的阅读方法,第五部分讲数据的描述及管理,第六部分讲如何画图,第七部分讲初步的回归分析。1Stata简明讲义中国经济研究中心王非祝各位学习愉快。一、Stata长什么样?首先,让我们看看Stata长什么样。我们以Stata9.1(以下简称Stata)为例。点击可执行文件“wstata.exe”,即可看到Stata的基本界面:中间黑色背景的区域就是Stata的基本显示界面,数据分析的结果一般显示在这一区域中。在我看来,黑色的背景有助于减缓视觉疲劳。如果你不喜欢这种显示方式,可以把鼠标放在这一区域中,点击鼠标右键,进而设定自己喜欢的显示方式。围绕着黑色区域,有三个白色背景的框,左边两个,下边一个。左下角的框的标2Stata简明讲义中国经济研究中心王非题是“Variables”,这里会显示数据中所有变量的名称。下边的框的标题是“Command”,这里用来输入各种操作命令,命令操作的结果一般会显示在黑色区域中。左上角的框的标题是“Review”,这里会显示你曾经操作过的所有命令。在三个框的右上角,均有这样一个小图标:。点击它会使框隐藏起来,其效果类似于把QQ拖到屏幕的边上;再次点击会恢复原状。而点击右上角另外一个图标,会把相应的框关掉;如果想再次打开,可以点击菜单栏的“Window”,并选择相应的框。黑色屏幕上方的菜单栏和图标栏,下文会逐步涉及。二、良好的习惯从do文件开始上文提到,Stata的Command框可以输入各种操作命令。实际上,绝大多数初学者(甚至很多长时间使用Stata的人)都只是通过Command框一条一条地输入命令,边走边看。这种做法的缺点在于:进行命令操作的时候具有盲目性,不易厘清自己将要做什么;而命令操作过后缺乏系统性,忘了自己曾经做过什么,而且别人也无法了解你的操作过程;另外,如果你想再次进行类似的操作,得重新输入曾经运行过的命令,比较繁琐。因此,大家昀好从一开始就养成一个良好的习惯:在进行任何程序操作之前,都要事先写好完整的操作计划书;这一操作计划书在Stata里叫做do文件,而Stata会自动运行do文件中计划好的所有操作。下面是一个do文件的一部分(选自沈艳老师的相关讲义),我们借此看一下do文件是个怎样的东西。3Stata简明讲义中国经济研究中心王非第一行是这个do文件的名称,do文件的后縀名是“do”。第二行是这个do文件的作用,即你要通过这份操作计划书做什么事情。这两行不是操作的内容,而是对操作的注释。在do文件中,注释的部分用“/*”和“*/”包裹起来。有编程经验的人都知道,注释在程序里非常重要。从上面的do文件可以看出,注释不仅出现在开头,而且出现在每一段命令之前。注释虽然不直接参与程序的运行,但却可以帮助你清晰地规划将要做的事情,也可以帮助你在事后准确地回忆起曾经做过的事情,还可以帮助他人较快地读懂你的操作计划。一个好的注释必须简洁、清晰,能用短短几个词就准确地描述你要做的事情。接下来,是“setmoreoff”命令。在程序的运行过程中,如果显示结果很长(如一屏显示不完),屏幕下方就会出现“—more—”的标记;这时,Stata会暂停显示;只有按任意键,结果才能继续显示下去。而“setmoreoff”就是把“—more—”4Stata简明讲义中国经济研究中心王非标记去掉的命令;这样,do文件在运行的过程中就不会因为某项操作的显示结果太长而暂停运行。接下来,是“caplogclose”命令。要明白这条命令,得先明白什么是log文件。打个比方,开大会的时候,需要录像机全程录像,以备事后查用。同样,运行操作程序的时候,也需要全程记录所有的操作命令和操作结果,以备事后查用。log文件就是Stata中的录像带,用来忠实记录整个操作过程。如果准备拍新录像的时候,发现一盘旧录像带还在录像机里放着,那么就要先取出旧录像带,以便放入新录像带。同样,如果在进行新的程序操作之前,Stata还在运行着某个以前的log文件,那么就得先把这个log文件关掉,以便开启新的log文件进行记录。“logclose”就是关闭旧的log文件的命令。在“logclose”前面加“cap”的原因是:如果原来没有log文件在运行,那么运行“logclose”命令会产生错误信息,Stata也就会因此中止do文件的运行;而前面的“cap”可以阻止在“logclose”命令运行过程中的任何错误信息的出现,从而保证do文件的运行不会因此中止。接下来便是开启新的log文件的命令。“logusing”命令用来开启一个log文件,命令后面是log文件的路径和名称。值得强调的是,Stata命令中出现文件的路径和名称时,可以用双引号包裹起来,也可以不用。命令昀后“replace”的意思是:如果在那个路径下已经存在一个这样的文件,那么新开启的log文件把原文件完全覆盖;如果你想在已经存在的log文件后面继续记录,可以把“replace”换成“append”。log文件的操作还有其他常用命令。直接运行“log”命令可以查询当前log文件的工作状态;“logoff”命令可以暂停log文件的运行,就像把录像机暂时关掉;“logon”可以重新开始log文件的运行,就像重新开动录像机;如果想查看log文件记录的内容,可以在“view”命令后面加上log文件的路径和名称。此外,点击图标栏的图标,也可以对log文件进行一系列的操作。接下来就是导入数据、进行各种操作了。后文会逐步介绍相关的内容。那么,怎样写这样一个do文件呢?主要有两种方法:一、打开一个记事本文件,5Stata简明讲义中国经济研究中心王非直接在里面编辑,编辑好之后另存为后縀名为“do”的文件即可。二、用Stata自身附带的do文件的编辑器进行编辑。在Command框中输入“doed”,就可以打开do文件编辑器。如果想编辑已经存在的do文件,需要在“doed”后面加上do文件的路径和名称。另外,也可以直接点击Stata图标栏里的图标来编辑do文件。编辑do文件的过程中,别忘了点击编辑器图标栏上的图标来保存编辑的成果。如果用do文件编辑器编辑do文件,可以点击编辑器图标栏里的图标来试运行do文件(也可以运行“run”命令加do文件的路径和名称)。试运行只会反馈do文件中的错误,而不会显示do文件的运行结果,这便于对do文件的调试。当do文件顺利通过试运行之后,便可以点击编辑器图标栏里的来正式运行(也可以运行“do”命令加do文件的路径和名称)。正式运行会显示所有的运行结果。此外,还可以通过Stata菜单栏中的“FileÆDo…”来运行一个do文件。上面所讲的内容恐怕不易在短时间内被Stata的初学者(尤其是没有程序操作经历的初学者)完全接受。但是大家应该试着从一开始就养成写do文件的好习惯,并在实践的过程中慢慢体会do文件的好处及其所涉及的各种操作。三、怎样把数据导入Stata?想炒菜,得先把菜倒进锅里;同样,用Stata分析数据,得先把数据导入Stata。Stata默认的数据文件是后縀名为“dta”的文件。讲义附带的一个数据文件是“WAGE1.dta”,它可以直接用Stata打开。打开的方式无非有以下几种:1、运行“use”命令加数据的路径和名称。2、像上文中列出的do文件那样,先用“cd”命令进入数据所在的目录,然后用“use”命令直接加数据的名称来导入数据。当要操作的许多的数据文件都在同一个目录下面时,用这样的方法导入数据比较6Stata简明讲义中国经济研究中心王非方便——导入新数据时,只需改变“use”命令后的文件名即可,而不需改变数据的路径。3、在菜单栏中选择“FileÆOpen”,并选择数据所在的路径;4、点击图标栏的,并选择数据所在的路径。在前两种方式中,“use”命令后面,往往需要加一个“clear”。打个比方,想炒一锅新菜,得把原来的一锅菜倒出去;同样,想导入一个新数据,得把原来的数据清理出Stata。“clear”就是把原来的数据清理出Stata的命令。考虑到编辑do文件的需要,大家应掌握前两种数据导入方式。通过一个do文件导入数据后,会看到如下的界面:我们看到,黑色区域显示出了do文件的所有操作及其结果。Review框中显示出了曾经运行过的命令(打开do文件的命令);如果你想再次操作曾经操作过的命令,直接双击Review框中的相应命令即可,就不必重新输入一遍了。Variable框中显示的就是“WAGE1.dta”所包含的变量,有工资(wage),教育水平(educ)和工作经验(exper)等。7Stata简明讲义中国经济研究中心王非但是,当按照上述方法打开另一个数据文件“c04adult.dta”时(该文件为中国健康和营养调查的2004年的成人数据。因为太大,没有和讲义附在一起),显示界面中出现了红色的错误信息:这几行提示告诉我们,没有足够的空间容纳数据;此外,还给出了三种可行的方案:1、更有效地存储和压缩数据,2、删掉某些变量或观测值,3、增大分配给该数据的空间。一般来说,我们选择第3种方案。毕竟,许多人不愿意“委屈”菜的质量和分量,那就换口大锅吧。“换大锅”的命令是:setmemoryxxM。其中的“xx”为一个数字,代表分配给数据多大的空间;“M”为存储容量的单位,即兆字节。Stata默认的分配空间是1M。接下来,我分配给这个大数据10M的空间。分配完毕后,就可以顺利打开数据了:8Stata简明讲义中国经济研究中心王非到此为止,我们已经知道怎样把dta格式的数据文件导入Stata了。但是,对于许多不是dta格式的数据文件,我们应该怎么办?对于后縀名是“raw”,“txt”和“csv”的数据,Stata可以用“insheetusing”命令导入。这个命令的用法和“use”类似。对于那些可以另存为这三种格式的数据,可以先把它们转化成这三种格式,然后用“insheetusing”命令导入。讲义附带着一个Excel文件“wage1_sub.xls”,是“WAGE1.dta”的子样本。打开这个Excel文件,另存为“txt”(制表符分隔的文本文件)或“csv”格式后,可以用“insheetusing”命令导入。一般来说,在导入非“dta”格式的数据后,要把这些数据另存为“dta”格式。因此,在do文