Une approche par étapes produit-elle le plus


8

Lorsque vous utilisez l'approche pas à pas pour sélectionner les variables, le modèle final est-il garanti d'avoir le plus haut possible R2? Autrement dit, l'approche par étapes garantit-elle un optimum global ou seulement un optimum local?

Par exemple, si j'ai 10 variables parmi lesquelles choisir et que je veux construire un modèle à 5 variables, le modèle final à 5 ​​variables créé par l'approche pas à pas aura-t-il le plus haut R2 de tous les modèles possibles à 5 variables qui auraient pu être construits?

Notez que cette question est purement théorique, c'est-à-dire que nous ne débattons pas R2 la valeur est optimale, qu'elle conduise à un sur-ajustement, etc.


2
Je pense que la sélection par étapes va vous donner le plus haut possible R2en ce sens qu'il sera biaisé pour être beaucoup plus élevé que le vrai modèle (c'est-à-dire qu'il n'aboutira pas au modèle optimal). Vous voudrez peut-être lire ceci .
gung - Rétablir Monica

10
Un maximum R2est atteint lorsque toutes les variables sont incluses. C'est clairement le cas car l'inclusion d'une nouvelle variable ne peut pas diminuerR2. En effet, dans quel sens voulez-vous dire «local» et «mondial»? La sélection des variables est un problème discret - choisissez-en un parmi2k sous-ensembles de kvariables - alors quel serait un voisinage local d'un sous-ensemble?
whuber

