我正在使用Python中的PanelOLS做一个固定效果模型,并且我在R中使用了plm来验证我的结果,令我惊讶的是,尽管这两个系数和P值应该是相同的,但它们的系数和P值却不同?
数据来自R的数据集
library(AER)
data(Fatalities)
# define the fatality rate
Fatalities$fatal_rate <- Fatalities$fatal / Fatalities$pop * 10000
# mandadory jail or community service
Fatalities$punish <- with(Fatalities, factor(jail == "yes" | service == "yes",
labels=c("no", "yes")))
以下是我的Python代码 PanelOLS
w1=Fatalities.set_index(["state", "year"])
mod = PanelOLS(w1['fatal_rate'], w1[['beertax','drinkage','punish', 'miles' ,
'unemp','income']], entity_effects=True)
result=mod.fit(cov_type='clustered', cluster_entity=True)
display(result.summary)
以下是我的R代码 plm
fatalities_mod6 <- plm(fatal_rate ~ beertax + year + drinkage + punish + miles +
unemp + log(income), index=c("state", "year"),
model="within", effect="twoways", data=Fatalities)
我也想问一下cov_type
in PanelOLS
,据我了解,如果我想使用可靠的标准误差和P值,则应该使用cov_type=’robust’
而不是‘clustered’
。但是我看到许多使用固定效应的示例‘clustered’
—应该使用哪一个示例来获取变量的正确标准误差和p值?
panelOLS
是:plm
:有两个问题:1.您year
在plm
公式中使用的变量由于已被索引而变得多余,并且2.您的PythonPanelOLS
代码计算了各个固定效果,我可以使用effect="individual"
中的来复制估算值plm
。
library(plm)
fatalities_mod6 <- plm(fatal_rate ~ beertax + drinkage + punish + miles +
unemp + log(income), index=c("state", "year"),
model="within", effect="individual", data=Fatalities)
此外,PythonPanelOLS
似乎在使用Arellano方法并使用异方差一致性标准错误类型1("HC1"
)的状态上聚集在状态上的标准错误。
round(summary(fatalities_mod6,
vcov=vcovHC.plm(fatalities_mod6, cluster="group", type="HC1",
method="arellano"))$coe, 4)
# Estimate Std. Error t-value Pr(>|t|)
# beertax -0.3664 0.2920 -1.2550 0.2105
# drinkage -0.0378 0.0252 -1.4969 0.1355
# punishyes -0.0342 0.0951 -0.3598 0.7193
# miles 0.0000 0.0000 -0.4217 0.6736
# unemp -0.0196 0.0128 -1.5385 0.1250
# log(income) 0.6765 0.5424 1.2472 0.2134
这类似于PanelOLS
Python的结果。
对于具有鲁棒性标准错误的数据的内部估计量,您的代码应为
对于Python:
mod = PanelOLS(w1['fatal_rate'], w1[['beertax','drinkage','punish', 'miles' ,
'unemp','income']],
entity_effects=True, time_effects=True)
对于R:
fatalities_mod6 <- plm(fatal_rate ~ beertax + drinkage + punish + miles +
unemp + log(income), index=c("state", "year"),
model="within", effect="individual", data=Fatalities)
summary(fatalities_mod6,
vcov=vcovHC.plm(fatalities_mod6, cluster="group", type="HC1"))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句