面板数据Fixed Effects与Random Effects分析:R实现及技术咨询
针对德国联邦议院议员发言时长面板数据的FE/RE分析R操作指南
1. 变量转换的判断与操作
- 因变量(发言时长):先通过
hist(panel_data$speech_duration)查看分布,如果数据呈现右偏(多数议员发言短,少数人时长显著偏高),建议做对数转换以削弱极端值干扰,操作:panel_data$log_speech <- log(panel_data$speech_duration + 1)(加1是为了处理发言时长为0的情况)。 - 分类自变量(如性别):必须转换为因子类型,否则R会将其误作连续变量处理,操作:
panel_data$gender <- factor(panel_data$gender, levels = c("male", "female"), labels = c("男性", "女性"))。 - 连续自变量(如年龄):若初步判断年龄对发言时长的影响是非线性的(比如中年议员发言更长),可构造年龄平方项:
panel_data$age_sq <- panel_data$age^2。 - 时间变量:若要捕捉时间趋势,可将年份转换为因子:
panel_data$year <- factor(panel_data$year),或直接加入时间虚拟变量。
2. R中固定效应与随机效应的核心命令
首先安装并加载专门用于面板分析的plm包:
install.packages("plm") library(plm)
假设你的面板数据框名为panel_data,个体标识为议员ID(mp_id),时间标识为年份(year):
- 固定效应模型(FE):采用
within模型控制个体异质性
fe_model <- plm(log_speech ~ gender + age + age_sq, data = panel_data, model = "within", index = c("mp_id", "year"))
- 随机效应模型(RE):
re_model <- plm(log_speech ~ gender + age + age_sq, data = panel_data, model = "random", index = c("mp_id", "year"))
- Hausman检验(模型选择):判断FE/RE哪种更适配数据
hausman_test <- phtest(fe_model, re_model) summary(hausman_test)
3. 生成易解读的结果输出
可以用modelsummary包生成简洁美观的对比表格,先安装加载:
install.packages("modelsummary") library(modelsummary)
生成FE与RE的对比结果表,自定义系数名称和显著性标记:
modelsummary(list("固定效应模型" = fe_model, "随机效应模型" = re_model), stars = TRUE, coef_rename = c("gender女性" = "女性", "age" = "年龄", "age_sq" = "年龄平方"), gof_map = c("nobs", "r.squared", "adj.r.squared"))
若需查看模型细节,直接用基础命令输出:
summary(fe_model) summary(re_model)
内容的提问来源于stack exchange,提问作者CorinnaW
相关产品推荐
相关产品推荐

