Hier ist ein Zählerbeispiel mit zufällig generierten Daten und 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' )
Wer wollte den Denkprozess: Es ist meist ein Kontrast zwischen Neugier und Faulheit. Der ursprüngliche Beitrag sprach davon, 10 Prädiktorvariablen zu haben, also habe ich das verwendet. Die 0,9-Korrelation war eine schöne runde Zahl mit einer ziemlich hohen Korrelation, aber nicht zu hoch (wenn sie zu hoch ist, würden schrittweise nur 1 oder 2 Prädiktoren erfasst). Ich dachte, die beste Chance, ein Gegenbeispiel zu finden, wäre ein gutes Maß an Kollinearität. Ein realistischeres Beispiel hätte verschiedene Korrelationen (aber immer noch ein gutes Maß an Kollinearität) und eine definierte Beziehung zwischen den Prädiktoren (oder einer Teilmenge davon) und der Antwortvariablen gehabt. Die Stichprobengröße von 100 war auch die erste, die ich als schöne runde Zahl ausprobiert habe (und die Faustregel besagt, dass Sie mindestens 10 Beobachtungen pro Prädiktor haben sollten). Ich habe den obigen Code mit den Samen 1 und 2 ausprobiert, dann das Ganze in eine Schleife gewickelt und verschiedene Samen nacheinander ausprobieren lassen. Eigentlich hörte es bei Samen 3 auf, aber der Unterschied inR2