1、Stata 应 用 技 巧,王洪亮,1、界面,Stata有4个窗口: 1 Stata Command(右下)用于向Stata输入命令; 2 Stata Results(右上)用于显示运行结果; 3 Review(左上)记录使用过的命令; 4 Variables(左下)显示当前memory中的所有变量。,2,STATA数据分析基础,STATA的界面,Result Window,Command Window,Review Window,Variable Window,Buttons,2、文件和数据,Stata相关的文件有三类:数据文件,do-file文件,log文件。 1数据文件 数据文件以后缀“
2、.dta”表示。数据文件是Stata处理和分析的对象。数据文件具有如下的逻辑结构:,4,5,其中每一行表示一个观测,每一列表示一个变量。每个观测都有一个编号(表1左起第1列),是系统自动加上去的。Stata对数据类型的区分不是很细致,分为数据型和字符型。缺失数据用“.”表示。,数据文件可以在Data Editor中生成,如图2所示。在方格中输入相应的变量名和数据后,点击Save按钮即可。 如果数据是逗号分隔数值格式的文本文件 (.csv) insheet using “F:AEdataFees1.csv“ clear,6,2do-file文件 do-file文件以后缀“.do”表示。 在com
3、mand窗口输入命令很不方便,而且也不利于保存对数据文件处理和分析的过程。替代的做法是使用工具栏中“New Do-file Editor”在Do-file中编写命令。 可以在命令行输入doedit来编辑程序文件。,7,在do-file文件中,用*表示注释内容,Stata在运行do-file文件时会跳过这些注释语句。加入注释语句能增强do-file文件的可读性。最好为每一个do-file文件写详细的注释内容。比如文件名称,计量分析的目的,时间和结果存放位置。如果过程中生成并保存了数据文件,应写出相应数据文件的名称等。如果中途对do-file文件进行过修改,最好将修改过文件保存为另一个文件,以便于
4、将来对比分析原文件和修改后的文件。,8,3log文件 log文件以后缀“.log”表示,用于记录Stata的运行结果。 在开始运行Stata时,创建一个log文件,并指定其路径和文件名,在结束运行时,再将其关掉,则可记录此间Stata的运行结果。,9,例: (开始运行) log using D:Econometricslogfiles20091012.log . (Stata命令) log close (结束运行) 从而20091012.log就记录了从“log using”命令 到“log close”命令之间Stata运行的所有结果。,10,3、语法和命令,Stata的语法十分地简单和灵活
5、。一个命令便构成了一条可执行的语句,在Stata Command中输入后,敲回车键就可以运行了。当然也可以将一组语句编成do-file文件。,11,Stata命令可以大体上分成4类:help命令;针对memory的命令;处理和分析数据的命令;数学命令。现分述如下。 help命令十分地简单。比如想了解“regress”的用法,可在Stata Command中输入如下语句后回车: help regress Stata会提供关于“regress”用法的详细说明,并配以例子。,12,针对memory的命令有清空命令clear和设置memory大小的set memory命令。memory有一个默认的大小
6、,但如果数据文件太大,必须重设memory的大小,例如: set memory 20m 该命令将memory大小设为20兆。,13,处理和分析数据的命令构成Stata命令的主体。它们可实现各种各样的功能,但大体具有如下的格式: by varlist1: command varlist2 if exp in range ,options 其中by varlist1:表示按一组变量(由varlist1指定)分组; command varlist2表示命令是针对由varlist2指定的变量; if exp表示命令只针对满足exp(一般是一个逻辑表达式)的观测;,14,in range表示命令只针对处
7、在range指定的范围内的观测,如in 5指执行的范围是第5个观测,in -5指执行的范围是倒数第5个观测,in 5/12指执行的范围是从第5到第12个观测; ,options是命令特有的一些选项,根据情况和需要而定,Stata的强大功能主要就体现在这些选项上,选项的使用非常精细和讲究。,15,if exp极大地体现了Stata的灵活性。逻辑表达式exp一般由以下成分构成:变量名数字,字符,表示缺失值的“.”关系运算符:=(等于),!=,(不等于),(大于),=(大于或等于),=(小于或等于)逻辑运算符:&(与),|(或),(非),16,4、数据管理,4.1 改变变量名 rename old_
8、varname new_varname old_varname是原变量名,new_varname是新变量名。,17,4.2生成新变量 generate newvar = exp if exp in range newvar是生成的新变量,exp是由现有变量生成新变量的算术或逻辑表达式,if exp 和 in range指定对哪些观测计算新变量值。 比如,generate age2 = age*age (新变量age2等于age的平方), generate biginc = income100000 & income=. (若income大于100000且不缺失,则新变量biginc为1,否则为
9、0)。,18,4.3对现有变量重新赋值 replace oldvar = exp if exp in range oldvar为现有的变量。对满足if exp和in range的样本,oldvar将根据表达式exp重新赋值。 比如,replace income=. if income=0 (若income非正,令其取缺失值), replace age = 25 in 1007 (令第1007个观测中age为25)。,19,4.4删除变量或观测 drop varlist (去掉varlist指定的变量) drop _all (去掉全部变量) drop if exp (去掉符合表达式exp的观测)
10、 drop in range (去掉处在range指定范围内的观测),20,4.5 保留变量或观测 keep varlist (保留varlist指定的变量,其余变量去掉) keep if exp (保留符合表达式exp的观测,其余观测去掉) keep in range (保留处在range指定范围内的观测),21,4.6观测重排 sort varlist 将全部观测按varlist指定的变量按升序排列。varlist中可以有不止一个变量,此时排序与字典顺序相当。,22,5、常用回归分析,回归是Stata最主要的功能之一。本部分主要介绍如何用Stata做线性回归,以及回归分析,并简单介绍用St
11、ata做Logistic回归的方法。回归命令的选项也非常丰富,可以使用help regress / logit / probit / tobit 来了解。,23,线性回归的命令有:regress y x1 x2 x3 (以y为被解释变量,x1,x2,x3为解释变量做回归;regress后第一个变量为被解释变量)regress y x1 x2 if exp in range (使用满足if exp和in range的观测做回归) regress y x1 x2 x3, robust (regression with robust standard errors) regress y x1 x2
12、x3 aweight=w (WLS,以变量w为权重),24,线性回归的典型输出:Stata会报告如下结果:方差分解,整体显著性检验的F统计量及相应的p值,R平方,调整后的R平方,MSE的平方根(亦即对的估计),系数估计,系数估计的标准差,t值,显著性检验的p值,置信区间。,25,回归后可以对系数做假设检验:对单个参数的检验 test labor (检验labor的系数是否显著) test labor = 1 (检验labor的系数是否为1)对多个参数的检验 test labor capital(零假设为labor和capital的系数都不显著) test labor=capital (检验la
13、bor和capital的系数是否相等) test labor+capital=1 (检验labor和capital的系数之和是否为1),26,回归后一般要做回归分析,检验是否存在异常的观测,以及是否有异方差,自相关,共线性。回归分析一般依据回归残差进行。此时最重要的命令是predict,可以使用help predict指令来了解它。 predict命令主要的功能如下:拟合值相关 predict yhat (yhat是任意指定的变量名,以下皆如此) predict e, resid (e是任意指定的变量名),27,对模型的检验: 多重共线性检验: vif (variance inflation
14、factors或方差膨胀因子。对每一个解释变量,都可以计算其方差膨胀因子。该因子越大,相应的变量越有可能是其它变量的线性组合。)异方差检验 hettest (test for heteroskedasticity) hettest x1 (同上,但此时我们有理由怀疑异方差可写成变量x1的函数)自相关检验 dwstat (Durbin-Watson自相关检验) durbina (Durbin-Watson h统计量) bgodfrey (Breusch-Godfrey LM 统计量),28,6、常用命令,6.1 文件和系统管理 insheet (导入外部数据) use (使用已有的数据文件) s
15、ave (保存数据文件) log using / log close (log文件操作) cd (改变默认路径) set memory (设置memory 大小) clear (清空memory) help / findit(查询帮助文档),29,6.2 数据管理 list (展示数据) describe (数据文件的整体描述) rename(改变变量名) generate(生成新变量) replace(对现有变量重新赋值) drop(删除变量或观测) keep(保留变量或观测) sort(观测重排) merge / append(数据文件的合并) xi(生成虚拟变量),30,6.3 描述统计
16、 summarize tabstat sktest /swilk /ladder /gladder /qladder (正态性检验) tabulate correlate、pwcorr(计算多个变量两两之间的相关系数),31,6.4 画图 histogram(直方图) graph box(box plot) graph pie(pie charts) kdensity(kernal density function) qnorm(QQ图) graph twoway scatter/line/connected(两个变量的散点图) graph matrix(多个变量的散点图),32,6.5 回归和回归分析 regress(线性回归) xi: regress(带虚拟变量的线性回归) test(假设检验) predict rvfplot(与残差相关的图象) vif(共线性检验) hettest(异方差检验) dwstat /durbina /bgodfrey(自相关检验),33,34,7、 常用回归模型,35,