おそらく、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)です。
等
基本的に、要約は、完全なモデルからの1項のすべての可能な段階的除去を明らかにし、それらを昇順でリストすることにより、extractAIC値を比較します。AIC値が小さいほどTRUTHモデルに似ている可能性が高いため、ステップ1で(-disp)モデルを保持します。
プロセスは再び繰り返されますが、開始点として保持(-disp)モデルが使用されます。項は、モデルの比較を可能にするために、減算(「後方」)または減算/加算(「両方」)されます。比較で最も低いAIC値はまだ(-disp)モデルであるため、プロセス停止と結果のモデルが指定されます。
あなたのクエリに関して:「ステップワイズ選択で再度+ dispを追加することで達成しようとしている関数は何ですか?」、この場合、それは実際には何もしません。cosは15モデルすべてでモデル11です。 、すなわちlm(mpg〜wt + drat + qsec)。
ただし、解決するために多数のステップを必要とする多数の予測変数を持つ複雑なモデルでは、最初に削除された用語を追加し直すことは、用語を比較する最も包括的な方法を提供するために重要です。
これが何らかの形で役立つことを願っています。