Y a-t-il des circonstances où une régression pas à pas devrait être utilisée?

13

La régression pas à pas avait été surutilisée dans de nombreux articles biomédicaux dans le passé, mais cela semble s'améliorer avec une meilleure éducation de ses nombreux problèmes. De nombreux critiques plus âgés le demandent cependant. Quelles sont les circonstances dans lesquelles la régression pas à pas a un rôle et devrait être utilisée, le cas échéant?

bobmcpop
la source
6
Je l'utilise souvent lors des cours pour illustrer l'idée qu'il ne devrait pas être utilisé.
gung - Réintègre Monica
1
(+1) Merci @gung Je ne suis pas statisticien et j'ai eu du mal à défendre cela même si je sais que c'est correct. Je trouve cela particulièrement difficile car 1) ce très bon article souvent cité ne rentre pas dans les détails et ... (ctd)
bobmcpop
2
(ctd) et 2) les critiques de l'étape par étape semblent souvent le faire pour sélectionner parmi un grand nombre de variables ou pour l'exploration de données. Dans le monde biomédical, les calculs de taille d'échantillon prennent souvent en compte le nombre de covariables attendues, de sorte que les modèles complets ne sont jamais si grands au départ, et chaque var a déjà une raison «biologique» préalable à inclure. Pensez-vous que pas à pas ne devrait pas non plus être utilisé dans ces circonstances?
bobmcpop
3
Je fais du conseil statistique pour la recherche biomédicale. Je n'utilise pas par étapes. Je n'ai pas demandé à beaucoup de gens (ils pourraient supposer que je l'utiliserais simplement si cela pouvait aider leur projet), mais quand les gens le demandent, je leur dis que c'est invalide et je dis pourquoi.
gung - Réintégrer Monica

Réponses:

11

n>>pnpnp que de beaucoup plus que le facteur parfois cité de 20).

Bien sûr, la raison pour laquelle la plupart des gens sont tentés de faire quelque chose comme une régression pas à pas est,

  1. car il ne demande pas beaucoup de calculs (si vous ne faites pas le bootstrapping approprié, mais que vos résultats ne sont pas fiables),
  2. parce qu'il fournit des instructions claires "est dans le modèle" versus "n'est pas dans le modèle" (qui sont très peu fiables dans la régression pas à pas standard; quelque chose qu'un bootstrapping correct rendra généralement clair de sorte que ces instructions ne seront généralement pas si claires) et
  3. np

C'est-à-dire qu'une méthode comme la régression pas à pas serait (si elle avait de bonnes caractéristiques de fonctionnement) particulièrement intéressante dans ces situations, quand elle n'avait pas de bonnes caractéristiques de fonctionnement.

Björn
la source
3
(+1) Des méthodes par étapes et connexes peuvent également être appropriées pour les modèles prédictifs dans des situations d'aiguille dans une botte de foin, lorsque de nombreux coefficients sont négligeables et seulement quelques grands par rapport à la variance d'erreur. Voir l'exemple 3 de Tibshirani (1996), Retrait et sélection de la régression via le Lasso , JRSS B , 58 , 1 - bien que même ici, la garotte non négative gagne.
Scortchi - Réintégrer Monica
3
Je ne comprends pas très bien le dernier paragraphe. Peut-être pourrait-il être reformulé? De plus, qu'en est-il de 3: je ne vois pas d'argument direct, peut-être que quelque chose est censé être facile à déduire là-bas?
Richard Hardy
1
pn
11

Deux cas dans lesquels je ne m'opposerais pas à une régression par étapes sont

  1. L'analyse exploratoire des données
  2. Modèles prédictifs

Dans ces deux cas d'utilisation très importants, vous n'êtes pas tellement préoccupé par l'inférence statistique traditionnelle, donc le fait que les valeurs p, etc., ne soient plus valables est peu préoccupant.

Par exemple, si un document de recherche disait "Dans notre étude pilote, nous avons utilisé une régression pas à pas pour trouver 3 variables intéressantes sur 1000. Dans une étude de suivi avec de nouvelles données, nous avons montré que ces 3 variables intéressantes étaient fortement corrélées avec la résultat d'intérêt ", je n'aurais aucun problème avec l'utilisation de la régression pas à pas. De même, "Nous avons utilisé une régression pas à pas pour construire un modèle prédictif. Ce modèle alternatif X préformé dans notre ensemble de données sur les MSE" me convient parfaitement.

Pour être clair, je ne dis pas que la régression par étapes est la meilleure façon d'aborder ces problèmes. Mais c'est facile et peut vous donner des solutions satisfaisantes.

ÉDITER:

Dans les commentaires, la question se pose de savoir si l'AIC par étapes peut réellement être utile pour la prédiction. Voici une simulation qui montre qu'il fait beaucoup mieux que la régression linéaire avec toutes les covariables, et presque aussi bien que les réseaux élastiques avec la pénalité choisie par validation croisée.

