17

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

现在,我希望plm在 R 中获得与在lm执行异方差稳健和实体固定回归时使用函数和 Stata 时相同的结果。

假设我有一个面板数据集,其中包含变量Y, ENTITY, TIME, V1

使用此代码,我在 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模型是否使用其他类型的估计,如果是,如何?
  • 我可以在某种程度上有与plmStata相同的标准错误吗, robust
4

2 回答 2

9

默认情况下,该plm软件包不使用与Stata完全相同的面板数据小样本校正。但是,在(在 CRAN 上)的 1.5 版中,plm您可以选择模拟 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 的一些基准,请参阅 R 中的Fama-MacBeth 和 Cluster-Robust (by Firm and Time) Standard Errors

也可以看看:

于 2014-08-14T12:54:32.887 回答
4

您的 Stata 代码是否可能与您使用 plm 所做的不同?

plm的具有“个人”效果的“内部”选项表示以下形式的模型:

yit = a + Xit*B + eit + ci

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

yit_bar = Xit_bar*B + eit_bar

这样“bar”后缀意味着每个变量都减去了它的平均值。平均值是随时间计算的,这就是影响个人的原因。你也可以有一个固定的时间效应,这对所有的人来说都是共同的,在这种情况下,这种效应也会随着时间的推移而发生(尽管在这种情况下是无关紧要的)。

我不确定“xi”命令在 STATA 中的作用,但我认为它扩展了交互,对吗?然后在我看来,您正在尝试对每个实体使用一个虚拟变量,正如@richardh 强调的那样。

为了使您的 Stata 和 plm 代码匹配,您必须使用相同的模型。

您有两个选择:(1)您在 stata 中 xtset 数据并将 xtreg 选项与 fe 修饰符一起使用,或者(2)您将 plm 与 pooling 选项一起使用,每个实体一个虚拟变量。

将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与其中一种修饰符一起使用。请务必查看这篇论文,该论文对“HC”选项背后的所有机制以及它们影响方差协方差矩阵的方式进行了很好的回顾。

希望这可以帮助。

于 2012-12-11T15:29:05.740 回答