Nombre maximal de variables indépendantes pouvant être entrées dans une équation de régression multiple

19

Quelle est la limite du nombre de variables indépendantes que l'on peut entrer dans une équation de régression multiple? J'ai 10 prédicteurs que j'aimerais examiner en termes de leur contribution relative à la variable de résultat. Dois-je utiliser une correction bonferroni pour ajuster pour plusieurs analyses?

Melissa Duncombe
la source

Réponses:

25

Vous devez penser à ce que vous entendez par «limite». Il y a des limites, par exemple lorsque vous avez plus de prédicteurs que de cas, vous rencontrez des problèmes dans l'estimation des paramètres (voir la petite simulation R au bas de cette réponse).

Cependant, j'imagine que vous parlez davantage de limites souples liées à la puissance statistique et aux bonnes pratiques statistiques. Dans ce cas, le langage des «limites» n'est pas vraiment approprié. Au contraire, des tailles d'échantillon plus grandes tendent à rendre plus raisonnable d'avoir plus de prédicteurs et le seuil de combien de prédicteurs est raisonnable tombe sans doute sur un continuum de caractère raisonnable. Vous pouvez trouver la discussion des règles empiriques pour la taille de l'échantillon dans la régression multiple pertinente, car de nombreuses règles empiriques font référence au nombre de prédicteurs.

