R中的逐步回归-如何运作?


15

我正在尝试使用阶跃函数来理解R中逐步回归和向后回归之间的基本区别。对于逐步回归,我使用了以下命令

  step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="both")

对于以上代码,我得到了以下输出。

向前

对于后向变量选择,我使用了以下命令

 step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="backward")

我得到以下输出以供后退

向后

据我所知,当未指定任何参数时,除非在R中指定了参数“ upper”和“ lower”,否则逐步选择将作为向后选择。但是,在逐步选择的输出中,会在+中添加+ disp第二步。通过在逐步选择中再次添加+ disp来实现的功能是什么?为什么R在第二步中加上+ disp,而结果却与向后选择相同(AIC值和模型选择值)。R在逐步选择中如何工作?

我真的很想了解此功能在R中的工作方式。在此先感谢您的帮助!

Answers:


16

通过查看所有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模型,因此请在步骤1中保留(-disp)模型。

再次重复该过程,但以保留的(-disp)模型为起点。可以将术语相减(“向后”)或相减/相加(“两者”)以进行模型比较。由于相比较而言,最​​低的AIC值仍是(-disp)模型,因此将给出过程停止和结果模型。

关于您的查询:“通过在逐步选择中再次添加+ disp来实现的功能是什么?”,在这种情况下,它实际上什么也没做,因为在所有15个模型中,最佳模型是11 ,即lm(mpg〜wt + drat + qsec)。

但是,在具有大量预测变量的复杂模型中,需要大量步骤来解决,将最初删除的项加回来对于提供最详尽的比较项方法至关重要。

希望以某种方式提供帮助。


6
“因为较小的AIC值更可能类似于TRUTH模型”,这是直截了当的。逐步模型构建大约有可能保留错误的预测变量,而拒绝真实的预测变量……还有许多其他问题:stats.stackexchange.com/questions/115843/…–
Alexis,

2
显然是骗人的。这就是基于单一标准(例如逐步回归)进行模型选择的原因。
亚当·奎克

@Alexis喜欢您的链接建议。
亚当·奎克

3

这是一个简化的响应。首先,这两个过程都尝试降低给定模型的AIC,但是它们以不同的方式进行。然后,基本的区别在于,在向后选择过程中,您只能在任何步骤中丢弃模型中的变量,而在逐步选择中,还可以将变量添加到模型中。

关于逐步选择中的输出,通常,输出显示您订购了减少AIC的替代方案,因此任何步骤的第一行都是您的最佳选择。然后,+disp在第三行中有一个,因为将变量添加到模型中将是降低AIC的第三个最佳选择。但是显然,最好的选择是<none>,这意味着什么也不做,该过程将停止并为您提供与向后选择相同的结果。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.