如何在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
相关产品推荐
相关产品推荐

