Aqui está um exemplo de contador usando dados gerados aleatoriamente e 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 queria o processo de pensamento: é principalmente um contraste entre curiosidade e preguiça. O post original falou sobre ter 10 variáveis preditoras, e foi isso que eu usei. A correlação 0,9 foi um bom número redondo com uma correlação razoavelmente alta, mas não muito alta (se for muito alta, então passo a passo provavelmente só pegaria 1 ou 2 preditores), imaginei que a melhor chance de encontrar um contra-exemplo incluiria uma quantidade justa de colinearidade. Um exemplo mais realista teria várias correlações diferentes (mas ainda uma quantidade razoável de colinearidade) e uma relação definida entre os preditores (ou um subconjunto deles) e a variável de resposta. O tamanho da amostra de 100 também foi o primeiro que tentei como um bom número redondo (e a regra geral diz que você deve ter pelo menos 10 observações por preditor). Eu tentei o código acima com as sementes 1 e 2, envolvi a coisa toda em um loop e tentei sementes diferentes sequencialmente. Na verdade, ele parou na semente 3, mas a diferença deR2 estava na décima quinta casa decimal, então achei que era o erro de arredondamento mais provável e o reiniciei com a comparação arredondando primeiro para 5 dígitos. Fiquei agradavelmente surpreso ao encontrar uma diferença assim que 15. Se não tivesse encontrado um contra-exemplo em um período de tempo razoável, eu teria começado a mexer nas coisas (a correlação, o tamanho da amostra etc.).