首页 > 解决方案 > 在 plm 中,预差分变量上的模型 =“内”与模型 =“fd”之间的意外差异?

问题描述

我正在使用 plm 包在具有多个处理窗口的面板数据上拟合 diff-in-diff 模型。

在 plm 包中,可以设置选项: - model = "within" vs model = "fd"(第一个区别)。

为什么以下不产生等效系数估计: - 当我的变量已经不同时,模型 =“内部”$Y_\textit{diff} = (Y_{t_i} - Y_{t_{i-1}})$的回归, -fd当我的变量未转换时,模型 = “内”的回归$Y_{t_i}$

我不太明白为什么估计值不一样:

一些背景

如果可能相关,这里是当前面板的高级描述:

  1. 我目前在县/区一级使用跨越 27 年的面板数据
  2. 县在整个窗口中分组(非随机分配,例如城市/农村)
  3. 这是一个重复的措施设计。每隔几年,通过随机分配在组级别进行治疗——特定组中的所有实体要么接受治疗-X,要么接受治疗-Y。
  4. 虽然实体不是随机分配到组中的,但治疗是随机分配的。
  5. 在整个时间窗的过程中,两组中的每一个都经历了 2 次 X 治疗和 2 次 Y 治疗,产生了 4 次前后测量。

代码和示例输出

代码和输出包括在下面。如您所见,使用“一阶差分”指定的模型的 diff-in-diff 项的估计与使用“within”指定的模型的 diff-in-diff 项的估计完全不同——即使“内部”模型在对 Y 变量进行差分后运行。而且,无论效果是在“个人层面”还是“双向”指定

为了便于进行准确的统计测试,我们依靠lmtestSandwich包来生成标准误差,这些标准误差对于使用辅助函数(代码在末尾显示)在县级进行聚类具有鲁棒性。

回归 #1 - 一阶差分和个体固定效应:

*回归 Y模型 = "fd" | 效果:个人

注意:一阶差分模型不允许使用 effect = "two-way"


PLM__Y__model.FD__effect.individual <-
  plm(Y ~  Pre.Post.Treatment * Treatment.or.Control
      , data=Panel, index=c("GEOID", "Year")
      , model="fd", effect = "individual")

get.coef.test.with.clustered.SEs(PLM__Y__model.FD__effect.individual)

回归 #2 - 模型内和对 Y.diff 的双向固定效应:

*回归 Y.diff 与model = "within" | 效果:双向*

PLM__diff.Y__model.within__effect.individual <-
  plm(diff.Y ~  Pre.Post.Treatment * Treatment.or.Control
      , data=Panel, index=c("GEOID", "Year")
      , model="within", effect = "twoways")

get.coef.test.with.clustered.SEs(PLM__diff.Y__model.within__effect.individual)

回归 #3 - 模型内部和对 Y.diff 的个体固定效应: *回归模型 = "within" |对 Y.diff 进行回归 效果:个人*

PLM__diff.Y__model.within__effect.individual <-
  plm(diff.Y ~  Pre.Post.Treatment * Treatment.or.Control
      , data=Panel, index=c("GEOID", "Year")
      , model="within", effect = "individual")

get.coef.test.with.clustered.SEs(PLM__diff.Y__model.within__effect.individual)

回归输出

我期望对差异变量进行回归$Y_\textit{diff} = (Y_{t_i} - Y_{t_{i-1}})$ using model="within"以产生与面板回归相同的估计值或标准误差$Y_{t_i}$ using model ="fd"

标签: rregressionpanel-dataplm

解决方案


推荐阅读