stata回归分析完整步骤-吐血推荐 下载本文

内容发布更新时间 : 2024/5/7 14:13:58星期一 下面是文章的全部内容请认真阅读。

[变量a5标记和户主的关系。等于0是户主,等于1是户主的配偶。这里不加区分地将户主及其配偶放在一起。] keep if a5==1|a5==3|a5==7

[保留是户主(=1),是户主的子女(=3),或是户主的儿媳(=7)的那些人。] ren h hf

[将所需变量加上后缀f,表示女性] ren line lf

[将所需变量加上后缀f,表示女性] sort wave hhid save b1,replace [排序并保存] keep if a5f==1

[留下其中是户主或户主配偶的] save b2,replace [保存] use b1,clear

keep if a5f==3|a5f==7 save b3,replace

[留下其中是户主女儿或儿媳的并保存] use a3,clear

[打开与户主关系是户主子女的儿童数据库] sort wave hhid

merge wave hhid using CHNS01b2, keep(hf lf) ta _merge

drop if _merge==2 sort hhid line wave

[处理两代户,将户主配偶女性库与儿童库合并] by hhid line wave: egen x=count(id) drop x _merge

[计算每个年份家庭匹配的情况,x只取值1,表明两代户匹配成功] save b4,replace [保存] use a4,clear

[打开与户主关系是户主孙子女的儿童数据库] sort wave hhid

merge wave hhid using CHNS01b3, keep(a5f a8f schf a12f hf agemosf c8f lf) ta _merge drop if _merge==2

[处理三代户,将户主女儿或儿媳女性库与孙子女儿童库合并] sort hhid line wave

by hhid line wave: egen x=count(id) gen a=agemosf-agemos drop if a<216&x==3

[计算每个年份家庭匹配的情况,x不只取1,三代户匹配不完全成功。删除不合理的样本,标准是年龄差距和有三个可能母亲的那些家庭。] gen xx=x[_n+1] gen xxx=x[_n-1] gen y=lf if x==1

replace y=lf[_n+1] if x==2&xx==1 replace y=lf[_n-1] if x==2&xxx==1 keep if x==1|(lf==y&x==2)

[对于有两个可能母亲的儿童,有相同编码的女性出现两次的情况。上面的做法是为了保证不删除这部分样本。] drop a x xx xxx y _merge save b5,replace

[保存合并后的数据库]

[对男性数据的合并完全类似,不赘述。] log close exit,clear

我的方法是属于使用简单命令反复迂回地达到目的那一类的,所以非常希望有更简便的方法来替代。不过做实证时往往不是非常追求程序的漂亮,常常也就得过且过了。

stata强大的功能体现在它可以方便地回归微观数据。而回归也是微观实证中最重要的方法。下面就开始讲stata中和回归有关的常用命令。

基本回归方法有两种:线性设定下的最小二乘法(OLS)和两阶段最小二乘法(2SLS)。他们在实证分析中应用广泛,十分详细地掌握这两种方法是实证研究的基本要求。讲解的顺序是先依次介绍如何在stata中实现OLS和2SLS估计,然后再分析如何在实际问题中选择合理的方法。后一部分受Joshua Angrist教授的影响很大,因此,在后面引用他的思想时会详细注明。

假设你已经清楚地了解待估计方程的形式,那么回归命令的基本格式就十分简单明了: reg (被解释变量) (解释变量1) (解释变量2)??

方程中的相应变量可以简单地放在reg的后面。执行上面的命令后,stata会出现两个表格,分别报告一些方差分析和回归的参数估计结果。我们最关心的是参数的大小和显著性,这在第二个表格中列出。表格的最左边一栏列出了解释变量,在它的右边是相应的系数估计值,然后依次是估计值的标准误,t比率,原假设为系数的真实值等于零时错误地拒绝该假设的概率——p值,以及该估计值的置信度为(1-5%)的置信区间。

我看到回归结果的第一眼是瞄着最关心的解释变量的符号、大小和显著性。看看解释变量影响的方向和大小是不是符合理论的预期,是不是合乎常识,以及这个估计值是不是显著。标记显著性的统计量是t统计量,在经典假设下,它服从t分布。t分布和标准正态分布形状很相似,但它的“尾巴”要比标准正态分布的“肥”一些,在样本量比较小的时候尤其明显,当样本量趋于无穷时,t分布的极限分布是标准正态分布。大家对标准正态分布的分布函数上一些关键点比较熟悉,比如,1.96是97.5%的关键点,1.64是95%的关键点,所以,我们

希望知道什么时候可以安全地使用标准正态分布。下表列出了一些小自由度下二者的差异(Beyer 1987 “CRC Standard Mathematical Tables, 28th ed.”;Goulden 1956 “Methods of Statistical Analysis, 2nd ed.”)。可以看出,自由度超过一百时,二者的差别就已经相当小了。所以,当样本量的数量级是100个或以上时,可以直接认为t比率服从标准正态分布,并以此做检验。 90% 95% 97.5% 99.5%

