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

R语言向前逐步回归如何设置多最小模型强制包含LE类变量

基于R语言向前逐步回归强制保留至少1个LE类变量的实现方案

原生step函数的scope.lower参数仅支持单个公式,无法直接指定多个可选初始最小模型,因此采用「遍历所有合法初始模型+统一择优」的方案实现需求。

步骤1:定义公共参数

# 定义纳入所有变量的最大模型
formule_big <- "Q ~ 0 + Q_minus_1h + Q_minus_2h + Q_minus_3h + Q_minus_4h + Q_minus_5h + Q_minus_6h + LE_6h + LE_12h + LE_18h + LE_24h + LE_30h + LE_36h"
biggest <- formula(lm(formule_big, Sub_fit))

# 提取所有LE类备选变量名
le_vars <- c("LE_6h", "LE_12h", "LE_18h", "LE_24h", "LE_30h", "LE_36h")

步骤2:遍历所有合法初始模型运行向前逐步回归

# 存储所有逐步回归结果的列表
step_results <- list()

# 逐个以单个LE变量为初始最小模型运行向前逐步
for (le_col in le_vars) {
  # 构造当前迭代的最小模型公式
  smallest_form <- as.formula(paste0("Q ~ 0 + ", le_col))
  # 构造初始回归模型
  init_model <- lm(smallest_form, data = Sub_fit)
  # 运行向前逐步回归,trace=0关闭过程日志输出,需查看过程可改为1
  cur_step_res <- step(
    object = init_model,
    direction = "forward",
    scope = list(lower = smallest_form, upper = biggest),
    trace = 0
  )
  # 存储当前迭代结果和对应AIC值用于后续择优
  step_results[[le_col]] <- list(
    model = cur_step_res,
    aic = AIC(cur_step_res)
  )
}

步骤3:筛选最优模型

# 提取所有模型的AIC值
all_aic <- sapply(step_results, function(x) x$aic)
# 选取AIC最小的模型作为最终最优模型
best_model <- step_results[[which.min(all_aic)]]$model

补充说明

  • 若需更换择优指标,可将AIC(cur_step_res)替换为BIC、调整R方等对应指标的计算代码即可
  • 若要限制最终模型的变量数量,可在存储结果时额外记录模型自由度,筛选时增加对应约束条件
  • 该方案完全基于base R原生函数实现,无需安装额外依赖包

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:36:07