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

如何在数据集列表上拟合R语言lm()函数并获取各自系数?

批量拟合回归并提取系数方案

完全可以用apply系列函数解决这个问题,其中lapply最适合处理列表对象,能对拆分后的每个子数据框批量执行回归拟合和系数提取操作。

具体步骤:

  • 定义自定义函数,输入单个数据框,拟合指定回归方程后返回系数
  • 用lapply遍历拆分后的列表Splitted_df,对每个子数据框应用该函数
  • 可选:将返回的系数列表整理成结构化数据框,方便后续分析

完整代码示例:

# 你的模拟数据代码
α <- 6
ß_1 <- 0.5
ß_2 <- 0.1
X_i <- rnorm(n = 100000, mean = 5, sd = 2)
X_i_squared <- X_i^2
e_i <- rnorm(n = 100000, mean = 0, sd = 1)
Y_i <- α + ß_1*X_i + ß_2*X_i_squared + e_i

df <- data.frame(Y_i, X_i, X_i_squared, e_i)
Splitted_df <- split(df, rep(1:1000, each = 100))

# 定义提取回归系数的函数
get_reg_coefs <- function(sub_df) {
  # 拟合回归方程
  model <- lm(Y_i ~ X_i + X_i_squared, data = sub_df)
  # 提取系数(包含截距项)
  coef(model)
}

# 批量处理所有子数据框
coefs_list <- lapply(Splitted_df, get_reg_coefs)

# 可选:将系数列表转换为数据框,每行对应一个子数据框的系数
coefs_df <- do.call(rbind, coefs_list)
# 给列名重命名更清晰
colnames(coefs_df) <- c("截距项", "X_i系数", "X_i_squared系数")

补充说明:

  • 如果追求更快运算速度,可考虑purrr包的map系列函数(语法更简洁)或data.table包的分组操作,但lapply是基础R里最直接的方案
  • coefs_df的每一行对应拆分后第k个数据框的回归系数,可直接查看、统计系数的分布情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:55:22