stata常用命令

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面板数据估计
首先对面板数据进行声明:
前面是截面单元,后面是时间标识:
tsset industry year
产生新的变量:
gen newvar=human*lnrd
产生滞后变量Gen fiscal
(2)=L2.fiscal
产生差分变量Gen fiscal(D)=D.fiscal
描述性统计:
xtdes :
对Panel Data截面个数、时间跨度的整体描述Xtsum:
分组内、组间和样本整体计算各个变量的基本统计量xttab 采用列表的方式显示某个变量的分布
Staxx用于估计面板模型的主要命令:
xtreg
xtreg depvar [varlist] [if exp] , model_type [level(#) ] Model type 模型
be Between-effects estimator
fe Fixed-effects estimator
re GLS Random-effects estimator
pa GEE population-averaged estimator
mle Maximum-likelihood Random-effects estimator
主要估计方法:
xtreg:
Fixed-, between- and random-effects, and population-averaged linear models
xtregar:
Fixed-and random-effects linear models with an AR
(1)disturbance xtpcse :
OLS or Prais-Winsten models with panel-corrected standard errors xtrchh :
Hildreth-Houck random coefficients models
xtivreg :
Instrumental variables and two-stage least squares for panel-data models
xtabond:
Arellano-Bond linear, dynamic panel data estimator
xttobit :
Random-effects tobit models
xtlogit :
Fixed-effects, random-effects, population-averaged logit models
xtprobit :
Random-effects and population-averaged probit models xtfrontier :
Stochastic frontier models for panel-data
xtrc gdp invest culture edu sci health social admin,beta
xtreg命令的应用:
声明面板数据类型:
tsset sheng t
描述性统计:
xtsum gdp invest sci admin
1.固定效应模型估计:
xtreg gdp invest culture sci health admin techno,fe
固定效应模型中个体效应和随机干扰项的方差估计值(分别为sigma u 和sigma e),二者之间的相关关系(rho)
最后一行给出了检验固定效应是否显著的F 统计量和相应的P 值
2.随机效应模型估计:
xtreg gdp invest culture sci health admin techno,re
检验随机效应模型是否优于混合OLS 模型:
在进行随机效应回归之后,使用xttest0
检验得到的P 值为0.00,表明随机效应模型优于混合OLS 模型
3.最大似然估计Ml:
xtreg gdp invest culture sci health admin techno,mle
Hausman检验
Hausman检验究竟选择固定效应模型还是随机效应模型:
第一步:
估计固定效应模型,存储结果
xtreg gdp invest culture sci health admin techno,fe
est store fe
第二步:
估计随机效应模型,存储结果
xtreg gdp invest culture sci health admin techno,re
est store re
第三步:
进行hausman检验
hausman fe
Hausman检验量为:
H=(b-B)´[Var(b)-Var(B)]-1(b-B)~x2(k)
Hausman统计量服从自由度为k的χ2分布。

当H大于一定显著水平的临界值时,我们就认为模型中存在固定效应,从而选用固定效应模型,否则选用随机效应模型
如果hausman检验值为负,说明的模型设定有问题,导致Hausman 检验的基本假设得不到满足,遗漏变量的问题,或者某些变量是非平稳等等
可以改用hausman检验的其他形式:
hausman fe, sigmaless
对于固定效应模型的异方差检验和序列相关检验:
Xtserial gdp invest culture sci health admin techno
异方差检验:
xtreg gdp invest culture sci health admin techno,fe
xttest3 (Modified Wald statistic for groupwise heteroskedasticity in fixed effect model)
随机效应模型的序列相关检验:
xtreg gdp invest culture sci health admin techno,re
Xttest1
Xttest1用于检验随机效应(单尾和双尾)、一阶序列相关以及两者的联合显著检验结果表明存在随机效应和序列相关,而且对随机效应和序列相关的联合检验
也非常显著
可以使用广义线性模型xtgls对异方差和序列相关进行修正:
xtgls gdp invest culture sci health admin techno, panels(hetero),修正异方差
xtgls gdp invest culture sci health admin techno, panels(correlated),修正依横截面而变化的异方差
xtgls gdp invest culture sci health admin techno, panels(hetero)corr(ar1),修正异方差和一阶序列相关ar
(1)
我常用到的sta命令
sta的帮助文件十分详尽,面面俱到,这既是好处也是麻烦。

当你看到长长的帮助文件时,是不是对迅速找到相关信息感到没有信心?
闲话不说了。

help和search都是查找帮助文件的命令,它们之间的区别在于help用于查找精确的命令名,而search是模糊查找。

如果你知道某个命令的名字,并且想知道它的具体使用方法,只须在sta的命令行窗口中输入help空格加上这个名字。

回车后结果屏幕上就会显示出这个命令的帮助文件的全部内容。

如果你想知道在sta下做某个估计或某种计算,而不知道具体该如何实现,就需要用search命令了。

使用的方法和help类似,只须把准确的命令名改成某
个关键词。

回车后结果窗口会给出所有和这个关键词相关的帮助文件名和链接列表。

在列表中寻找最相关的内容,点击后在弹出的查看窗口中会给出相关的帮助文件。

耐心寻找,反复实验,通常可以较快地找到你需要的内容。

下面该正式处理数据了。

我的处理数据经验是最好能用sta的do文件编辑器记下你做过的工作。

因为很少有一项实证研究能够一次完成,所以,当你下次继续工作时。

能够重复前面的工作是非常重要的。

有时因为一些细小的不同,你会发现无法复制原先的结果了。

这时如果有记录下以往工作的do文件将把你从地狱带到天堂。

因为你不必一遍又一遍地试图重现做过的工作。

在sta窗口上部的工具栏中有个孤立的小按钮,把鼠标放上去会出现“bring do-fileeditor to front”,点击它就会出现do文件编辑器。

为了使do文件能够顺利工作,一般需要编辑do文件的“头”和“尾”。

这里给出我使用的“头”和“尾”。

/*(标签。

简单记下文件的使命。

)*/
capture clear (清空内存中的数据)
capture log close (关闭所有打开的日志文件)
set mem 128m (设置用于sta使用的内存容量)
set more off (关闭more选项。

如果打开该选项,那么结果分屏输出,即一次只输出一屏结果。

你按空格键后再输出下一屏,直到全部输完。

如果关闭则中间不停,一次全部输出。


set matsize 4000(设置矩阵的最大阶数。

我用的是不是太大了?)cd D: (进入数据所在的盘符和文件夹。

和dos的命令行很相似。


log using (文件名).log,replace(打开日志文件,并更新。

日志文件将记录下所有文件运行后给出的结果,如果你修改了文件内容,replace选项可以将其更新为最近运行的结果。


use (文件名),clear(打开数据文件。


(文件内容)
log close (关闭xx文件。


exit,clear (退出并清空内存中的数据。


这个do文件的“头尾”并非我的发明,而是从沈明高老师那里学到的。

版权归沈明高老师。

(待续)
我常用到的sta命令:
(续)
实证工作中往往接触的是原始数据。

这些数据没有经过整理,有一些错漏和不统一的地方。

比如,对某个变量的缺失观察值,有时会用点,有时会用-9,-99等来表示。

回归时如果使用这些观察,往往得出非常错误的结果。

还有,在不同的数据文件中,相同变量有时使用的变量名不同,会给合并数据造成麻烦。

因此,拿到原始数据后,往往需要根据需要重新生成新的数据库,并且只使用这个新库处理数据。

这部分工作不难,但是非常基础。

因为如果在这里你不够小心,后面的事情往往会白做。

假设你清楚地知道所需的变量,现在要做的是检查数据、生成必要的数据并形成数据库供将来使用。

检查数据的重要命令包括codebook,su,ta,des 和list。

其中,codebook提供的信息最全面,缺点是不能使用if条件限制范围,所以,有时还要用别的帮帮忙。

su空格加变量名报告相应变量的非缺失的观察个
数,均值,标准差,最小值和最大值。

ta空格后面加一个(或两个)变量名是报告某个变量(或两个变量二维)的取值(不含缺失值)的频数,比率和按大小排列的累积比率。

des后面可以加任意个变量名,只要数据中有。

它报告变量的存储的类型,显示的格式和标签。

标签中一般记录这个变量的定义和单位。

list报告变量的观察值,可以用if或in来限制范围。

所有这些命令都可以后面不加任何变量名,报告的结果是正在使用的数据库中的所有变量的相应信息。

说起来苍白无力,打开sta亲自实验一下吧。

顺带说点儿题外话。

除了codebook 之外,上述统计类的命令都属于r族命令(又称一般命令)。

执行后都可以使用return list报告储存在r()中的统计结果。

最典型的r族命令当属summarize。

它会把样本量、均值、标准差、方差、最小值、最大值、总和等统计信息储存起来。

你在执行su之后,只需敲入return list就可以得到所有这些信息。

其实,和一般命令的return命令类似,估计命令(又称e族命令)也有ereturn命令,具有报告,储存信息的功能。

在更复杂的编程中,比如对回归分解,计算一些程序中无法直接计算的统计量,这些功能更是必不可少。

检查数据时,先用codebook 看一下它的值域和单位。

如果有-9,-99这样的取值,查一下问卷中对缺失值的记录方法。

确定它们是缺失值后,改为用点记录。

命令是replace (变量名)=. if (变量名)==-9。

再看一下用点记录的缺失值有多少,作为选用变量的一个依据。

得到可用的数据后,我会给没有标签的变量加上注解。

或者统一标签;或者统一变量的命名规则。

更改变量名的命令是ren (原变量名)空格(新变量名)。

定义标签的命令是label var (变量名)空格”(标签内容)”。

整齐划一的变量名有助于记忆,简明的标签有助于明确变量的单位等信息。

如果你需要使用通过原始变量派生出的新变量,那么就需要了解gen,egen 和replace这三个命令。

gen和replace常常在一起使用。

它们的基本语法是gen
(或replace)空格(变量名)=(表达式)。

二者的不同之处在于gen是生成新变量,replace是重新定义旧变量。

虚拟变量是我们常常需要用到的一类派生变量。

如果你需要生成的虚拟变量个数不多,可以有两种方法生成。

一种是简明方法:
gen空格(变量名)=((限制条件))[这外面的小括弧是命令需要的,里面的小括弧不是命令需要的,只是说明“限制条件”并非命令]。

如果某个观察满足限制条件,那么它的这个虚拟变量取值为1,否则为0。

另一种要麻烦一点。

就是
gen (变量名)=1 if(取值为一限制条件)
replace(相同的变量名)=0 if(取值为零的限制条件)
两个方法貌似一样,但有一个小小的区别。

如果限制条件中使用的变量都没有任何缺失值,那么两种方法的结果一样。

如果有缺失值,第一种方法会把是缺失值的观察的虚拟变量都定义为0。

而第二种方法可以将虚拟变量的取值分为三种,一是等于1,二是等于0,三是等于缺失值。

这样就避免了把本来信息不明的观察错误地纳入到回归中去。

下次再讲如何方便地生成成百上千个虚拟变量。

我常用到的sta命令:
(续)
大量的虚拟变量往往是根据某个已知变量的取值生成的。

比如,在某个回归中希望控制每个观察所在的社区,即希望控制标记社区的虚拟变量。

社区数目可能有成百上千个,如果用上次的所说的方法生成就需要重复成百上千次,这也太笨了。

大量生成虚拟变量的命令如下;
ta (变量名), gen((变量名))
第一个括号里的变量名是已知的变量,在上面的例子中是社区编码。

后一个括号里的变量名是新生成的虚拟变量的共同前缀,后面跟数字表示不同的虚拟变量。

如果我在这里填入d,那么,上述命令就会新生成d1,d2,等等,直到所有社区都有一个虚拟变量。

在回归中控制社区变量,只需简单地放入这些变量即可。

一个麻烦是虚拟变量太多,怎么简单地加入呢?一个办法是用省略符号,d*表示所有d字母开头的变量,另一法是用破折号,d1-d150表示第一个到第150个社区虚拟变量(假设共有150个社区)。

还有一种方法可以在回归中直接控制虚拟变量,而无需真的去生成这些虚拟变量。

使用命令areg可以做到,它的语法是
areg (被解释变量)(解释变量), absorb(变量名)
absorb选项后面的变量名和前面讲的命令中第一个变量名相同。

在上面的例子中即为社区编码。

回归的结果和在reg中直接加入相应的虚拟变量相同。

生成变量的最后一招是egen。

egen和gen都用于生成新变量,但egen的特点是它更强大的函数功能。

gen可以支持一些函数,egen支持额外的函数。

如果用gen搞不定,就得用egen想办法了。

不过我比较懒,到现在为止只用用取平均、加和这些简单的函数。

有的时候数据情况复杂一些,往往生成所需变量不是非常直接,就需要多几个过程。

曾经碰到原始数据中记录日期有些怪异的格式。

比如,
1991年10月23日被记录为。

我想使用它年份和月份,并生成虚拟变量。

下面是我的做法:
gen yr=int(date)
gen mo=int((data-yr*100)/100)
ta yr, gen( yd)
ta mo, gen( md)
假设你已经生成了所有需要的变量,现在最重要的就是保存好你的工作。

使用的命令是save空格(文件名),replace。

和前面介绍的一样,replace选项将更新你对数据库的修改,所以一定要小心使用。

最好另存一个新的数据库,如果把原始库改了又变不回去,就叫天不应叫地不灵了。

我常用到的sta命令
(续)
前面说的都是对单个数据库的简单操作,但有时我们需要改变数据的结构,或者抽取来自不同数据库的信息,因此需要更方便的命令。

这一类命令中我用过的有:
改变数据的纵横结构的命令reshape,生成退化的数据库collapse,合并数据库的命令append和merge。

纵列(longitudinal)数据通常包括同一个行为者(agent)在不同时期的观察,所以处理这类数据常常需要把数据库从宽表变成长表,或者相反。

所谓宽表是以每个行为者为一个观察,不同时期的变量都记录在这个观察下,例如,行为者是厂商,时期有
2000、2001年,变量是雇佣人数和所在城市,假设雇佣人数在
不同时期不同,所在城市则不变。

宽表记录的格式是每个厂商是一个观察,没有时期变量,雇佣人数有两个变量,分别记录2000年和2001年的人数,所在城市只有一个变量。

所谓长表是行为者和时期共同定义观察,在上面的例子中,每个厂商有两个观察,有时期变量,雇佣人数和所在城市都只有一个,它们和时期变量共同定义相应时期的变量取值。

在上面的例子下,把宽表变成长表的命令格式如下:
reshape long (雇佣人数的变量名), i((标记厂商的变量名)) j((标记时期的变量名))
因为所在城市不随时期变化,所以在转换格式时不用放在reshape long后面,转换前后也不改变什么。

相反地,如果把长表变成宽表则使用如下命令
reshape wide (雇佣人数的变量名), i((标记厂商的变量名)) j((标记时期的变量名))
唯一的区别是long换成了wide。

collapse的用处是计算某个数据库的一些统计量,再把它存为只含有这些统计量的数据库。

用到这个命令的机会不多,我使用它是因为它可以计算中位数和从1到99的百分位数,这些统计量在常规的数据描述命令中没有。

如果要计算中位数,其命令的语法如下
collapse (median) ((变量名)), by((变量名))
生成的新数据库中记录了第一个括号中的变量(可以是多个变量)的中位数。

右面的by选项是根据某个变量分组计算中位数,没有这个选项则计算全部样本的中位数。

合并数据库有两种方式,一种是增加观察,另一种是增加变量。

第一种用append,用在两个数据库的格式一样,但观察不一样,只需用append空格using空格(文件名)就可以狗尾续貂了。

简单明了,不会有什么错。

另一种就不同了,
需要格外小心。

如果两个数据库中包含共同的观察,但是变量不同,希望从一个数据库中提取一些变量到另一个数据库中用merge。

完整的命令如下:
use (文件名)[打开辅助数据库]
sort (变量名)[根据变量排序,这个变量是两个数据库共有的识别信
息]save (文件名), replace [保存辅助数据库]
use (文件名)[打开主数据库]
sort (变量名)[对相同的变量排序]
merge (变量名)using (文件名), keep((变量名))
[第一个变量名即为前面sort后面的变量名,文件名是辅助数据库的名字,后面的变量名是希望提取的变量名]
ta _merge[显示_merge的取值情况。

_merge等于1的观察是仅主库有的,等于2的是仅辅助库有的,等于3是两个库都有的。

]
drop if _merge==2 [删除仅仅来自辅助库的观察]
drop merge [删除_merge]
save (文件名), replace [将合并后的文件保存,通常另存]
我常用到的sta命令
(续)
讲到这里似乎对于数据的生成和处理应该闭嘴了。

大家可能更想听听估计、检验这些事情。

但我并不想就此止住,因为实际中总是有一些简单套用命令无法轻易办到的特殊要求。

此时至少有两条路可以通向罗马:
一是找到更高级的命令一步到位;二是利用已知简单命令多绕几个圈子达到目的。

下面讲一个令我刻骨铭心的经历,这也是迄今我所碰到的生成新数据中最繁复的了。

原始数据中包含了可以识别属于同一个家庭中所有个人的信息和家庭成员与户主关系的信息。

目的是利用这些信息建立亲子关系。

初步的构想是新数据库以子辈为观察,找到他们的父母,把父母的变量添加到每个观察上。

我的做法如下:
use a1,clear [打开全部样本数据库]
keep if gender==2&agemos>=96&a8~=1&line<10
[保留已婚的一定年龄的女性]
replace a5=1 if a5==0
[变量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
我的方法是属于使用简单命令反复迂回地达到目的那一类的,所以非常希望有更简便的方法来替代。

不过做实证时往往不是非常追求程序的漂亮,常常也就得过且过了。

曾经有人向我索要过上面的处理方法,因为一直杂事缠身,就没有回复。

现在公开了,希望对需要的人能有所帮助,我也懒得再去一一答复了。

Sta:
输出regression table到word和excel
1.安装estout。

最简单的方式是在sta的指令输入:
ssc install estout, replace
EST安装的指导网址是:
http:
///bocode/e/estout/installation.html
2.跑你的regression
3.写下这行指令esttab using test.rtf,然后就会出现个漂亮的表格给你(WORD文档)。

只要再小幅修改,就可以直接用了。

这个档案会存在my document\sta下。

如果你用打开的是一个sta do file,结果会保存到do文件所在文件夹中。

如果要得到excel文件,就把后缀改为.xls或者.csv就可以了
4.跑多个其实也不难,只要每跑完一个regression,你把它取个名字存起来:
est store m1。

m1是你要改的,第一个model所以我叫m1,第二个的话指令就变成est store m2,依次类推。

5.运行指令:
esttab m1 m2 ... using test.rtf就行了。

异方差的检验:
Breusch-Pagan test in STA:
其基本命令是:
estat hettest var1 var2 var3
其中,var1 var2 var3分别为你认为导致异方差性的几个自变量。

是你自己设定的一个
滞后项数量。

同样,如果输出的P-Value 显著小于0.05,则拒绝原假设,即不存在异方差性。

White检验:
其基本命令是在完成基本的OLS 回归之后,输入
imtest,white
如果输出的P-Value 显著小于0.05,则拒绝原假设,即不存在异方差性处理异方差性问题的方法:
方法一:
WLS
WLS是GLS(一般最小二乘法)的一种,也可以说在异方差情形下的GLS 就是WLS。

在WLS下,我们设定扰动项的条件方差是某个解释变量子集的函数。

之所以被称为加权最小二乘法,是因为这个估计最小化的是残差的加权平方和,而上述函数的倒数恰为其权重。

在staxx实现WLS的方法如下:
reg (被解释变量)(解释变量1)(解释变量2)…… [aweight=变量名]其中,aweight后面的变量就是权重,是我们设定的函数。

一种经常的设定是假设扰动项的条件方差是所有解释变量的某个线性组合的指数函数。

在sta中也可以方便地实现:
首先做标准的OLS回归,并得到残差项;
reg (被解释变量)(解释变量1)(解释变量2)……
predict r, resid
生成新变量logusq,并用它对所有解释变量做回归,得到这个回归的拟合值,再对这个拟合值求指数函数;
gen logusq=ln(r^2)
reg logusq (解释变量1)(解释变量2)……
predict g, xb
gen h=exp(g)
最后以h作为权重做WLS回归;
reg (被解释变量)(解释变量1)(解释变量2)…… [aweight=h]
如果我们确切地知道扰动项的协方差矩阵的形式,那么GLS估计是最小方差线性无偏估计,是所有线性估计中最好的。

显然它比OLS更有效率。

虽然GLS 有很多好处,但有一个致命弱点:
就是一般而言我们不知道扰动项的协方差矩阵,因而无法保证结果的有效性。

方法二:
HC SE
There are 3 kinds of HC SE
(1)Huber-White Robust Standard Errors HC1,其基本命令是:
reg var1 var2 var3, robust
White
(1980)证明了这种方法得到的标准误是渐进可用(asymptotically valid)的。

这种方法的优点是简单,而且需要的信息少,在各种情况下都通用。

缺点是损失了一些效率。

这种方法在我们日常的实证研究中是最经常使用。

(2)MacKinnon-White SE HC2,其基本命令是:
reg var1 var2 var3, hc2
(3)Long-Ervin SE HC3,其基本命令是:
reg var1 var2 var3, hc3
约束条件检验:
如果需要检验两个变量,比如x 与y,之间系
数之间的关系,以检验两者系数相等为例,我们可以直接输入命令:
test x=y
再如检验两者系数之和等于1,我们可以直接输入命令:
test x+y=1
如果输出结果对应的P-Value 小于0.05,则说明原假设显著不成立,即拒绝原假设。

序列相关性问题的检验与处理
序列相关性问题的检验:
首先,要保证所用的数据必须为时间序列数据。

如果原数据不是时间序列数据,则需要进行必要的处理,最常用的方法就是:
gen n=_n
tsset n
这两个命令的意思是,首先要生成一个时间序列的标志变量n(或者t 也可以);然后通过tsset 命令将这个数据集定义为依据时间序列标志变量n定义的时间序
列数据。

最直观的检验方式是通过观察残差分布,其基本步骤是在跑完回归之后,直接输入
Predict error, stdp
这样就得到了残差值;然后输入命令:
plot error n
会得到一个error 随n 变化的一个散点图。

D-W检验——对一阶自相关问题的检验:
D-W检验是对一阶自相关问题的常用检验方法,但是如果实际问题中存在高阶序列相关性问题,则不能用这个检验方法。

D-W 检验的命令如下:
首先,输入回归命令,
reg Variable1 Variable2 Variable3…VariableM
输出一个简单的OLS估计结果。

然后,再输入命令:
dwstat
这时会输出一个DW 统计量。

通过与临界值之间的比较,可以得出结论。

也可以执行如下命令
estat durbinalt
直接进行Durbin检验。

Breusch-GodfreyTest in STA——检验高阶序列相关性:
在得到一个基本回归结果和error 之后,我们假设这样一个关系:
et =α0 +α1 et-1 +α2 et-2 …+αk et-p +β1 x1t +β2 x2t … +βk xkt +εt
BG 检验的原假设是:
H0:α1 =α2 = …αp =0。

其基本命令是:
bgodfrey , lags(p)
其中p 是你自己设定的一个滞后项数量。

如果输出的p-value 显著小于0.05,则
可以拒绝原假设,这就意味着模型存在p 阶序列相关性;如果输出的p-value 显
著大于0.05甚至很大,则可以接受原假设,即不存在p 阶序列相关性。

处理序列相关性问题的方法——GLS:
常用的几种GLS 方法:
(1)Cochrane-Orcutt estimator 和Prais-Winsten estimator
其基本命令是
prais var1 var2 var3, corc
(2)Newey-West standard errors
其基本命令是
newey var1 var2 var3, lag
(3)
其中,lag。

相关文档
最新文档