R语言面板数据回归:含时间固定效应混合模型分析交通死亡率、酒驾法和啤酒税

简介: R语言面板数据回归:含时间固定效应混合模型分析交通死亡率、酒驾法和啤酒税

全文链接:https://tecdat.cn/?p=33874


面板数据回可以缓解省略变量偏误的问题,特别是当没有既与感兴趣的回归变量相关又与依赖变量相关的变量信息时,并且这些变量在时间或实体维度上是恒定的点击文末“阅读原文”获取完整代码数据


当客户有面板数据可用时,可以使用面板回归方法来改善多元回归模型。这是因为在这种情况下,多元回归模型可能会产生缺乏内部有效性的结果。

本文涵盖以下主题:

  • 面板数据符号表示
  • 固定效应回归使用时间和/或实体固定效应
  • 在固定效应回归模型中计算标准误差

我们使用一个面板数据集,报告了1982年至1988年期间交通死亡率观察到的年度记录。应用分析酒精税和酒后驾车法律对道路死亡率是否有影响,如果存在,这些影响有多强烈。

面板数据

有时,面板数据也被称为纵向数据,因为它为横截面数据添加了时间维度。让我们来看看数据集,通过检查其结构并列出前几个观测值。

# 载入包和数据集
......
# 声明为面板数据。
Fatas <- pdata.frame(Fats,......
 c("state", "year"))
# 获取维度并检查结构
is.data.frame(Faies)

image.png

str(Fates)

image.png

# 列出前几个观测值
head(Fataes)

image.png

# 总结变量 'state' 和 'year'
summary(Fatas[, c(1, 2)])

image.png

我们发现该数据集包含了336个关于34个变量的观测。

示例:交通死亡和酒精税

我们首先重现图。为此,我们使用1982年和1988年的数据估计简单回归模型,建立啤酒税与交通死亡率之间的关系,交通死亡率以每万人口的死亡人数表示。然后,我们绘制数据并添加相应的估计回归函数。

