Comment faire la sélection du sous-ensemble de régression logistique?

47

Je monte une famille de binômes dans R, et j'ai toute une troupe de variables explicatives, et j'ai besoin de trouver le meilleur (R au carré comme mesure, ça va). À part écrire un script pour parcourir différentes combinaisons aléatoires de variables explicatives et ensuite enregistrer qui donne les meilleurs résultats, je ne sais vraiment pas quoi faire. Et la leapsfonction de sauts de paquets ne semble pas effectuer de régression logistique.

Toute aide ou suggestion serait grandement appréciée.

Leendert
la source
Il existe des fonctions qui effectuent une recherche automatique. Vous devriez jeter un oeil à la fonction step . La section 5.4 illustre ce point: data.princeton.edu/R/glms.html
ocram
Je suis désolé mais mon message a été modifié de sorte qu'il ne pose plus ma question. J'ai 35 variables explicatives (26 significatives) dans mon modèle de régression logistique. J'ai besoin de la meilleure combinaison possible de 8, pas du meilleur sous-ensemble, et je n'ai à aucun moment été intéressé par une approche de style pas à pas ou par tous les sous-ensembles. Il n'y a pas de marge de manœuvre dans ce 8. J'ai juste pensé que quelqu'un pourrait savoir comment je pourrais adapter toutes les combinaisons de 8 variables explantoires et cela pourrait me dire lequel maximisait la probabilité J'ai un nombre fixe de paramètres, 8).
Leendert
Vous pouvez revenir à la version précédente de votre message ou combiner les deux modifications. Je suis sûr que @mpiktas était de bonne intention en essayant d'améliorer son apparence et n'a tout simplement pas remarqué les paramètres No..
chl
@ Tout le monde: Merci beaucoup. En fin de compte, j'ai utilisé beaucoup de choses différentes dans l'espoir qu'elles donneraient toutes des réponses similaires. Et ils l'ont fait. J'ai utilisé les packages BMA, bestglm et glmnet, ainsi que la fonction step. Modèles équipés avec tous, et il n'y avait pas de différence dans ce que BMA avec maxcol = 9 et l'étape considérée comme le meilleur modèle. Tous les experts dans le domaine autour de moi semblaient très satisfaits des variables et estimaient que c'était assez progressif. Alors merci pour toutes les contributions. J'ai vraiment tout utilisé.
Leendert
glmulti est également un bon package pour la meilleure sélection de sous-ensembles. Celui-ci vous permet de spécifier le nombre maximum de variables dans votre modèle, et vous permet également de prendre en compte tous les effets d'interaction possibles du 1er ordre.
Tom Wenseleers

Réponses:

28

