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

如何在R中循环使用lm函数?获取滚动回归系数向量

滚动窗口线性回归实现(R语言)

专业术语说明

这种回归方法的专业名称是滚动窗口回归(Rolling Window Regression),属于时变参数分析范畴,核心是通过固定大小的滑动窗口遍历数据集,逐窗口拟合模型以捕捉参数随时间的动态变化,常见于时间序列分析场景。

可复现解决方案

步骤1:生成基础数据

沿用你提供的随机数据生成代码:

set.seed(12345)
a <- rnorm(852) 
b <- rnorm(852)

步骤2:基础R循环实现

用循环完成滑动窗口拟合,直接生成包含801个回归系数的向量:

# 定义窗口大小与总窗口数
window_size <- 52
total_windows <- length(a) - window_size + 1

# 初始化系数存储向量
coef_vector <- numeric(total_windows)

# 滚动拟合并提取系数
for(i in 1:total_windows){
  # 截取当前窗口的数据集
  current_a <- a[i:(i + window_size - 1)]
  current_b <- b[i:(i + window_size - 1)]
  # 拟合线性回归
  fit <- lm(current_a ~ current_b)
  # 提取自变量b的回归系数(第二个系数,第一个为截距)
  coef_vector[i] <- coef(fit)[2]
}

# 查看前5个系数示例
head(coef_vector)

步骤3:简洁函数式实现(purrr包版本)

若偏好函数式编程,可借助purrr包简化代码:

library(purrr)

window_size <- 52
total_windows <- length(a) - window_size + 1

# 批量处理窗口并提取系数
coef_vector <- map_dbl(1:total_windows, function(i){
  window_data <- data.frame(a = a[i:(i+window_size-1)], b = b[i:(i+window_size-1)])
  coef(lm(a ~ b, data = window_data))[2]
})

执行后,coef_vector即为包含全部801次回归中自变量b的系数的向量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:31:49