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

如何对多变量dataframe列表使用for循环逐份执行回归分析

R语言多DataFrame批量回归实现方案

前置语法修正

你现有的代码存在两处语法错误,先修正后再执行回归:

  • 存储多个dataframe需要使用list()而非c(),修正后的列表创建代码:
    dflist = list(cvx,csco,trv,unh,gs,nke,v,aapl,wba)
    
    可选操作:给列表元素添加对应股票名,方便后续匹配回归结果:
    names(dflist) = c("cvx","csco","trv","unh","gs","nke","v","aapl","wba")
    
  • lm函数的多变量回归公式需要用+拼接自变量,而非逗号分隔,正确的公式写法:ri_rf ~ smb + hml + capm

方案1:for循环实现

适合需要自定义每轮回归附加操作的场景:

# 初始化结果存储列表
lm_results = list()

# 遍历所有股票数据执行回归
for (i in seq_along(dflist)) {
  lm_results[[i]] = lm(ri_rf ~ smb + hml + capm, data = dflist[[i]])
  # 可选:实时打印回归结果概览
  cat("股票", names(dflist)[i], "回归结果:\n")
  print(summary(lm_results[[i]]))
}

执行完成后所有回归结果存在lm_results列表中,可通过下标提取单只股票的回归结果。

方案2:lapply批量实现(推荐)

更符合R语言语法风格的简洁写法:

# 批量执行回归,结果直接存入列表
lm_results = lapply(dflist, function(df) lm(ri_rf ~ smb + hml + capm, data = df))

# 批量查看所有回归的摘要结果
lapply(lm_results, summary)

后续可直接通过sapply批量提取需要的回归指标,示例如下:

# 提取所有股票回归的调整R²
sapply(lm_results, function(x) summary(x)$adj.r.squared)

# 提取所有股票回归的自变量系数
sapply(lm_results, coef)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:24:01