通过查看所有 15 个可能的 lm 模型,也许更容易理解逐步回归是如何完成的。
这是为所有 15 种组合生成公式的快速方法。
library(leaps)
tmp<-regsubsets(mpg ~ wt + drat + disp + qsec, data=mtcars, nbest=1000, really.big=T, intercept=F)
all.mods <- summary(tmp)[[1]]
all.mods <- lapply(1:nrow(all.mods), function(x) as.formula(paste("mpg~", paste(names(which(all.mods[x,])), collapse="+"))))
head(all.mods)
[[1]]
mpg ~ drat
<environment: 0x0000000013a678d8>
[[2]]
mpg ~ qsec
<environment: 0x0000000013a6b3b0>
[[3]]
mpg ~ wt
<environment: 0x0000000013a6df28>
[[4]]
mpg ~ disp
<environment: 0x0000000013a70aa0>
[[5]]
mpg ~ wt + qsec
<environment: 0x0000000013a74540>
[[6]]
mpg ~ drat + disp
<environment: 0x0000000013a76f68>
每个模型的 AIC 值通过以下方式提取:
all.lm<-lapply(all.mods, lm, mtcars)
sapply(all.lm, extractAIC)[2,]
[1] 97.98786 111.77605 73.21736 77.39732 63.90843 77.92493 74.15591 79.02978 91.24052 71.35572
[11] 63.89108 65.90826 78.68074 72.97352 65.62733
让我们回到你的逐步回归。lm(mpg ~ wt + drat + disp + qsec) 的 extractAIC 值为 65.63(相当于上面列表中的模型 15)。
如果模型删除 disp (-disp),则 lm(mpg ~ wt + drat + qsec) 为 63.891(或列表中的模型 11)。
如果模型不删除任何东西(无),那么 AIC 仍然是 65.63
如果模型移除 qsec (-qsec),则 lm(mpg ~ wt + drat + disp) 为 65.908(模型 12)。
等等
基本上,摘要揭示了从完整模型中逐步删除一项的所有可能步骤,并通过按升序列出它们来比较 extractAIC 值。由于较小的 AIC 值更可能类似于 TRUTH 模型,因此在第一步中保留 (-disp) 模型。
再次重复该过程,但以保留的 (-disp) 模型为起点。术语被减去(“向后”)或减去/添加(“两者”)以允许模型的比较。由于相比之下的最低 AIC 值仍然是 (-disp) 模型,因此给出了进程停止和结果模型。
关于您的查询:“通过在逐步选择中再次添加 +disp 来尝试实现什么功能?”,在这种情况下,它实际上并没有做任何事情,因为所有 15 个模型中最好的模型是模型 11 , 即 lm(mpg ~ wt + drat + qsec)。
但是,在具有大量预测变量且需要许多步骤来解决的复杂模型中,添加最初删除的项对于提供最详尽的比较项的方式至关重要。
希望这在某种程度上有所帮助。