Concernant la modification: pourriez-vous décrire l’approche par étapes que vous envisagez? ( Ceux que je connais n'arrivent pas à un nombre spécifié de variables: une partie de leur objectif est de vous aider à décider du nombre de variables à utiliser.)
whuber

Pensez-vous qu'un niveau supérieur (brut) R2c'est une bonne chose? Voilà pourquoi ils ont ajustéR2, AIC, etc.
Wayne

1
Pour le R2 maximum, incluez toutes les interactions à 2 et 3 voies, diverses transformations (log, inverse, carré, etc.), phases de la lune, etc.
Zach

Réponses:


5

Vous n'obtiendrez pas nécessairement le R le plus élevé2 car vous ne comparez qu'un sous-ensemble de modèles possibles et vous risquez de manquer celui avec le R le plus élevé2qui comprendrait toutes les variables. Pour obtenir ce modèle, vous devez regarder tous les sous-ensembles. Mais le meilleur modèle n'est peut-être pas celui qui a le R le plus élevé2 car il se peut que vous vous ajustiez trop car il inclut toutes les variables.


1
Je le crois aussi, mais pour être convaincant - parce que vous n'avez pas fourni d'argument rigoureux - il serait très agréable de voir un exemple concret. Il serait encore plus agréable de comprendre pourquoi une procédure par étapes convergeant versk les variables (disons) pourraient ne pas converger vers lesR2 combinaison de kvariables (qui ne nécessiteraient pas de rechercher tous les sous-ensembles).
whuber

Les procédures pas à pas dépendent de l'endroit où vous commencez. Si vous commencez avec deux ensembles de variables initiaux différents, cela pourrait vous conduire à des solutions différentes. Le fait est qu'à chaque étape il y a un critère sur la statistique F pour une variable à entrer et als pour une variable à quitter. La statistique F dépend des variables qui sont actuellement dans le modèle. La procédure s'arrête lorsque ni le F pour entrer ni le F pour sortir ne sont statistiquement significatifs au seuil spécifié. Cela peut donc facilement se produire avant d'ajouter toutes les variables au modèle.
Michael R. Chernick

Cela pourrait facilement être démontré avec un exemple, disons en SAS avec la sortie collée dans la réponse.
Michael R. Chernick

1
Je suis d'accord - mais trouver le contre-exemple est la partie difficile, @Michael, de ne pas utiliser le logiciel!
whuber

De toute façon, c'est beaucoup de travail!
Michael R. Chernick

13

Voici un exemple de compteur utilisant des données générées aléatoirement et 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' )

R2

whuber voulait le processus de réflexion: c'est surtout un contraste entre la curiosité et la paresse. Le post original parlait d'avoir 10 variables prédictives, c'est donc ce que j'ai utilisé. La corrélation de 0,9 était un bon chiffre rond avec une corrélation assez élevée, mais pas trop élevée (si elle est trop élevée, alors pas à pas ne prendrait probablement que 1 ou 2 prédicteurs), j'ai pensé que la meilleure chance de trouver un contre-exemple inclurait une bonne quantité de colinéarité. Un exemple plus réaliste aurait eu différentes corrélations différentes (mais toujours une bonne quantité de colinéarité) et une relation définie entre les prédicteurs (ou un sous-ensemble d'entre eux) et la variable de réponse. La taille de l'échantillon de 100 était également la première que j'ai essayée comme un joli chiffre rond (et la règle de base dit que vous devriez avoir au moins 10 observations par prédicteur). J'ai essayé le code ci-dessus avec les graines 1 et 2, puis j'ai enveloppé le tout dans une boucle et je l'ai fait essayer différentes graines séquentiellement. En fait, il s'est arrêté à la graine 3, mais la différenceR2était à la 15e décimale, donc je me suis dit que c'était plus probablement une erreur d'arrondi et je l'ai redémarré avec la première arrondi de comparaison à 5 chiffres. J'ai été agréablement surpris qu'il ait trouvé une différence dès 15. S'il n'avait pas trouvé de contre-exemple dans un délai raisonnable, j'aurais commencé à peaufiner les choses (corrélation, taille de l'échantillon, etc.).


2
+1 Bravo! Les exemples sont beaucoup plus convaincants que d'invoquer des possibilités hypothétiques. Mais si jamais vous en avez l'occasion, pensez à partager le processus de réflexion que vous avez suivi pour construire ce contre-exemple.
whuber

Votre compte rendu de la procédure est inestimable: c'est le genre de choses révélatrices et pratiques qui n'apparaissent que dans les articles les plus lucides, le cas échéant, et doivent autrement être apprises directement des autres ou réinventées. (J'aimerais pouvoir ajouter un autre vote positif.)
whuber

4

Si vous voulez vraiment obtenir le meilleur R2vous devez regarder (comme @Michael l'a dit) tous les sous-ensembles. Avec beaucoup de variables, ce n'est parfois pas faisable, et il existe des méthodes pour se rapprocher sans tester chaque sous-ensemble. Une méthode est appelée (IIRC) "sauts et limites" et se trouve dans le paquet R bondit.

Cependant, cela donnera des résultats très biaisés. les valeurs de p seront trop faibles, les coefficients biaisés loin de 0, les erreurs standard trop petites; et tout cela par des montants impossibles à estimer correctement.

La sélection pas à pas présente également ce problème.

Je recommande fortement contre toute méthode de sélection des variables automatisée, car la pire chose à leur sujet est qu'ils vous empêcher de penser; ou, pour le dire autrement, un analyste de données qui utilise des méthodes automatisées dit à son patron de le payer moins cher.

Si vous devez utiliser une méthode automatisée, vous devez séparer vos données en ensembles de formation et de test, ou éventuellement en ensembles de formation, de validation et finaux.


1
la sélection pas à pas n'est pas aussi mauvaise que vous le dites si le but est de prédire ou d'utiliser la séquence de modèles produits. en fait, de nombreux algorithmes rj mcmc pour la sélection de modèles sont fondamentalement «aléatoires par étapes» car les propositions consistent généralement à ajouter ou à supprimer une variable.
Probabilislogic

1
Stepwise s'est avéré horrible. Pour plus de détails, voir le livre de Frank Harrell, Regression Modeling Strategies. Qu'est-ce que RJ? C'est vrai que la séquence des modèles peut dire quelque chose d'utile, mais alors quoi? J'ai aussi beaucoup de problèmes avec les valeurs de p, mais c'est un autre problème (ou voir The Cult of Significance Testing)
Peter Flom

1
@PeterFlom - RJ est un saut réversible. pas à pas est tout simplement un moyen rapide de rechercher l'espace modèle, ce qui rend le problème moins sujet à l'explosion combinatoire. Mais il a besoin de "redémarrages multiples" pour éviter qu'il ne reste bloqué en mode local. Je devrai avoir ce livre, je pense.
probabilitéislogic

2
@Macro, même dans le cas orthogonal, vous voyez pourquoi le (naïf) p-les valeurs seraient fausses, correct? Vous voyez aussi pourquoi|β^|du modèle "sélectionné" tendrait à être (c'est-à-dire stochastiquement) plus grand que dans le cas non sélectionné, n'est-ce pas? Supposons que vous n'aviez que deux variables orthogonales, les deuxβi=0, et votre sélection de modèle consistait à choisir celui avec le plus bas p-valeur à conserver (identique au choix de la plus grande ampleur).
cardinal

1
@cardinal, je vois. Donc, cela est simplement dû au fait que lorsque vous avez un échantillon iidX1,...,Xn, puis
E(min{X1,...,Xn})<E(X1)
si je vous comprends bien. Ça a du sens.
Macro
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.