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

循环预测模型:求无需创建纯数值数据集的残差拟合图代码(省RAM)

问题

我希望为数据集中的每个数值变量生成残差vs拟合图,示例代码如下:

plot(glm(Outcome~Age, family="binomial", data=pima_train))

当前我的代码通过循环存储回归模型摘要:

mod_summaries <- list() # creating empty list

for(i in 2:ncol(select_if(is.numeric(pima_train)))) {    # Head of for-loop
 
  predictors_i <- colnames(pima_train)[2:i]    # Create vector of predictor names
  mod_summaries[[i - 1]] <- summary(     # Store regression model summary in list
    lm(y ~ ., data[ , c("y", predictors_i)]))
}

现寻求无需创建仅包含数值变量的完整数据集的优化代码,以节省RAM空间。

解决方案

核心思路

直接在原数据集上识别数值变量列名,动态构建模型公式,全程不生成新的数值子集数据集,从根源上避免额外内存占用。

代码实现

场景1:为每个数值变量单独建模并生成残差图(匹配示例的二分类glm模型)

# 提取数值变量列名(排除响应变量Outcome,根据实际数据调整)
numeric_cols <- names(pima_train)[sapply(pima_train, is.numeric) & names(pima_train) != "Outcome"]

mod_summaries <- list()

# 循环处理每个数值变量
for (col in numeric_cols) {
  # 动态构建公式并拟合模型
  model <- glm(formula = paste("Outcome ~", col), family = "binomial", data = pima_train)
  # 生成残差vs拟合图(which=1指定该类型图)
  plot(model, which = 1)
  # 存储模型摘要到列表
  mod_summaries[[col]] <- summary(model)
}

场景2:逐步添加数值变量建模(匹配原代码的逐步回归逻辑)

# 提取所有数值变量列名
numeric_cols <- names(pima_train)[sapply(pima_train, is.numeric)]
# 指定响应变量名(根据你的实际数据调整)
response_var <- "y"
# 移除响应变量本身,避免纳入预测因子
numeric_cols <- numeric_cols[numeric_cols != response_var]

mod_summaries <- list()

# 循环逐步增加预测变量
for(i in seq_along(numeric_cols)) {
  # 选取前i个数值变量作为预测因子
  selected_preds <- numeric_cols[1:i]
  # 构建多变量公式
  model_formula <- as.formula(paste(response_var, "~", paste(selected_preds, collapse = " + ")))
  # 直接在原数据集上拟合模型,无需生成子集
  model <- lm(formula = model_formula, data = pima_train)
  # 生成残差vs拟合图
  plot(model, which = 1)
  # 存储模型摘要
  mod_summaries[[i]] <- summary(model)
}

优化点说明

  • 零额外内存开销:用sapply(pima_train, is.numeric)直接在原数据集上判断数值列,仅生成列名字符向量,完全避免创建新的数值子集数据框。
  • 动态公式构建:通过paste()拼接公式字符串并转为公式对象,直接在原数据集上调用建模函数,无需切片生成新数据。
  • 适配两种需求:分别提供单变量逐个建模和逐步添加变量建模的代码,匹配不同业务场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:30:49