You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何使用lm函数的固定效应回归未剔除时间不变变量?

个体固定效应回归中plm与lm处理时间不变变量的差异原因

个体固定效应回归本应剔除时间不变变量(这类变量会被个体固定效应吸收),但使用plm函数时符合预期,lm函数却未剔除该类变量,原因可从两者的实现机制差异解释:

模拟数据与回归代码

首先是生成的面板数据代码:

X = rnorm(9,0,1)
Y = 2*X
df <- data.frame(
  X,
  Y,
  Z = c(1, 1, 1, 0, 0, 0, 0, 0, 0),
  id = c(1, 1, 1, 2, 2, 2, 3, 3, 3),
  t = c(1, 2, 3, 1, 2, 3, 1, 2, 3)
)

用plm执行双向固定效应回归:

plmfit <- plm(Y~X+Z, index = c("id", "t"), effect = "twoways", model = "within", data = df)
summary(plmfit)

输出未报告时间不变变量Z,符合预期。

用lm执行包含个体/时间虚拟变量的回归:

lmfit <- lm(Y~X+Z+factor(id)+factor(t),data=df)
summary(lmfit)

输出中时间不变变量Z未被剔除,需解释这一现象。

核心原因:两者实现固定效应的机制不同

  • plm的within模式:本质是对每个个体的所有变量做组内去均值变换——用变量的每个观测值减去该个体的变量均值。时间不变变量Z在同一个体的所有时间点取值相同,去均值后所有观测值都会变成0,因此回归时会被自动剔除,不会出现在结果中。

  • lm的虚拟变量模式:通过factor(id)直接引入个体虚拟变量,此时Z与个体虚拟变量存在完全多重共线性(比如你的数据中Z=1仅对应id=1,和id=1的虚拟变量取值完全一致)。但R的lm函数默认不会主动剔除共线性变量,它会保留所有输入变量,仅将无法识别的系数标记为NA。你可以查看lmfit的结果,会发现Z或某个个体虚拟变量的系数为NA,这就是多重共线性导致的系数不可估计,只是lm没有像plm那样直接剔除变量。

内容的提问来源于stack exchange,提问作者Leonardo19

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:00:52