これは、ランダムに生成されたデータとRを使用した反対の例です。
library(MASS)
library(leaps)
v <- matrix(0.9,11,11)
diag(v) <- 1
set.seed(15)
mydat <- mvrnorm(100, rep(0,11), v)
mydf <- as.data.frame( mydat )
fit1 <- lm( V1 ~ 1, data=mydf )
fit2 <- lm( V1 ~ ., data=mydf )
fit <- step( fit1, formula(fit2), direction='forward' )
summary(fit)$r.squared
all <- leaps(mydat[,-1], mydat[,1], method='r2')
max(all$r2[ all$size==length(coef(fit)) ])
plot( all$size, all$r2 )
points( length(coef(fit)), summary(fit)$r.squared, col='red' )
whuberは思考プロセスを望んでいました。それは主に好奇心と怠惰の対比です。元の投稿では、10個の予測子変数を使用することを説明していたため、これを使用しました。0.9の相関はかなり高い相関を備えた適切なラウンド数でしたが、高すぎません(高すぎる場合、ステップワイズは1つまたは2つの予測子のみを取得する可能性が高いです)。かなりの量の共線性。より現実的な例では、さまざまな異なる相関(ただし、かなりの量の共線性)と、予測子(またはそれらのサブセット)と応答変数との間に定義された関係がありました。100のサンプルサイズは、私が最初に試した最初の数でもありました(そして、経験則では、予測子ごとに少なくとも10個の観測値があるはずだと言っています)。上記のコードをシード1と2で試してから、全体をループでラップし、さまざまなシードを順番に試してもらいました。実際にはシード3で停止しましたが、R2