Quelques points

  • Si vous vous préoccupez davantage de la prévision globale que de la signification statistique des prédicteurs individuels, il est probablement raisonnable d'inclure davantage de prédicteurs que si vous vous préoccupez de la signification statistique des prédicteurs individuels.
  • Si vous souhaitez davantage tester un modèle statistique spécifique lié à votre question de recherche (par exemple, comme cela est courant dans de nombreuses applications des sciences sociales), vous avez probablement des raisons d'inclure des prédicteurs particuliers. Cependant, vous pouvez également avoir la possibilité d'être sélectif dans les prédicteurs que vous incluez (par exemple, si vous avez plusieurs variables qui mesurent une construction similaire, vous ne pouvez inclure qu'une seule d'entre elles). Lorsque vous effectuez des tests de modèle basés sur la théorie, il y a beaucoup de choix, et la décision concernant les prédicteurs à inclure implique un lien étroit entre votre théorie et votre question de recherche.
  • Je ne vois pas souvent des chercheurs utiliser des corrections de bonferroni appliquées aux tests de signification des coefficients de régression. Une raison raisonnable à cela pourrait être que les chercheurs sont plus intéressés à évaluer les propriétés globales du modèle.
  • Si vous souhaitez évaluer l'importance relative des prédicteurs, je trouve utile d'examiner à la fois la relation bivariée entre le prédicteur et le résultat, ainsi que la relation entre le prédicteur et le contrôle des résultats pour d'autres prédicteurs. Si vous incluez de nombreux prédicteurs, il est souvent plus probable que vous incluiez des prédicteurs fortement intercorrélés. Dans de tels cas, l'interprétation des indices d'importance bivariée et basée sur le modèle peut être utile, car une variable importante au sens bivarié peut être masquée dans un modèle par d'autres prédicteurs corrélés ( j'élabore plus à ce sujet ici avec des liens ).


Une petite simulation R

J'ai écrit cette petite simulation pour mettre en évidence la relation entre la taille de l'échantillon et l'estimation des paramètres dans la régression multiple.

set.seed(1)

fitmodel <- function(n, k) {
  # n: sample size
  # k: number of predictors
  # return linear model fit for given sample size and k predictors
  x <- data.frame(matrix( rnorm(n*k), nrow=n))
  names(x) <- paste("x", seq(k), sep="")
  x$y <- rnorm(n)  
  lm(y~., data=x)
}

La fitmodelfonction prend deux arguments npour la taille de l'échantillon et kpour le nombre de prédicteurs. Je ne compte pas la constante comme prédicteur, mais elle est estimée. Je génère ensuite des données aléatoires et ajuste un modèle de régression prédisant une variable ay à partir de kvariables prédictives et renvoie l'ajustement.

Étant donné que vous avez mentionné dans votre question que vous vouliez savoir si 10 prédicteurs étaient trop, les appels de fonction suivants montrent ce qui se passe lorsque la taille de l'échantillon est de 9, 10, 11 et 12 respectivement. C'est-à-dire que la taille de l'échantillon est inférieure de un au nombre de prédicteurs à deux de plus que le nombre de prédicteurs

summary(fitmodel(n=9, k=10))
summary(fitmodel(n=10, k=10))
summary(fitmodel(n=11, k=10))
summary(fitmodel(n=12, k=10))

> résumé (fitmodel (n = 9, k = 10))

Call:
lm(formula = y ~ ., data = x)

Residuals:
ALL 9 residuals are 0: no residual degrees of freedom!

Coefficients: (2 not defined because of singularities)
            Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.31455         NA      NA       NA
x1           0.34139         NA      NA       NA
x2          -0.45924         NA      NA       NA
x3           0.42474         NA      NA       NA
x4          -0.87727         NA      NA       NA
x5          -0.07884         NA      NA       NA
x6          -0.03900         NA      NA       NA
x7           1.08482         NA      NA       NA
x8           0.62890         NA      NA       NA
x9                NA         NA      NA       NA
x10               NA         NA      NA       NA

Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared:     1,  Adjusted R-squared:   NaN 
F-statistic:   NaN on 8 and 0 DF,  p-value: NA 

La taille de l'échantillon est inférieure de un au nombre de prédicteurs. Il n'est possible d'estimer que 9 paramètres, dont l'un est la constante.

> résumé (fitmodel (n = 10, k = 10))

Call:
lm(formula = y ~ ., data = x)

Residuals:
ALL 10 residuals are 0: no residual degrees of freedom!

Coefficients: (1 not defined because of singularities)
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   0.1724         NA      NA       NA
x1           -0.3615         NA      NA       NA
x2           -0.4670         NA      NA       NA
x3           -0.6883         NA      NA       NA
x4           -0.1744         NA      NA       NA
x5           -1.0331         NA      NA       NA
x6            0.3886         NA      NA       NA
x7           -0.9886         NA      NA       NA
x8            0.2778         NA      NA       NA
x9            0.4616         NA      NA       NA
x10               NA         NA      NA       NA

Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared:     1,  Adjusted R-squared:   NaN 
F-statistic:   NaN on 9 and 0 DF,  p-value: NA 

La taille de l'échantillon est la même que le nombre de prédicteurs. Il n'est possible d'estimer que 10 paramètres, dont l'un est la constante.

> résumé (fitmodel (n = 11, k = 10))

Call:
lm(formula = y ~ ., data = x)

Residuals:
ALL 11 residuals are 0: no residual degrees of freedom!

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  -0.9638         NA      NA       NA
x1           -0.8393         NA      NA       NA
x2           -1.5061         NA      NA       NA
x3           -0.4917         NA      NA       NA
x4            0.3251         NA      NA       NA
x5            4.4212         NA      NA       NA
x6            0.7614         NA      NA       NA
x7           -0.4195         NA      NA       NA
x8            0.2142         NA      NA       NA
x9           -0.9264         NA      NA       NA
x10          -1.2286         NA      NA       NA

Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared:     1,  Adjusted R-squared:   NaN 
F-statistic:   NaN on 10 and 0 DF,  p-value: NA 

La taille de l'échantillon est un de plus que le nombre de prédicteurs. Tous les paramètres sont estimés, y compris la constante.

> résumé (fitmodel (n = 12, k = 10))

Call:
lm(formula = y ~ ., data = x)

Residuals:
        1         2         3         4         5         6         7         8         9        10        11 
 0.036530 -0.042154 -0.009044 -0.117590  0.171923 -0.007976  0.050542 -0.011462  0.010270  0.000914 -0.083533 
       12 
 0.001581 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  0.14680    0.11180   1.313   0.4144  
x1           0.02498    0.09832   0.254   0.8416  
x2           1.01950    0.13602   7.495   0.0844 .
x3          -1.76290    0.26094  -6.756   0.0936 .
x4           0.44832    0.16283   2.753   0.2218  
x5          -0.76818    0.15651  -4.908   0.1280  
x6          -0.33209    0.18554  -1.790   0.3244  
x7           1.62276    0.21562   7.526   0.0841 .
x8          -0.47561    0.18468  -2.575   0.2358  
x9           1.70578    0.31547   5.407   0.1164  
x10          3.25415    0.46447   7.006   0.0903 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.2375 on 1 degrees of freedom
Multiple R-squared: 0.995,  Adjusted R-squared: 0.9452 
F-statistic: 19.96 on 10 and 1 DF,  p-value: 0.1726 

La taille de l'échantillon est deux de plus que le nombre de prédicteurs, et il est enfin possible d'estimer l'ajustement du modèle global.

Jeromy Anglim
la source
Quelqu'un peut-il expliquer pourquoi les erreurs standard dans le premier scénario (n = 9, k = 10) sont NA? J'ai la formule d'erreur standard, mais je ne vois pas comment le dénominateur serait 0 pour que nous puissions obtenir les NA.
matsuo_basho
12

Je regarde souvent cela du point de vue de savoir si un modèle équipé d'un certain nombre de paramètres est susceptible de produire des prédictions hors échantillon qui sont aussi précises que les prédictions faites sur l'échantillon de développement de modèle original. Les courbes d'étalonnage, les erreurs quadratiques moyennes de X * Beta et les indices de discrimination prédictive sont quelques-unes des mesures généralement utilisées. C'est de là que viennent certaines règles de base, comme la règle 15: 1 (une taille d'échantillon effective de 15 par paramètre examiné ou estimé).

En ce qui concerne la multiplicité, un ajustement parfait pour la multiplicité, en supposant que le modèle se vérifie et que les hypothèses de distribution sont satisfaites, est le test global que tous les bêtas (autres que l'ordonnée à l'origine) sont nuls. Ceci est généralement testé en utilisant un rapport de vraisemblance ou un test F.

Il existe deux approches globales de développement de modèles qui ont tendance à bien fonctionner. (1) Avoir une taille d'échantillon adéquate et s'adapter à l'ensemble du modèle prédéfini, et (2) utiliser une estimation du maximum de vraisemblance pénalisée pour n'autoriser que autant de degrés de liberté effectifs dans la régression que la taille actuelle de l'échantillon le permet. [La sélection de variables par étapes sans pénalisation ne devrait jouer aucun rôle, car cela est connu pour ne pas fonctionner.]

Frank Harrell
la source
Ces règles générales sont-elles fondées sur des hypothèses concernant la taille des vrais coefficients de régression et la taille de la variance d'erreur? Aurais-je raison de penser que si l'on savait que la variance d'erreur était très faible, un rapport beaucoup plus petit de points de données aux paramètres serait acceptable?
mark999
1
C'est un excellent point que j'ai négligé de mentionner. La règle 15: 1 concerne les types de rapports signal / bruit observés en sciences biomédicales et sociales. Lorsque vous avez une faible variance résiduelle, vous pouvez estimer avec beaucoup plus de paramètres avec précision.
Frank Harrell
10

npmpmmnp

1mKpσ1/Journal(p)σ1Xσ1p

gappy
la source
6

En principe, il n'y a pas de limite en soi au nombre de prédicteurs que vous pouvez avoir. On peut en principe estimer 2 milliards de "betas". Mais ce qui se passe dans la pratique, c'est que sans données suffisantes ou informations préalables suffisantes, cela ne s'avérera pas un exercice très fructueux. Aucun paramètre particulier ne sera très bien déterminé et vous n'apprendrez pas grand-chose de l'analyse.

Maintenant, si vous n'avez pas beaucoup d'informations préalables sur votre modèle (structure du modèle, valeurs des paramètres, bruit, etc.), vous aurez besoin des données pour fournir ces informations. C'est généralement la situation la plus courante, ce qui est logique, car vous avez généralement besoin d'une assez bonne raison pour collecter des données (et dépenser des $$$) sur quelque chose que vous connaissez déjà assez bien. Si tel est votre cas, alors une limite raisonnable est d'avoir un grand nombre d'observations par paramètre. Vous avez 12 paramètres (10 bêtas de pente, 1 interception et un paramètre de bruit), donc plus de 100 observations devraient être en mesure de déterminer vos paramètres suffisamment bien pour pouvoir tirer des conclusions.

Mais il n'y a pas de règles "dures et rapides". Avec seulement 10 prédicteurs, vous ne devriez pas avoir de problème avec le temps de calcul (obtenez un meilleur ordinateur si vous le faites). Cela signifie principalement simplement faire plus de travail, car vous avez 11 dimensions de données à absorber, ce qui rend difficile la visualisation des données. Les principes de base de la régression avec une seule variable dépendante ne sont pas vraiment différents.

Le problème avec la correction bonferroni est que pour qu'il soit un moyen raisonnable d'ajuster votre niveau de signification sans sacrifier trop de puissance, vous devez que l'hypothèse que vous corrigez soit indépendante (c'est-à-dire que l'apprentissage d'une hypothèse est vraie ne vous dit pas si une autre hypothèse est vraie). Ce n'est pas le cas pour le "test t" standard en régression multiple pour un coefficient efficace nul, par exemple. La statistique de test dépend de quoi d'autre dans le modèle - qui est une façon détournée de dire que les hypothèses sont dépendantes. Ou, une façon plus fréquente de dire cela est que la distribution d'échantillonnage de la valeur t conditionnelle au zéro du prédicteur dépend de quels autres paramètres sont nuls. Donc, utiliser la correction bonferroni ici peut être en fait vous donner un "global" inférieur

probabilitéislogique
la source