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

R语言如何对非日期列所有组合运行Linear regression model

R 批量运行多列两两线性回归的实现方案

问题原因

原有代码无法正确运行的核心问题是公式写法不规范:你在公式中使用了data$列名的写法,同时又给lm函数传入了data = data参数,两者优先级冲突。lm处理公式时会优先解析公式里的data$xxx直接从全局环境取值,而非使用你传入的数据集,写法不规范也容易引发后续调用错误。

实现步骤

1. 提取目标列名

首先排除date列,提取所有需要做回归的数值列名:

cols <- names(data)[names(data) != "date"]

2. 生成所有两两变量组合

如果需要全量有序组合(即y~x和x~y都单独计算),可以用如下方式生成配对:

# 生成所有y和x的配对
var_pairs <- expand.grid(y = cols, x = cols)
# 过滤掉因变量和自变量相同的无效组合
var_pairs <- var_pairs[var_pairs$y != var_pairs$x, ]

如果只需要无序组合(即y~x和x~y只保留一个),可以用combn生成:

unordered_pairs <- combn(cols, 2, simplify = FALSE)

3. 批量构造公式并运行回归

以全量有序组合为例:

# 构造公式列表
formula_list <- lapply(1:nrow(var_pairs), function(i) {
  as.formula(paste(var_pairs$y[i], "~", var_pairs$x[i]))
})
# 批量运行线性回归
model_list <- lapply(formula_list, FUN = lm, data = data)
# 给模型命名,方便后续查找调用
names(model_list) <- paste(var_pairs$y, "regress on", var_pairs$x)

结果调用示例

你可以直接按名称提取对应模型查看结果:

# 查看Moratalaz对Cuatro_Caminos的回归结果
summary(model_list[["Moratalaz regress on Cuatro_Caminos"]])

内容的提问来源于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 09:51:01