Les méthodes pas à pas et "tous les sous-ensembles" sont généralement mauvaises. Voir Arrêt étape par étape: Pourquoi les méthodes étape par étape sont mauvaises et ce que vous devriez utiliser, par David Cassell et moi-même (nous avons utilisé SAS, mais la leçon s'applique) ou Stratégies de modélisation de régression de Frank Harrell. Si vous avez besoin d'une méthode automatique, je vous recommande LASSO ou LAR. Un package LASSO pour la régression logistique est disponible ici , un autre article intéressant est présenté sur LASSO pour la logistique.

Peter Flom - Rétablir Monica
la source
6
(+1) À propos des paquets R, il y a aussi glmnet (implémentation avec algorithme de descente de coordonnées., Friedman et coll.) Et pénalisé (permet de garder certaines variables non-palisées). Il est à noter que F. Harrell fournit une estimation pénalisée de ML pour les GLM (voir lrmson manuel RMS pour plus d’informations).
chl
(+1) Bel article, il semble que je doive commencer à aller bien au-delà des déclarations de l'auteur dans la question (ce n'est pas la première fois que je ne l'ai pas fait). @chl (+1) perfectionne aussi les suggestions alternatives.
Dmitrij Celov
@chl: +1 pour glmnet, c'est un excellent package.
Zach
1
@chl Merci! Un des problèmes avec R est de garder une trace des paquets (il y en a tellement!) Et lesquels sont les meilleurs. Les vues de tâches aident
Peter Flom - Rétablir Monica
2
Si vos variables sont colinéaires, mieux vaut utiliser un réseau élastique avec glmnet, par exemple avec alpha = 0,5, car LASSO a tendance à exclure de manière aléatoire des variables hautement colinéaires du modèle
Tom Wenseleers
15

R2AICBIC

La régression logistique est estimée par la méthode du maximum de vraisemblance, elle leapsn'est donc pas utilisée directement ici. Le paquetage bestglm est une extension de leapsto glm()functions (comme le recommande généralement la suite, consultez les vignettes ici).

Vous pouvez également être intéressé par l’article de David W. Hosmer, Borko Jovanovic et Stanley Lemeshow, Régression logistique des meilleurs sous-ensembles // Biométrie, vol. 45, n ° 4 (décembre 1989), p. 1265-1270 (généralement accessible par le biais des réseaux universitaires).

Dmitrij Celov
la source
2
R2BIC,AIC8BICAICR2
8
toute référence académique pourR2R2 is not an appropriate goodness-of-fit measure for logistic regression take an information criterion AICAIC or BICBIC
SIslam
une note sur bestglm, il utilise leapsà l'arrière-plan pour le calcul! Donc cela échouera s'il y a NA dans le jeu de données et affichera le message suivant: Error in leaps.setup(x, y, wt = weights, nbest = nbest, nvmax = nvmax, : NA/NaN/Inf in foreign function call (arg 3) Mais ce qui est intéressant, mon jeu de données n'a pas de NA mais quelques zéros mais cette fonction se plaint et donne le message exact ci-dessus !!
SIslam
glmnet est également bon, et peut également créer des modèles prenant en compte tous les effets d'interaction de 1er ordre possibles
Tom Wenseleers
6

Une idée serait d’utiliser une forêt aléatoire puis d’utiliser les mesures d’importance variable qu’elle génère pour choisir vos 8 meilleures variables. Une autre idée serait d'utiliser le paquetage "boruta" pour répéter ce processus plusieurs centaines de fois afin de trouver les 8 variables qui sont systématiquement les plus importantes pour le modèle.

Zach
la source
@Zach Suggérez-vous de vous fier aux RF pour effectuer la sélection des fonctionnalités, puis appliquer un GLM - dans ce cas, il existe un risque de sur-ajustement ou d'optimisme -, ou d'utiliser des RF (avec des mesures standard d'importance variable, ou sélection tout à fait pertinente) en tant qu'outil autonome?
chl
@chl: Je proposais d'utiliser les RF pour effectuer la sélection des fonctionnalités, puis appliquer le GLM. Je conviens qu'il y a un risque de sur-adaptation, mais le PO a déclaré qu'il avait besoin d'exactement 8 variables.
Zach
1
@Zach "exactement 8 variables" ... Ensuite, vous modifiez légèrement le seuil des variables d'intérêt potentielles en fonction d'une mesure d'importance variable (qui, grâce à la permutation et au double rééchantillonnage, est supposé être exempt de biais) et puis les réinjecter dans un GLM. IMHO, vous cassez le contrôle sur l'overfitting exercé par le sac. Ceci est également décrit dans ESLII de Hastie et al.: La sélection des caractéristiques, le cas échéant, doit être incluse dans la procédure de validation croisée (où la validation croisée inclut l'évaluation de la performance du modèle).
chl
@chl: Le paquetage r "boruta" ne se valide-t-il pas en exécutant plusieurs fois la forêt aléatoire? Voulez-vous dire fondamentalement que nous avons besoin d'une "méta-validation croisée", dans laquelle vous effectuez une sélection de variables et que vous ajustez votre modèle à des sous-ensembles aléatoires de données?
Zach
3
@Zach Mon idée était que l'ensachage, ou en particulier les RF, empêchait l'overfitting (dans une certaine mesure) à condition que vous restiez dans la même chaîne d'outils. Si vous utilisez les résultats de RF et que vous allez ensuite voir comment un autre modèle fonctionnerait avec les mêmes données, vous cassez la boucle CV. Mais pourquoi ne pas utiliser directement les RF pour la classification? Une autre solution consisterait à utiliser les RF sur un échantillon d'apprentissage, puis à appliquer le GLM sur un échantillon conservé (pouvant également faire l'objet d'une validation croisée).
chl
0

stats::stepfonction ou plus générale de MASS::stepAICsoutien de la fonction lm, glm( par exemple la régression logistique) et des aovmodèles familiaux.

Farid Cheraghi
la source