如何解决如何使用 plm() 将年份固定效应转换为十年固定效应?
log(production_it)= β_0 + β_1 * log(temp_it) + β_2 * log(rain_it) ) + β_3 * 干旱_it + β_4 * 洪水_it + β_5 * 风暴_it + β_6 * log(labour_it )+ β_7* log(Fertilitzer_it )+ β_8* log(capital_it )+ β_9* log(area_it )+ η_t+ u_i+ ε_it
哪里
i:国家,t:年份
r1.time.fixed <- plm(log(production) ~ log(temp) + log(rain) + drought + flood +
storm + log(labour) + log(fertilizer) + log(capital) +
log(area),data=pm.rich,model="within",effect="twoways")
现在我想用十年而不是年作为固定效应创建以下回归:
log(production_id)= β_0 + β_1 * log(temp_id) + β_2 * log(rain_id) ) + β_3 * 干旱_id + β_4 * 洪水_id + β_5 * 风暴_id + β_6 * log(labour_id)+ β_7* log(Fertilitzer_id)+ β_8* log(capital_id)+ β_9* log(area_id)+ η_d+ u_i+ ε_id
哪里
i:国家,d:十年
给定基于年份数据的面板数据集,如何在 r 中创建十年固定效应?
在这里你可以找到我使用的数据:
解决方法
首先,您希望每个国家/地区在每个十年中的平均值作为单个观察值,您可能希望每个国家/地区在每个十年中的 mean
值。我们在 plm
之外使用 aggregate
执行此操作,我们 paste0
将年份的前三个 substr
与零一起,例如1935 → 1930。让我向您展示Grunfeld
附带的plm
数据:
library(plm)
data(Grunfeld)
Grunfeld <- transform(Grunfeld,decade=paste0(substr(year,1,3),"0"))
head(Grunfeld,3)
# firm year inv value capital decade
# 1 1 1935 317.6 3078.5 2.8 1930
# 2 1 1936 391.8 4661.7 52.6 1930
# 3 1 1937 410.6 5387.1 156.9 1930
dim(Grunfeld)
# [1] 200 6
这使我们能够aggregate
沿着几十年:
Grunfeld.a <- aggregate(. ~ firm + decade,Grunfeld,mean)
head(Grunfeld.a,3)
# firm decade year inv value capital
# 1 1 1930 1937 341.70 4046.54 124.98
# 2 2 1930 1937 305.56 1921.00 159.06
# 3 3 1930 1937 49.60 2057.12 129.80
dim(Grunfeld.a)
# [1] 30 6
现在我们可以将聚合的 Grunfeld.a
放入原始的 plm
调用中,因为 plm
在内部做了一些“魔术”来识别 unit 和 时间变量。但是,我认为这是危险的,建议在 index=
调用中明确说明 plm
es(请参阅我的 earlier answer 以获得全面的解释):
## unit and year FE
fit.year <- plm(inv ~ value + capital,data=Grunfeld,index=c("firm","year"),model="within",effect="twoways")
## unit and decade FE
fit.decade <- plm(inv ~ value + capital,data=Grunfeld.a,"decade"),effect="twoways")
对于统计摘要,您可能希望使用按单位聚类的稳健标准误差(即,在您的情况下,按国家,或在本例中的公司)。 plm
带有 summary.plm
方法,允许使用 vcov=
自定义 vcovHC.plm
。请注意, cluster=c("group")
令人困惑地意味着您希望通过定义为 unit 变量的变量(即您的国家/地区)进行聚类。对于估算 type=
,我们可能希望使用 "HC3"
,因为它是 sandwich
包中的标准并且今天经常被推荐。
## unit and year FE
summary(fit.year,vcov=vcovHC(fit.year,type="HC3",cluster=c("group")))$coe
# Estimate Std. Error t-value Pr(>|t|)
# value 0.1177159 0.01212638 9.70742 5.539985e-18
# capital 0.3579163 0.05915972 6.05000 9.049182e-09
## unit and decade FE
summary(fit.decade,vcov=vcovHC(fit.decade,cluster=c("group")))$coe
# Estimate Std. Error t-value Pr(>|t|)
# value 0.1541480 0.05601229 2.752039 1.417452e-02
# capital 0.3476384 0.06517729 5.333735 6.719637e-05
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。