我有一个严重的序列相关问题的时间序列数据集,所以我采用了具有迭代估计值的Prais-Winsten估计来解决这个问题。我用以下命令在Stata中做了回归:
prais depvar indepvar indepvar2, vce(robust) rhotype(regress)
我的同事想要在SAS中重现我的结果,所以她使用了以下内容:
proc autoreg data=DATA;
model depvar = indepvar indepvar2/nlag=1 iter itprint method=YW;
run;
对于我们运行的不同规格,其中一些大致匹配,而另一些则不匹配。另外我注意到,对于每个回归规范,Stata比SAS有更多的迭代。我想知道我(或我的同事)的代码是否有问题。
更新
受Joe的评论启发,我修改了我的SAS代码。
/*Iterated Estimation*/
proc autoreg data=DATA;
model depvar = indepvar indepvar2/nlag=1 itprint method=ITYW;
run;
/*Twostep Estimation*/
proc autoreg data=DATA;
model depvar = indepvar indepvar2/nlag=1 itprint method=YW;
run;
答案 0 :(得分:3)
我有一些建议。请注意,我不是真正的统计学家,也不熟悉这里的具体估算器,所以这只是对文档的快速阅读。
首先,最可能的问题是SAS看起来像是使用OLS方差估计方法。也就是说,在您的Stata代码中,您有vce(robust)
,这与我使用的SAS相比,相当于vce(ols)
。请参阅this page in the docs,其中介绍了SAS如何使用Y-W自动回归方法,与解释Stata如何做的this doc page进行比较。
其次,您可能不应指定method=YW
。 SAS区分简单的Y-W估计("两步"方法)和迭代的Y-W估计。 method=ITYW
就是你想要的。你指定了iter
,所以很可能你无论如何都要得到这个,因为SAS往往对这些事情很聪明,但验证很好。
我建议实际上关闭迭代开始 - 同时执行两步法(Stata选项twostep
,SAS删除iter请求并指定method=YW
或不指定方法规范) 。看看他们在那里的表现如何。一旦你可以得到那些匹配,然后继续迭代;可能的SAS有一个不同于Stata的截止值,可能不会超过它。
我还建议首先尝试使用一个独立的因变量对,因为当你添加第二个自变量时,两个程序可能会以不同的方式处理事物。总是从简单开始,然后增加复杂性。