Je ne prendrais pas cette simulation comme la fin de la discussion; il n'est pas trop difficile de trouver un scénario dans lequel l'AIC par étapes se comportera moins bien. Mais ce n'est vraiment pas un scénario déraisonnable, et exactement le type de situation pour laquelle les filets élastiques sont conçus (forte corrélation des covariables avec très peu d'effets importants)!

library(leaps)
library(glmnet)
nRows <- 1000
nCols <- 500

# Seed set For reproducibility. 
# Try changing for investigation of reliability of results
set.seed(1)

# Creating heavily correlated covariates
x_firstHalf  <- matrix(rnorm(nRows * nCols / 2), nrow = nRows)
x_secondHalf <- x_firstHalf + 0.5 * 
                matrix(rnorm(nRows * nCols / 2), nrow = nRows) 
x_mat        <- cbind(x_firstHalf, x_secondHalf) + rnorm(nRows)

# Creating beta's. Most will be of very small magnitude
p_large = 0.01
betas <- rnorm(nCols, sd = 0.01) + 
         rnorm(nCols, sd = 4) * rbinom(nCols, size = 1, prob = p_large)
y     <- x_mat %*% betas + rnorm(nRows, sd = 4)

all_data           <- data.frame(y, x_mat)
colnames(all_data) <- c('y', paste('x', 1:nCols, sep = '_'))

# Holding out 25% of data for validation
holdout_index <- 1:(nRows * .25) 
train_data    <- all_data[-holdout_index, ]
validate_data <- all_data[holdout_index, ]

mean_fit <- lm(y ~ 0, data = train_data)
full_fit <- lm(y ~ ., data = train_data)
step_fit <- step(mean_fit, 
                 scope = list(lower = mean_fit, upper = full_fit), 
                 direction = "forward", steps = 20, trace = 0)

glmnet_cvRes <- cv.glmnet(x = as.matrix(train_data[,-1]), 
                          y = as.numeric(train_data$y)   )

full_pred   <- predict(full_fit, validate_data)
step_pred   <- predict(step_fit, validate_data)
glmnet_pred <- predict(glmnet_cvRes, as.matrix(validate_data[,-1]), s='lambda.min')

sd(full_pred - validate_data$y)    # [1] 6.426117
sd(step_pred - validate_data$y)    # [1] 4.233672
sd(glmnet_pred - validate_data$y)  # [1] 4.127171
# Note that stepwise AIC does considerably better than using all covariates 
# in linear regression, and not that much worse than penalized methods
# with cross validation!!

Note latérale:

Je ne suis vraiment pas un fan de la régression pas à pas pour de nombreuses raisons, donc je me sens un peu maladroit d'avoir pris cette position pour la défendre. Mais je pense simplement qu'il est important d'être précis sur ce que je n'aime pas.

Cliff AB
la source
2
Dans quels autres scénarios est-il couramment utilisé (dans la littérature biomédicale) à l'exception de ces deux indications? Je n'ai rencontré que son utilisation pour les modèles prédictifs, mais il n'est pas conseillé, par exemple .
bobmcpop
5
@bobmcpop: le gros problème est d'utiliser des valeurs de p, des intervalles de confiance, après une régression pas à pas, comme cela est mentionné dans l'article que vous avez cité. Les modèles utilisés uniquement pour la prédiction (pas seulement les modèles avec prédicteurs) ne se soucient généralement pas des valeurs de p, mais plutôt de la mesure dans laquelle l'erreur hors échantillon est réduite.
Cliff AB du
1
@ Björn: eh bien, comme je l'ai dit à la fin, je ne pense pas que ce soit généralement la meilleure méthode pour le faire par tous les moyens. Mais ce n'est pas invalide, et vous pouvez vous retrouver avec des résultats raisonnables. En tant que tel, sa force est vraiment sa facilité d'utilisation: si vous avez un modèle qui prend des covariables et renvoie des probabilités, vous pouvez faire une AIC par étapes. Vous pouvez peut-être faire mieux avec quelque chose comme LASSO ... mais vous ne le pouvez pas si c'est un nouveau modèle de fantaisie ou si vous utilisez Excel.
Cliff AB
4
(+1) J'aurais dit que glmnet a été conçu pour prendre ce genre de situation, entre autres, dans sa foulée (ce qu'il semble); tandis que les méthodes de sélection des prédicteurs sans retrait y sont particulièrement adaptées. Il pourrait être intéressant de comparer les approches quand il y a des «effets effilants» plutôt que quelques grands et plusieurs petits.
Scortchi - Réintégrer Monica
2
J'ai modifié votre code pour le rendre plus facile à lire et plus facile à copier-coller dans un fichier de code ou une console. J'espère que tu aimes. Si vous ne le faites pas, annulez-le avec mes excuses.
gung - Rétablir Monica