您好,欢迎访问三七文档
Stata简介1主要参考书:《社会统计分析与数据处理技术--STATA软件的应用》,杨菊华著,中国人民大学出版社,2008年3月。《应用STATA做统计分析》第5版,汉密尔顿著,郭志刚等译,重庆大学出版社,2008年第一版。21、界面Stata有4个窗口:1.StataCommand(右下)用于向Stata输入命令;2.StataResults(右上)用于显示运行结果;3.Review(左上)记录使用过的命令;4.Variables(左下)显示当前memory中的所有变量。342、文件和数据Stata相关的文件有三类:数据文件,do-file文件,log文件。1.数据文件数据文件以后缀“.dta”表示。数据文件是Stata处理和分析的对象。数据文件具有如下的逻辑结构:5Variable1Variable2……Variablen12……n6其中每一行表示一个观测,每一列表示一个变量。每个观测都有一个编号(表1左起第1列),是系统自动加上去的。Stata对数据类型的区分不是很细致,分为数据型和字符型。缺失数据用“.”表示。其中每一行表示一个观测,每一列表示一个变量。每个观测都有一个编号(表1左起第1列),是系统自动加上去的。Stata对数据类型的区分不是很细致,分为数据型和字符型。缺失数据用“.”表示。数据文件可以在DataEditor中生成,如图2所示。在方格中输入相应的变量名和数据后,点击Save按钮即可。72.do-file文件do-file文件以后缀“.do”表示。在command窗口输入命令很不方便,而且也不利于保存对数据文件处理和分析的过程。替代的做法是使用工具栏中“NewDo-fileEditor”在Do-file中编写命令。8在do-file文件中,用*表示注释内容,Stata在运行do-file文件时会跳过这些注释语句。加入注释语句能增强do-file文件的可读性。最好为每一个do-file文件写详细的注释内容。比如文件名称,计量分析的目的,时间和结果存放位置。如果过程中生成并保存了数据文件,应写出相应数据文件的名称等。如果中途对do-file文件进行过修改,最好将修改过文件保存为另一个文件,以便于将来对比分析原文件和修改后的文件。93.log文件log文件以后缀“.log”表示,用于记录Stata的运行结果。在开始运行Stata时,创建一个log文件,并指定其路径和文件名,在结束运行时,再将其关掉,则可记录此间Stata的运行结果。10例::(开始运行)logusingD:\Econometrics\logfiles\20091012.log………………….(Stata命令)…………………..logclose(结束运行)从而20091012.log就记录了从“logusing”命令到“logclose”命令之间Stata运行的所有结果。113、语法和命令Stata的语法十分地简单和灵活。一个命令便构成了一条可执行的语句,在StataCommand中输入后,敲回车键就可以运行了。当然也可以将一组语句编成do-file文件。12Stata命令可以大体上分成4类:help命令;针对memory的命令;处理和分析数据的命令;数学命令。现分述如下。help命令十分地简单。比如想了解“regress”的用法,可在StataCommand中输入如下语句后回车:helpregressStata会提供关于“regress”用法的详细说明,并配以例子。13针对memory的命令有清空命令clear和设置memory大小的setmemory命令。memory有一个默认的大小,但如果数据文件太大,必须重设memory的大小,例如:setmemory20m该命令将memory大小设为20兆。14处理和分析数据的命令构成Stata命令的主体。它们可实现各种各样的功能,但大体具有如下的格式:[byvarlist1:]command[varlist2][ifexp][inrange][,options]其中[byvarlist1:]表示按一组变量(由varlist1指定)分组;command[varlist2]表示命令是针对由varlist2指定的变量;[ifexp]表示命令只针对满足exp(一般是一个逻辑表达式)的观测;15[inrange]表示命令只针对处在range指定的范围内的观测,如in5指执行的范围是第5个观测,in-5指执行的范围是倒数第5个观测,in5/12指执行的范围是从第5到第12个观测;[,options]是命令特有的一些选项,根据情况和需要而定,Stata的强大功能主要就体现在这些选项上,选项的使用非常精细和讲究,使用时既要依据个人的经验,也要参看Stata的帮助系统或工具手册。16[ifexp]极大地体现了Stata的灵活性。逻辑表达式exp一般由以下成分构成:变量名数字,字符,表示缺失值的“.”关系运算符:==(等于),!=,~=(不等于),(大于),(小于),=(大于或等于),=(小于或等于)逻辑运算符:&(与),|(或),~(非)174、数据管理4.1改变变量名renameold_varnamenew_varnameold_varname是原变量名,new_varname是新变量名。184.2生成新变量generatenewvar=exp[ifexp][inrange]newvar是生成的新变量,exp是由现有变量生成新变量的算术或逻辑表达式,[ifexp]和[inrange]指定对哪些观测计算新变量值。比如,generateage2=age*age(新变量age2等于age的平方),generatebiginc=income100000&income~=.(若income大于100000且不缺失,则新变量biginc为1,否则为0)。194.3对现有变量重新赋值replaceoldvar=exp[ifexp][inrange]oldvar为现有的变量。对满足[ifexp]和[inrange]的样本,oldvar将根据表达式exp重新赋值。比如,replaceincome=.ifincome=0(若income非正,令其取缺失值),replaceage=25in1007(令第1007个观测中age为25)。204.4删除变量或观测dropvarlist(去掉varlist指定的变量)drop_all(去掉全部变量)dropifexp(去掉符合表达式exp的观测)dropinrange(去掉处在range指定范围内的观测)214.5保留变量或观测keepvarlist(保留varlist指定的变量,其余变量去掉)keepifexp(保留符合表达式exp的观测,其余观测去掉)keepinrange(保留处在range指定范围内的观测)224.6观测重排sortvarlist将全部观测按varlist指定的变量按升序排列。varlist中可以有不止一个变量,此时排序与字典顺序相当。234.7数据文件的合并数据文件的合并涉及两个数据文件:在memory中的和不在memory中的。称前者为原数据文件(themasterdata),后者为新数据文件(theusingdata)。数据文件的合并有两种情形。若新数据文件与原数据文件的变量完全一样,此时新数据文件相当于新的观测,使用append命令:appendusingfilename其中filename是新数据文件的文件名。24若新数据文件对应着同样的观测,但变量不全一样,则使用merge命令:merge[varlist]usingfilename其中filename是新数据文件的文件名,varlist是合并的依据,varlist(可以不止一个变量)取值一样的观测视为同一个观测。在合并之前,原数据文件和新数据文件都要先按照varlist排序。如果除了varlist外,原数据文件和新数据文件还有一部分变量是相同的。对这部分变量,merge命令有两个常用的选项。25merge[varlist]usingfilename,update将原数据文件中的缺失值替换成新数据文件中的相应值(前提是后者不缺失)。merge[varlist]usingfilename,updatereplace将原数据文件中的变量值替换成新数据文件中的相应值(前提是两者不一样)。在这两种情形下,merge自动生成一个指示变量_merge。该变量的不同取值,代表了合并的不同情形。但一般会连续进行几次merge操作,所以在完成一次merge后应马上使用drop_merge指令将其去掉。264.7.1数据拆分与连接/合并需要掌握的命令•为了折分或合并数据文件,要掌握下面的命令:命令命令解释用法示例drop删除变量或观察值dropmathkeep保留变量或观察值keepmathappend将两个数据集拼接(观察值拼接)appendusingmathmerge将两个数据集合并(变量合并)mergeidusingmathreshape将数据重整reshapelonginc,i(id)j(yr)stack将多列数据转换成一列数据stackabcd,into(ef)xpose数据转置xpose,clear数据Aappendmerge数据连接与拆分(drop/keep)数据B数据A数据B数据A数据B4.7.2横向拆分数据•将mydata数据分成三个数据文件,分别为学生基本信息文件student.dta,经济学成绩文件economy.dta和数学成绩文件math.dta。idnamegenderminorityeconomymath1John1140682Chris1280523Jack0290764Huang0243905Tom0370966Han1153857Phillip0285368Jin129565将要新生成的三个数据文件如下:•student.dtaeconomy.dtamath.dtaidnamegenderminority1John112Chris123Jack024Huang025Tom036Han117Phillip028Jin12ideconomy140280390443570653785895idmath168252376490596685736865•*-------将mydata拆分成学生基本信息数据文件student--------•.cdd:/mydata/•.usemydata.dta,clear•.dropeconomymath•.savestudent,replace•*----------------将mydata拆分成经济学成绩数据文件economy---------•.usemydata,clear•.keepideconomy•.saveeconomy,replace•*----------------将mydata拆分成数学成绩数据文件math--------•.usemydata,clear•.keepidmath•.savemath,replace4.7.3纵向拆分数据•将mydata数据分成二个数据文件,分别为女生数据集female.dta和男生数据集male.dta。原始数据同上。该任务完成后将要形成的数据如下:•female.dtamale.dtaidnamegenderminorityeconomymath3Jack0290764Huang0243907Phillip0285365Tom0370961John114068idnamegenderminorityeconomymath1John1140686Han1153858Jin1295652Chris128052•*----------------将mydata拆分成女生数据集female--------------
本文标题:Stata学习教程
链接地址:https://www.777doc.com/doc-5591386 .html