# 定义死亡率
Fata......
ies$pop * 10000
# 子集数据
Fatalities1982 <- subset(Fata......
1988")
# # 使用1982年和1988年的数据估计简单的回归模型
fatal1982_mod <- lm(fa......
lities1982)
fatal1988_mod <- lm(fatal_rate ~ beertax, ......
ities1988)
coeftest(fata......
 type = "HC1")
coeftest(fatal......
 type = "HC1")

image.png

image.png

估计的回归函数如下所示:

image.png

# 绘制观测数据,并添加1982年数据的估计回归线
plot(x = as.double(Fatalities1982$beertax), 
  ......
     col = "steelblue")
abline(fata......

image.png

点击标题查阅往期内容


R语言用线性混合效应(多水平/层次/嵌套)模型分析声调高低与礼貌态度的关系


01

02

03

04



# 绘制观测数据,并添加1988年数据的估计回归线
plot(x = as.double(Fatalities1988$beertax), 
     y = as.double(Fatalities1988$fatal_rate), 
   ......
     col = "steelblue")
abline(fatald, lwd = 1.5,col="darkred")
legend("bo......

image.png

在这两个图中,每个点代表了相应年份中给定州的啤酒税和死亡率的观测值。回归结果显示,无论是在1982年还是1988年,啤酒税与死亡率呈正相关关系。然而,这无法解释不可观测的因素,这些因素在地区之间存在差异,但可以假定在观测时间范围内保持不变,例如人们对酒后驾车的态度。面板数据可以使我们将这些因素保持不变。

两个时间段的面板数据:“前后”比较

假设只有T=2个时间段,即t=1982,1988。这使我们能够分析从1982年到1988年的死亡率变化的差异。我们首先考虑人口回归模型

image.png

其中,Zi表示在时间上不变的各州特征。对于t=1982和t=1988,我们有

image.png

我们可以通过将1988年和1982年的死亡率差异与啤酒税差异进行回归,来消除自变量中的Zi。

接下来,我们将使用R通过差分数据估计回归,并绘制估计的回归函数。

# 计算差异
diff_fatal_rate <- Fata_rate - Faal_rate
......
# 使用差分数据估计回归
fatal_diff_mod <- lm(dif......
C1")

image.png

包括截距允许在1982年和1988年之间的时间内,当啤酒税没有改变时,平均死亡率发生变化。

我们得到OLS估计的回归函数

image.png

# 绘制差分数据
plot(x = as.double(diff_beertax), 
 ......
     pch = 20, 
     col = "steelblue")
# 将回归线添加到图表中
abline(fata......
red")
# 添加图例
legend("topri......
)

image.png

现估计的啤酒税系数为负,并且与0显著不同,在5%的水平上。

# 计算所有州在所有时间段上的平均死亡率
mean(Fata_rate)

image.png

再次,这个结果很可能是因为在单年回归中忽略了影响死亡率并与啤酒税和时间变化相关的因素。

固定效应回归

考虑面板回归模型

image.png

其中Zi是实体i的未观察到的时间不变异,i=1,…,n。我们的目标是估计β1,即在保持Zi恒定不变的情况下,Xi对Yi的影响。令αi=β0+β2Zi=β0+β2Zi,我们得到模型

image.png

该模型具有个体特定的截距αi,i=1,…,n,其中每一个可以理解为实体i的固定效应。αi的变化来自Zi。可以重写为包含n−1个虚拟回归器和一个常数项的回归模型:

image.png

模型有n个不同的截距,每个实体一个。固定效应模型的等价表示。

固定效应模型可以推广为包含多个与X相关并随时间变化的Y决定因素。关键概念介绍了广义固定效应回归模型。

应用于交通死亡数据

根据关键概念用于估计交通死亡率与啤酒税之间关系的简单固定效应模型是

image.png

这是交通死亡率对啤酒税和48个二分类回归的回归分析。

我们只需使用lm()函数,即可获得β1的估计值。

fatamod <- lm(fatal_......
fatal_m_mod

image.png

如前文所述,我们可以通过对去中心化数据应用OLS来估计β1,即运行回归模型。

# 获取去中心化数据
Fatalianed <- with(Fata......
state)))
# 估计回归模型
summary(lm(fatal......
meaned))

ave函数方便计算组平均值。我们使用它来获取每个州的平均死亡率和啤酒税。

lm()类似,我们需要在plm()的调用中指定回归公式和要使用的数据。

# 使用plm()估计固定效应回归模型
fatal_fe_mod <- plm(fatal_......
coeftest(fata......
HC1")

估计的系数仍为-0.65。需要注意的是,plm()使用去中心化OLS算法,因此不报告虚拟变量的系数。估计的回归函数为:

image.png

啤酒税的系数为负且显著。

含时间固定效应的回归

可以通过包括时间固定效应来控制对实体而言不变但随时间而变的变量。如果仅存在时间固定效应,则固定效应回归模型变为:

image.png

因为模型包括截距,所以只包含T-1个虚拟变量(B1被省略)。该模型消除了由于排除随时间但对实体恒定的未观测变量而引起的遗漏变量偏差。

在某些应用中,同时包括实体和时间固定效应是有意义的。实体和时间固定效应模型为:

image.png

这种综合模型能够消除随时间变化但实体间恒定的不可观察因素的偏差,并控制在时间上不同但实体间恒定的因素。可以使用R中实现的OLS算法估计此类模型。

下面的代码块展示了如何估计关于死亡人数和啤酒税之间的关系的结合实体和时间固定效应模型。

# 估计一个包含时间和实体固定效应的回归模型
# 通过lm()函数
fatal_tmod <- lm(fatal_ra......
_mod
# 通过plm()函数
fatal__mod <- plm(fatal_rate......
s")
coeftest(fata......
HC1")

估计的回归函数为

image.png

结果-0.66接近仅包含实体固定效应的回归模型的估计系数。

我们得出结论:交通事故死亡人数与实际啤酒税之间的估计关系不受由恒定于时间或州的遗漏变量造成的偏误的影响。

固定效应回归的假设和固定效应回归的标准误差

重点讨论实体固定效应模型,并介绍在OLS产生无偏估计且大样本下服从正态分布所需的模型假设。这些假设是多元回归模型的延伸,并在关键概念中给出。我们还简要讨论了固定效应模型中的标准误差,与多元回归中的标准误差不同,因为面板模型中的回归误差可以表现出串行相关性。

固定效应回归的标准误差

与异方差性类似,自相关也使得通常的标准误公式以及异方差性-稳健标准误失效,因为这些公式是在没有自相关的假设下推导出来的。

回归分析是说明为什么在固定效应模型的实证应用中使用聚类标准误至关重要的很好例子。

# 基于异方差性-稳健标准误的摘要
coeftest(fatal......
= "HC1")[1, ]
# 基于聚类标准误的摘要
coeftest(fata......
pe = "HC1")

image.png

image.png

结果有很大的不同:如果不考虑自相关,我们得到一个标准误为0.25,这意味着在5%的显著性水平上,对于啤酒税的系数^β1^1具有显著性。相反,使用聚类标准误0.35将导致无法拒绝零假设H0: β1 = 0,在相同的显著性水平下。

酒驾法和交通事故死亡

在我们迄今考虑的与交通事故死亡和啤酒税之间关系的所有模型中,存在两个主要的遗漏变量偏差来源:经济状况和驾驶法规。

首先,根据回归结果,我们定义变量。

# 将最低法定饮酒年龄离散化
Fatalities$drinkagec <- cut(Fatalities$drinkage,
                         ......
                            right = FALSE)
# 将最低饮酒年龄[21, 22]设置为基准水平
Fatalities$drinkagec <- relevel(Fatal......
]")
# 强制监禁或社区服务?
Fatalities$punish <- with(Fata......
"yes")))
# 所有变量在1982年和1988年的观测集合
Fat......
, year == 1982 | year == 1988), ]

接下来,我们使用plm()函数对所有七个模型进行估计。

# 估计所有七个模型
fatalesmod1 <- lm(fa......
ties)
faalite_mod2 <- plm(fata......
ities)
fatiie_od3 <- plm(fatal......
fataits_od4 <- plm(fat......
                       data = Fatlities)
fatltismod5 <- plm(fat......
                       data = Faalties)
fatatis_od6 <- plm(fat......
                       data = Faalites)
fatlie_mod7 <- plm(fat......
                       data = Fatliie_1982_1988)

生成结果的综合表格演示。

library(stargazer)
# 将聚类标准误差收集到一个列表中
rob_se <- list(sqrt(diag(vcovHC(fatalities_mod1, type = "HC1"))),
        ......
               sqrt(diag(vcovHC(fatalities_mod7, type = "HC1"))))
# 生成表格
stargazer(fatalities_mod1, fatalities_mod2, fatalities_mod3, 
       ......
          model.numbers = FALSE,......
", "(7)"))

因变量:死亡率

image.png

模型(5)省略了经济因素。结果支持这样一种观点,即啤酒税的系数对包括后者在内的模型具有敏感性,因此应将经济指标保留在模型中。

模型(6)的结果表明,法定饮酒年龄几乎没有解释能力,而与饮酒年龄和交通事故死亡率之间的关系的函数形式的改变也不会对所关注的系数产生影响。

规格说明(7)表明,减少可用信息的数量(我们在这里只使用了1982年至1988年期间的95个观测值)会增加标准误差,但对系数估计没有产生 drast 的变化。

总结

我们没有找到证据表明严厉的惩罚和提高最低饮酒年龄会降低由酒驾引起的交通事故死亡人数。然而,酒税似乎对交通事故死亡率有负面影响,但由于估计的不准确性,不能将其解释为感兴趣的因果效应,因为仍然可能存在偏差。问题在于可能存在在地区之间以及随时间变化的被忽略的变量,并且即使我们使用控制实体特定和时间不变的不可观测因素的面板方法,这种偏差仍然存在。


相关文章
|
2月前
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
|
2月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
2月前
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
|
2月前
|
数据采集 数据可视化
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
|
2月前
利用R语言进行典型相关分析实战
利用R语言进行典型相关分析实战
|
2月前
|
Web App开发 数据可视化 数据挖掘
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
|
2月前
【R语言实战】——Logistic回归模型
【R语言实战】——Logistic回归模型
|
2月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
2月前
|
机器学习/深度学习 算法
R语言分类回归分析考研热现象分析与考研意愿价值变现
R语言分类回归分析考研热现象分析与考研意愿价值变现
|
2月前
|
数据可视化 定位技术
R语言贝叶斯INLA空间自相关、混合效应、季节空间模型、SPDE、时空分析野生动物数据可视化
R语言贝叶斯INLA空间自相关、混合效应、季节空间模型、SPDE、时空分析野生动物数据可视化

热门文章

最新文章