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

按组计算带滞后项线性模型残差并添加为新变量的问题

分组面板数据AR(1)模型残差添加解决方案

原代码存在的问题

  • 语法错误:group.by = group 是错误的分组写法,正确调用应为 group_by(group)
  • 模型公式错误:目标是拟合一阶自回归模型,公式需改为 Var1 ~ lag(Var1),而非 Var1 ~ Var1
  • 匹配逻辑缺陷:通过行号匹配会忽略分组内滞后项导致的缺失,每组首条观测因无滞后值无法计算残差,应保留为NA

正确实现方式

方法1:dplyr + broom 适配方案

先确保数据按组和时间排序(保证滞后项计算正确),再分组拟合模型并提取残差:

library(dplyr)
library(broom)

# 按组、时间排序
panel_data <- panel_data %>% arrange(group, time)

# 分组拟合AR(1)并合并残差
panel_data_with_resid <- panel_data %>%
  group_by(group) %>%
  group_modify(~ {
    model <- lm(Var1 ~ lag(Var1), data = .x)
    augment(model, newdata = .x) %>% select(.resid)
  }) %>%
  ungroup() %>%
  bind_cols(panel_data) %>%
  relocate(group, time, Var1, Var2, .resid)

方法2:data.table 高效方案

针对data.table格式的数据集,原生语法性能更优:

library(data.table)

# 按组、时间排序
setorder(panel_data, group, time)

# 分组计算残差
panel_data[, resid := {
  model <- lm(Var1 ~ shift(Var1), .SD)
  c(NA, residuals(model))
}, by = group]

关键说明

每组首条观测因无有效滞后项,无法参与模型拟合,残差设为NA是合理结果;后续观测的残差基于组内独立拟合的AR(1)模型生成,确保分组逻辑正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:05:36