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

如何在R的plm一阶差分模型中指定删除的时间虚拟变量?

自定义一阶差分面板模型中时间虚拟变量的保留逻辑

问题场景

使用R语言plm包估计一阶差分(fd)面板模型时,若直接在公式中加入factor(year),程序会因共线性自动剔除部分时间虚拟变量(如示例中剔除了1990和1994年的变量)。但实际需求是剔除1990、1991年的虚拟变量,仅保留1992、1993、1994年的时间效应。

解决方案

方法1:手动构造目标年份的虚拟变量

直接生成仅包含需要保留年份的虚拟变量,完全控制纳入模型的时间效应项:

# 为目标年份生成虚拟变量
df$year_1992 <- as.integer(df$year == 1992)
df$year_1993 <- as.integer(df$year == 1993)
df$year_1994 <- as.integer(df$year == 1994)

# 转换为面板数据结构
mydata <- pdata.frame(df, index = c("Country", "year"))

# 估计一阶差分模型
model <- plm(y ~ x + year_1992 + year_1993 + year_1994, data = mydata, model = "fd")
summary(model)

该方法直接指定模型纳入的时间虚拟变量,避免程序自动剔除的逻辑,结果中会清晰显示1992-1994三个年份的系数估计值。

方法2:调整因子基准组实现定向剔除

通过relevel()将1991年设为时间因子的基准组,结合一阶差分模型的特性,让程序自动剔除1990和1991年的虚拟变量:

# 将year转为因子并设置1991为基准水平
df$year_factor <- relevel(factor(df$year), ref = "1991")

# 转换为面板数据结构
mydata <- pdata.frame(df, index = c("Country", "year"))

# 估计一阶差分模型
model <- plm(y ~ x + year_factor, data = mydata, model = "fd")
summary(model)

此时模型输出的系数将对应1992、1993、1994年相对于1991年的差分效应,间接实现保留目标年份时间效应的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:23:13