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

R中非平衡面板数据绘制滞后变量散点图及年份固定效应回归方法

1 ggplot绘制指定散点图操作流程

你需要先把长面板数据转换为匹配2014年tfp和2015年c_sales的截面数据集,再调用ggplot绘图,完整代码如下:

# 加载依赖包
library(tidyverse)

# 步骤1:按企业ID匹配两年变量
plot_data <- df %>%
  # 提取2014年tfp数据
  filter(year == 2014) %>% select(id, tfp) %>% rename(tfp_2014 = tfp) %>%
  # 关联2015年销售额数据
  inner_join(df %>% filter(year == 2015) %>% select(id, c_sales) %>% rename(c_sales_2015 = c_sales),
             by = "id") %>%
  na.omit() # 剔除仅存在单年数据的企业

# 步骤2:绘制散点图
ggplot(plot_data, aes(x = tfp_2014, y = c_sales_2015)) +
  # 散点设置,alpha调整透明度避免样本重叠
  geom_point(alpha = 0.5, size = 1.8, color = "#2c3e50") +
  # 可选添加线性拟合线与95%置信区间
  geom_smooth(method = "lm", se = TRUE, color = "#e74c3c", linewidth = 1) +
  # 轴标签与主题设置
  labs(x = "2014年企业全要素生产率(tfp)",
       y = "2015年企业销售额(c_sales)",
       title = "2014年生产率与次年销售额相关性") +
  theme_bw()

如果样本量过大重叠严重,可以把geom_point替换为geom_jitter(width = 0.02, height = 0.02)添加微小随机扰动。

2 年份固定效应回归实现

如果你要检验全样本范围内滞后1期生产率对当期销售额的影响并控制年份固定效应,先构造滞后变量再执行回归即可,两种常用实现方式如下:

2.1 数据预处理

# 生成企业层面滞后1期的tfp变量
df <- df %>%
  group_by(id) %>%
  arrange(year) %>%
  mutate(lag_tfp = lag(tfp, 1)) %>% # 取上一年的tfp值
  ungroup() %>%
  drop_na(lag_tfp, c_sales, year)

2.2 回归操作

方法1:lm手动控制年份虚拟变量

fe_reg1 <- lm(c_sales ~ lag_tfp + factor(year), data = df)
summary(fe_reg1)
# 输出结果中lag_tfp的系数就是滞后生产率对销售额的平均影响,factor(year)对应的各组为年份固定效应估计值

方法2:plm包实现面板固定效应

library(plm)
# 声明面板数据结构,个体维度为id,时间维度为year
p_df <- pdata.frame(df, index = c("id", "year"))
# effect参数设置为"time"即仅控制年份固定效应,需同时控制企业个体固定效应则改为"twoways"
fe_reg2 <- plm(c_sales ~ lag_tfp, data = p_df, effect = "time", model = "within")
summary(fe_reg2)

如果你仅需要检验2014年tfp对2015年销售额的单期关系,直接用第一部分的plot_data做普通OLS回归即可,单期截面数据无需额外控制年份固定效应。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:06:03