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

如何入门时间固定效应?面板数据检验方法及代码求助

面板数据时间固定效应检验指南与代码修正

一、现有代码问题解析

  1. lm代码问题:lm(y ~ x1 + year, data) 中若year是数值型变量,仅会拟合线性时间趋势,而非时间固定效应(即每个年份的虚拟变量)。需将year转为因子型,才能让模型生成各年份的固定效应项。
  2. plm代码问题:原代码未指定model = "within",默认是混合回归(pooling),无法正确估计固定效应;另外effect = "twoways"是双向固定效应(个体+时间),若仅需时间固定效应,应改为effect = "time"。

二、分步实现指南

1. 数据预处理

先确认面板数据格式,处理缺失值并统一个体/时间标识:

# 转换为plm要求的面板数据对象
pdata <- pdata.frame(your_data, index = c("country", "year"))
# 剔除缺失值(非平衡面板可根据需求跳过)
pdata <- na.omit(pdata)
# 若用lm实现时间固定效应,需将year转为因子
pdata$year <- as.factor(pdata$year)

2. 用lm包估计时间固定效应

# 拟合时间固定效应模型(year为因子,生成各年份虚拟变量)
lm_time_model <- lm(y ~ x1 + year, data = pdata)
# 查看回归结果
summary(lm_time_model)

# 检验时间固定效应的联合显著性
anova(lm_time_model, update(lm_time_model, . ~ . - year))
  • 输出中year对应的系数为各年份相对于基准年的时间固定效应
  • 方差分析的p值小于0.05时,说明时间固定效应显著

3. 用plm包估计时间固定效应

仅时间固定效应

plm_time_model <- plm(y ~ x1, data = pdata, 
                      effect = "time", model = "within")
summary(plm_time_model)

# 检验时间固定效应显著性(对比混合回归)
pFtest(plm_time_model, update(plm_time_model, model = "pooling"))

双向固定效应(个体+时间)

修正后的代码:

plm_twoway_model <- plm(y ~ x1, data = pdata, 
                        index = c("country", "year"),
                        effect = "twoways", model = "within")
summary(plm_twoway_model)

# 检验时间固定效应显著性(对比仅个体固定效应)
pFtest(plm_twoway_model, update(plm_twoway_model, effect = "individual"))

4. 稳健标准误修正

面板数据常存在异方差和序列相关,可计算稳健标准误:

library(lmtest)
library(sandwich)

# lm模型的稳健标准误
coeftest(lm_time_model, vcov = vcovHC(lm_time_model, type = "HC1"))

# plm模型的稳健标准误
coeftest(plm_time_model, vcov = vcovHC(plm_time_model, type = "HC1"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:30:45