1 3.07768 6.31375 12.7062 63.6567 2 1.88562 2.91999 4.30265 9.92484 3 1.63774 2.35336 3.18245 5.84091 4 1.53321 2.13185 2.77645 4.60409 5 1.47588 2.01505 2.57058 4.03214 10 1.37218 1.81246 2.22814 3.16927 30 1.31042 1.69726 2.04227 2.75000 100 1.29007 1.66023 1.98397 2.62589 1.28156 1.64487 1.95999 2.57588

读者读到这里可能会笑话我了,stata不是已经报告了t检验的p值和置信区间了吗?为什么不直接察看这些结果呢?原因在于实证文献往往只报告参数的估计值和标准误,需要读者自己将估计值和标准误相除,计算显著性。而且当你在写实证文章时,也应该报告参数的估计值和标准误。这比报告估计值和它的p值更规范。

伴随回归命令的一个重要命令是predict。回归结束后,使用它可以得到和回归相关的一些关键统计量。语法如下:

predict (新变量名), (统计量名)

这里的统计量名是一些选项。常用的选项有:xb(回归的拟合值。这是默认选项,即不加任何选项时,predict赋予新变量前一个回归的拟合值。);residuals(残差);leverage(杠杆值)。下面具一个例子来解释predict的用法。

有时样本中的一个特别的观察值会显著地改变回归结果。这样的观察值可以笼统地分为三类:outliers,leverage和influence。Outliers是针对残差而言的,指那些回归中残差很大的观察;leverage是针对解释变量而言的,是解释变量相对其平均值偏里很大的观察;influence是针对估计结果而言的。如果去掉这个观察会明显地改变估计值,那么这个观察就是一个influence。Influence可以看作outliers和leverage共同作用的结果。异常观察可能是由于样本的特性,也可能是因为录入错误。总之,我们希望找到它们。

回归后的predict命令可以发现这些异常观察(命令来自UCLA的“Regression with Stata”第二章)。发现outliers,leverage和influence的命令如下: predict rs, rstudent

predict l, leverage predict csd, cooksd predict df, dfits

这些统计量都有相应的关键值。当统计量(或其绝对值)超过关键值时就应该仔细检查相应的观察,确认是否属于录入错误。rstudent是用来发现outliers的统计量,其关键值是2,2.5和3。leverage 是用来发现leverage 的统计量,其关键值是(2k+2)/n,其中k解释变量的个数,n是样本量。Cooksd和DFITS是探测influence的统计量。它们都综合了残差和杠杆的信息,而且二者非常类似,只是单位不同,因而给出的结果也差不多。Cooksd的关键值是4/n。DFITS的关键值是2*sqrt(k/n)。 (续)

在使用最小二乘法估计时,两个通常被质疑的问题是数据是否存在多重共线性和异方差。 多重共线性是指解释变量之间的相关性。通常我们假设解释变量之间是相关的,而且允许解释变量存在相关性,并控制可以观察的因素正是OLS的优点。如果把多重共线性看作一个需要解决的问题,那么需要把它解释为相关性“较大”。这样,变量之间没有相关性不好,相关性太大也不好,优劣的分割真是颇费琢磨。而且多重共线性并没有违反任何经典假定,所以,这个问题没有很好的定义。本质上讲,在样本给定时,多重共线性问题无法解决,或者说它是一个伪问题。

先看一下为什么解释变量之间的相关性大会有问题。在OLS回归的经典假设(除正态假设外)下,某个系数的OLS估计值的总体方差与扰动项的方差成正比,与解释变量的总方差(一般地,我们视解释变量为随机变量)成反比,是该变量对其它解释变量回归的拟合优度的增函数。这个拟合优度可以理解为该变量的总变动中可以由其他解释变量解释的部分。当这个值趋近于1时,OLS估计值的总体方差趋向于无穷大。总体方差大时,样本方差也大的概率就大,t检验就会不准确。尽管多重共线性没有违背任何经典假设,但是OLS方法有时无法准确估计一些参数。这个问题可以理解为数据提供的信息不足以精确地计算出某些系数。最根本的解决方法当然是搜集更大的样本。如果样本给定,也许我们应该修改提出的问题,使我们能够根据样本数据做出更精确的判断。去掉一个解释变量,或者合并一些解释变量可以减少多重共线性。不过要注意的是去掉相关的解释变量会使估计有偏。

实际操作时使用方差膨胀系数衡量解释变量的多重共线性。我们只需在回归之后使用vif命令就可以得到方差膨胀系数。在命令行中敲入vif并回车,stata会报告一个包含所有解释变量的方差膨胀系数的表格,如果方差膨胀系数大于10,这个变量潜在地有多重共线性问题。

异方差是一个更值得关注的问题。首先简单地介绍一下异方差会带来哪些问题。第一、异方差不影响OLS估计的无偏性和一致性。第二、异方差使估计值方差的估计有偏,所以此时的t检验和置信区间无效。第三、F统计量不再服从F分布,LM统计量不再服从渐进卡方分布,相应的检验无效。第四、异方差使OLS不再是有效估计。总之,异方差影响推断是否有效,降低估计的效率,但对估计值的无偏性和一致性没有影响。