固定效果模型中的 plm 不适用于 id 和 time

机器算法验证 回归 面板数据 多层次分析 plm
2022-04-15 05:47:33

我目前正在写我的论文,但我遇到了一个问题。我试图弄清楚公司层面、国家层面和行业层面的变量如何影响企业社会责任。我想添加行业 (SEC) 和时间固定效应。但我只能用它们中的一个来运行代码。实际上代码应该是这样的,其中第一部分是国家级别的特定变量,TA 和 LV 是公司特定的:

within <- plm(ESG ~ VOI_AC + Political.Stability + Government.effectiveness+ Regulatory.Quality +Rule.of.law + control.of.Corruption +Press.Freedom + pdi + idv + mas + uai + GI + HD + TA + LV, data=Neu1, index=c( "SEC", "year"),  model="within")

我尝试了一些故障排除,例如:

Neu1$year <- group_indices(Neu1, year, SEC.NAME)

以及其中的一些组合。我知道问题是,我每个行业和年份都有重复的观察结果。但这是因为不同的公司将在一年内从事同一行业。我无法摆脱错误:

  duplicate couples (id-time)
Zusätzlich: Warnmeldungen:
1: In pdata.frame(data, index) :
  duplicate couples (id-time) in resulting pdata.frame
 to find out which, use e.g. table(index(your_pdataframe), useNA = "ifany")
2: In is.pbalanced.default(index[[1]], index[[2]]) :
  duplicate couples (id-time)

我的数据的第一部分如下所示: 在此处输入图像描述

我的数据的最后一部分如下所示: 在此处输入图像描述

我很感谢任何帮助。我是 R 的新手,我真的读了很多关于这个问题的书,但我没有找到解决方法。

2个回答

我建议拟合一个多层次模型,公司/公司嵌套在行业内,公司也嵌套在国家/地区。这只是混合效应模型的一个特例,可以用这种公式指定(使用lme4库和其他人采用的符号):

ESG ~ fixed_effects + (1 | industry) + (1 | industry:firm) + (1| country) + (1 | country:firm) 

这相当于:

ESG ~ fixed_effects + (1 | industry/firm) + (1| country/firm)

所以在这里我们为分组因子拟合随机效应(随机截距),以处理分组因子内观察的非独立性。在混合模型框架中,公式的随机部分中未指定的任何内容都是固定效应。请注意,通过将固定效应指定为随机斜率,也可以允许固定效应在随机截距的水平内变化。例如,如果我们想让一个固定的效果X也在不同的层次内变化,country我们可以这样做:

ESG ~ X + other_fixed_effects + (1 | industry) + (1 | industry:firm) + ( X | country) + (1 | country:firm) 

...这就是为什么有时最好编写公式的扩展版本

请注意,使用混合模型方法时,无需指定特定变量在哪个级别发生变化——只要正确指定嵌套,模型将自动处理在国家级别、行业级别或公司级别发生变化的变量。如果您碰巧将变量指定为随机斜率,即在分组变量的级别内变化,但在该级别上没有变化,则不会识别随机效应,您应该获得奇异拟合或错误。

这都在 package 的文档中plm,例如,包的小插图。我相信您会因为要估计的各种固定效应而感到困惑。

您需要正确指定观察单位(单个维度)和数据的时间维度,并将它们放入index参数中。如果您查看公司,则行业(变量SEC)不是个体维度,但公司是个体维度(我将假设公司标识符在变量中firm;查看您的数据,似乎是ASSET4.Company.Name)。

现在,我建议您先设置面板结构的数据,然后估计模型(我认为这是一种更简洁的方法)。设置数据:

pdata <- pdata.frame(your_data, index = c("firm", "year"))

让我们首先估计一个具有个体(公司)和时间固定效应的双向固定效应模型:

fe1 <- plm(ESG ~ VOI_AC + Political.Stability + Government.effectiveness + Regulatory.Quality +Rule.of.law + control.of.Corruption + Press.Freedom + pdi + idv + mas + uai + GI + HD + TA + LV, data = pdata,  model = "within", effect = "twoways")

要添加更多固定效果,请将它们包含在公式中,factor(your_variable)如下所示:

fe2 <- plm(ESG ~ factor(SEC) + VOI_AC + Political.Stability + Government.effectiveness+ Regulatory.Quality + Rule.of.law + control.of.Corruption + Press.Freedom + pdi + idv + mas + uai + GI + HD + TA + LV, data = pdata,  model="within", effect = "twoways")

Robert 使用 R 包lme4(或nlme)的方法是最大似然方法。plm的小插图包含一个比较,并且在 Cross Validated 上有关于这两种方法的一些很好的问题和答案。我在这里列出的可能更多的是计量经济学家使用的以及您最初要求的。