具有PLM包的异方差性强大的标准误差

时间:2010-12-13 21:06:08

标签: r stata robustness standard-error plm

我在尝试使用Stata后学习R,我必须说我喜欢它。但现在我遇到了一些麻烦。我即将对Panel Data进行一些多次回归,因此我使用的是plm包。

现在我想在R中使用plm获得相同的结果,就像我在执行异方差性和实体固定回归时使用lm函数和Stata一样。

假设我有一个包含变量YENTITYTIMEV1的面板数据集。

我在R中使用此代码获得了相同的标准错误

lm.model<-lm(Y ~ V1 + factor(ENTITY), data=data)
coeftest(lm.model, vcov.=vcovHC(lm.model, type="HC1))

就像我在Stata中执行此回归一样

xi: reg Y V1 i.ENTITY, robust

但是当我使用plm包执行此回归时,我得到其他标准错误

plm.model<-plm(Y ~ V1 , index=C("ENTITY","YEAR"), model="within", effect="individual", data=data)
coeftest(plm.model, vcov.=vcovHC(plm.model, type="HC1))
  • 我错过了设置一些选项吗?
  • plm模型是否使用其他类型的估算,如果是这样的话?
  • 我可以某种方式使用plm, robust
  • 的Stata相同的标准错误

2 个答案:

答案 0 :(得分:5)

默认情况下,plm软件包不会将面板数据的完全相同的小样本校正用作Stata。但是在plm的1.5版本中(在CRAN上),您可以选择模拟Stata正在执行的操作。

plm.model<-plm(Y ~ V1 , index=C("ENTITY","YEAR"), model="within", 
    effect="individual", data=data)
coeftest(plm.model, vcov.=function(x) vcovHC(x, type="sss"))

这应该产生与Stata中相同的群组标准错误(但是如评论中所述,没有可重复的示例以及您期望得到的结果更难回答问题)。

有关此问题的更多讨论以及R和Stata稳健SE的一些基准,请参阅Fama-MacBeth and Cluster-Robust (by Firm and Time) Standard Errors in R

另见:

答案 1 :(得分:2)

您的Stata代码可能与您使用plm的代码不同吗?

plm的“内部”选项带有“个别”效果意味着形式的模型:

yit = a + Xit*B + eit + ci

plm做的是贬低系数,使ci从等式中下降。

yit_bar = Xit_bar*B + eit_bar

这样“bar”后缀表示每个变量的平均值减去。平均值是随时间计算的,这就是为什么效果是针对个人的。你也可以有一个固定的时间效果,这对所有人来说都是常见的,在这种情况下效果也会随着时间的推移而变化(尽管在这种情况下也是如此)。

我不确定“xi”命令在STATA中做了什么,但我认为它扩展了交互权利?然后在我看来,你正试图使用​​每个ENTITY的虚拟变量,正如@richardh强调的那样。

要使您的Stata和plm代码匹配,您必须使用相同的型号。

您有两种选择:(1)您在stata中设置数据并使用带有fe修饰符的xtreg选项或(2)您使用带有池选项的plm和每个ENTITY使用一个虚拟。

将Stata与R匹配:

xtset entity year
xtreg y v1, fe robust 

将plm与Stata匹配:

plm(Y ~ V1 + as.factor(ENTITY) , index=C("ENTITY","YEAR"), model="pooling", effect="individual", data=data)

然后将vcovHC与其中一个修饰符一起使用。请务必查看此paper,其中详细介绍了“HC”选项背后的所有机制以及它们对方差协方差矩阵的影响。

希望这有帮助。