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

R语言匹配df1与df2列名批量运行线性回归的通用实现方法

通用化线性回归实现方案

以下提供两种常用的简洁实现方式,均可以自动匹配变量、批量拟合所有符合要求的回归模型:

基础R实现

不需要加载额外依赖,直接通过循环实现:

# 提取df1所有响应变量列名
resp_cols <- colnames(df1)
# 初始化结果存储列表
lm_results <- list()

for (resp in resp_cols) {
  # 筛选df2中列名包含当前响应变量名的所有预测列
  pred_cols <- grep(resp, colnames(df2), value = TRUE)
  # 无匹配列则跳过
  if (length(pred_cols) == 0) next
  
  # 逐个拟合线性回归
  for (pred in pred_cols) {
    # 构造回归公式
    fit_formula <- as.formula(paste0("df1[['", resp, "']] ~ df2[['", pred, "']]"))
    # 用回归关系作为结果的命名,方便后续查询
    model_key <- paste0(resp, " ~ ", pred)
    lm_results[[model_key]] <- lm(fit_formula)
  }
}

# 示例:查看指定模型结果
lm_results[["Escuelas_Aguirre ~ Escuelas_Aguirre vs Retiro"]]

tidyverse风格实现

使用purrr包的迭代函数,代码更简洁易读:

library(purrr)

lm_results <- set_names(colnames(df1)) %>% 
  map(function(resp) {
    # 筛选匹配的预测列
    pred_cols <- grep(resp, colnames(df2), value = TRUE)
    # 对每个匹配的预测列拟合回归
    map(set_names(pred_cols), ~ lm(df1[[resp]] ~ df2[[.x]]))
  }) %>% 
  # 扁平化列表,方便统一管理所有模型
  flatten()

批量提取拟合指标

如果需要批量导出所有模型的系数、R方等指标,可以搭配broom包实现:

library(broom)
library(dplyr)

# 提取所有模型的系数显著性表
coef_table <- map_dfr(lm_results, tidy, .id = "model")

# 提取所有模型的拟合优度等整体指标
fit_index_table <- map_dfr(lm_results, glance, .id = "model")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:48:03