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

如何获取R语言逐步回归(Stepwise Regression)每一步的系数?

R语言逐步回归获取各步骤系数的实现方法

在R中使用step()进行向前逐步回归时,完全可以获取每一步的系数,实现方式如下:

核心方法:利用step()的keep参数捕获每一步模型

step()函数提供了keep参数,允许我们指定一个函数,在每一步拟合完成后保存当前模型的信息(包括系数)。

具体实现代码

基于你原有的代码,修改如下:

# 1. 拟合全模型和截距-only模型
model_scicareer_all <- glm(scicareer ~ .,
                           family = binomial(link = "logit"), data = clean_data)
intercept_only <- glm(scicareer ~ -1,
                      family = binomial(link = "logit"), data = clean_data)

# 2. 定义保存每一步系数的函数
keep_coef <- function(fit) {
  list(coefficients = coef(fit))
}

# 3. 运行逐步回归,启用keep参数捕获每一步系数
forward <- step(intercept_only, direction='forward', 
                scope=formula(model_scicareer_all), 
                trace=1000, keep = keep_coef)

# 4. 提取并整理所有步骤的系数为表格
step_coefs <- lapply(forward$keep, function(x) as.data.frame(t(x$coefficients)))
coef_df <- do.call(rbind, step_coefs)
# 为行命名对应步骤
rownames(coef_df) <- paste0("Step ", 1:nrow(coef_df))

# 查看最终整理后的系数表格
print(coef_df)

简化版实现

如果需要保留每一步的完整模型,也可以直接保存模型对象,后续再提取系数:

# 运行逐步回归时直接保存每一步模型
forward <- step(intercept_only, direction='forward', 
                scope=formula(model_scicareer_all), 
                trace=1000, keep = function(fit) fit)

# 提取每一步模型的系数并整理
step_coefs <- lapply(forward$keep, coef)
coef_df <- as.data.frame(do.call(rbind, step_coefs))
rownames(coef_df) <- paste0("Step ", seq_along(step_coefs))

print(coef_df)

说明

  • trace=1000会输出每一步的变量选择过程,若不需要冗余输出可改为trace=0
  • 整理后的coef_df会以表格形式展示每一步的所有系数,未纳入该步骤的变量系数会显示为NA

内容的提问来源于stack exchange,提问作者Juan Pedro Ross

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:25:22