在 R 中使用 plm 对固定效果进行分组,而不是个人固定效果

机器算法验证 r 固定效应模型 因果关系 差异中的差异
2022-03-30 01:19:23

我正在分析一些数据,以评估在团体级别(村庄)交付的项目的影响(因果效应)。感兴趣的结果是在个人层面(村庄内的个人)衡量的。项目安排不是随机的,但我们在干预前后对治疗和控制村庄都有一些观察。所以我想使用差异中的差异方法来估计程序的影响,以便尝试控制可能影响程序放置的不可观察因素(因此被误差项捕获)。因此,我想将扩展用于多个时期和多个组(Bertrand、Duflo 和 Mullainathan,2004;Hansen,2007),并遵循 Imbens 和 Wooldridge(2008),我想估计一个这样的方程:

yi=α+t=1Tβt1Ti=t+γ1Gi=treatment+τdidIi+ϵi

“其中现在是单元 i 处于暴露于治疗的组和时间段中的指标”Ii

由于我的数据是一组村庄而不是个人,因此上述等式可能至少有两个问题。首先,它不承认观察是在村庄中分组(聚集?)的;其次,它忽略了不同时期的观察来自同一个村庄(尽管不是来自同一个人)。

所以我想,好吧,我应该做的可能是使用面板数据方法,特别是固定效应(内部)估计量,包括村庄层面的固定效应(以控制村庄未观察到的因素- 可能影响结果和参与计划的级别)。

这是我的第一个问题:这是要走的路吗?还是我应该使用不同的方法。

好的,现在我正在尝试使用 R 和 plm 包来做到这一点。我使用这样的命令:

plm(公式 = y ~ gtreat + 时间 + 影响, 数据 = df, index=c("ids", "time"), model="within")

但是,它不起作用。它抛出一个错误说:

“pdim.default(索引[[1]],索引[[2]])中的重复对(时间ID)错误”

我一直在尝试寻找解决方案,似乎 plm 包根本不可能对时间和 id 进行重复观察(例如,参见这篇文章https://stackoverflow.com/questions/15960129/r-plm -year-fixed-effects-year-and-quarter-data )。就我而言,这些重复是很自然的,因为我在个人层面衡量了结果,但我的小组不是在个人层面,而是在村庄层面。

所以这是我的第二个问题:有什么解决方法吗?,给定我拥有的数据,我如何估计 R 中的面板数据固定效应模型(在估计器内)?(我在那里发现的一些解决方案包括在村庄层面汇总数据;这确实有效,但在我看来,它只是忽略了许多有价值的信息和个人层面的可变性。此外,我的样本在个人观察中很大 - 接近 10,000 -,但在村一级没有那么多 - 我们只有 14 个村庄,7 个治疗组和 7 个控制组 -)

非常感谢您对我的任何问题的任何想法/答案。

1个回答

我从事过类似的项目,现在正面临一个。我们处理这个问题的方法是给每个村庄加上一个固定的效应,然后按村庄对标准误差进行聚类。这不是一个完美的解决方案,而是相当标准的做法。

R 中的plm包和xtreg ..., feStata 中的命令,以及传统的固定效应(内部)估计器旨在跟随个人。我相信您想要的方法的名称之一称为分层线性模型。

R 中最简单的实现类似于

myLM <- lm(y ~ x + v v.t*t, data=df)

其中 y 是感兴趣的结果,x 是一组控制,v 是村庄的因子变量,vt 是指示村庄是否被处理的二元(因子)变量,t 是处理前后的指标。

对于标准推理,通常并建议使用multiwayvcov包或clusterSEs包来生成集群标准错误。

另一种推理方法,也是 Bertrand, Duflo & Mullainathan, 2004 中的首选方法是进行安慰剂测试,您可以在所有村庄中改变“治疗”,形成经验 CDF,并查看真正治疗的治疗效果在哪里村庄位于该分布中。请注意,这与推荐用于推理 Abadie、Diamond 和 Hainmueller 的合成控制的方法大致相同,并且与 Fisher 1935 年的文本有联系。