L'utilisation de la matrice de corrélation pour sélectionner les prédicteurs de régression est-elle correcte?

17

Il y a quelques jours, un de mes psychologues-chercheurs m'a parlé de sa méthode pour sélectionner des variables dans un modèle de régression linéaire. Je suppose que ce n'est pas bon, mais je dois demander à quelqu'un d'autre de m'en assurer. La méthode est:

Examinez la matrice de corrélation entre toutes les variables (y compris la variable dépendante Y) et choisissez les prédicteurs Xs, qui correspondent le plus à Y.

Il n'a mentionné aucun critère. Q: avait-il raison?

[Je pense que cette méthode de sélection est erronée, à cause de beaucoup de choses, comme c'est la théorie qui dit quels prédicteurs devraient être sélectionnés, ou même omis le biais variable (OVB).]

Lil'Lobster
la source
Je suggérerais de changer le titre en "Est-ce que l'utilisation de la matrice de corrélation pour sélectionner les prédicteurs de régression est correcte?" ou quelque chose de similaire pour être plus informatif. Un simple contre-exemple à votre question est une variable qui a une corrélation de 1 avec la variable dépendante - vous n'aimerez probablement pas utiliser celle-ci dans votre modèle.
Tim
3
La méthode est logique, mais elle ne fonctionne que si vous êtes limité à sélectionner exactement un régresseur. Si vous pouvez en sélectionner quelques-uns, cette méthode est interrompue. C'est parce qu'une combinaison linéaire de quelques X qui ne sont que faiblement corrélés avec Y peut avoir une corrélation plus grande avec Y qu'une combinaison linéaire de quelques X qui sont fortement corrélés avec Y. Rappelons que la régression multiple concerne des combinaisons linéaires, pas seulement individuelles effets ...
Richard Hardy
1
La corrélation est simplement une pente de régression standardisée pour régression simple avec une variable indépendante. Cette approche vous permet donc simplement de trouver la variable indépendante avec la plus grande valeur pour le paramètre de pente, mais cela devient plus compliqué avec plusieurs variables indépendantes.
ρX,Y=Cov(X,Y)σXσY
β^1=Cov(X,Y)σX
Tim
2
Ces réponses confirment ma réflexion sur cette «méthode», mais de nombreux psychologues utilisent ce type de sélection de variables :(
Lil'Lobster
Cela ressemble au «Leekasso» .
steveo'america

Réponses:

17

Si, pour une raison quelconque, vous n'incluez qu'une seule variable dans votre modèle, la sélection du prédicteur qui présente la corrélation la plus élevée avec présente plusieurs avantages. Parmi les modèles de régression possibles avec un seul prédicteur, alors ce modèle est celui avec le coefficient de régression standardisé le plus élevé et aussi (puisque est le carré de dans une régression linéaire simple ) le coefficient de détermination le plus élevé .yR2r

Mais il n'est pas clair pourquoi vous voudriez limiter votre modèle de régression à un seul prédicteur si vous avez des données disponibles pour plusieurs. Comme mentionné dans les commentaires, le simple fait de regarder les corrélations ne fonctionne pas si votre modèle peut inclure plusieurs variables. Par exemple, à partir de cette matrice de dispersion, vous pourriez penser que les prédicteurs pour vous devez inclure dans votre modèle sont (corrélation 0,824) et (corrélation 0,782) mais que (corrélation 0,134) n'est pas un prédicteur utile.x 1 x 2 x 3yx1x2x3

Matrice de nuage de points de variables corrélées

Mais vous vous trompez - en fait dans cet exemple, dépend de deux variables indépendantes, et , mais pas directement de . Cependant, est fortement corrélé avec , ce qui conduit également à une corrélation avec . En examinant la corrélation entre et isolément, cela pourrait suggérer que est un bon prédicteur de . Mais une fois que les effets de sont partialled sur en incluant dans le modèle, aucun tel reste de la relation.x 1 x 3 x 2 x 2 x 1 y y x 2 x 2 y x 1 x 1yx1x3x2x2x1yyx2x2yx1x1

require(MASS) #for mvrnorm 
set.seed(42) #so reproduces same result

Sigma <- matrix(c(1,0.95,0,0.95,1,0,0,0,1),3,3)
N <- 1e4
x <- mvrnorm(n=N, c(0,0,0), Sigma, empirical=TRUE)
data.df <- data.frame(x1=x[,1], x2=x[,2], x3=x[,3])
# y depends on x1 strongly and x3 weakly, but not directly on x2
data.df$y <- with(data.df, 5 + 3*x1 + 0.5*x3) + rnorm(N, sd=2)

round(cor(data.df), 3)
#       x1    x2    x3     y
# x1 1.000 0.950 0.000 0.824
# x2 0.950 1.000 0.000 0.782
# x3 0.000 0.000 1.000 0.134
# y  0.824 0.782 0.134 1.000
# Note: x1 and x2 are highly correlated
# Since y is highly correlated with x1, it is with x2 too
# y depended only weakly on x3, their correlation is much lower

pairs(~y+x1+x2+x3,data=data.df, main="Scatterplot matrix")
# produces scatter plot above

model.lm <- lm(data=data.df, y ~ x1 + x2 + x3)
summary(model.lm)

# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  4.99599    0.02018 247.631   <2e-16 ***
# x1           3.03724    0.06462  47.005   <2e-16 ***
# x2          -0.02436    0.06462  -0.377    0.706    
# x3           0.49185    0.02018  24.378   <2e-16 ***

Cette taille d'échantillon est suffisamment grande pour surmonter les problèmes de multicolinéarité dans l'estimation des coefficients pour et . Le coefficient de est estimé près de zéro et avec une valeur p non significative . Le vrai coefficient est nul. L'ordonnée à l'origine et les pentes pour et sont estimées près de leurs valeurs réelles de 5, 3 et 0,5 respectivement. Notez que s'avère correctement être un prédicteur significatif, même si cela n'est pas évident à partir de la matrice de dispersion.x 2 x 2 x 1 x 3 x 3x1x2x2x1x3x3

Et voici un exemple qui est encore pire:

Sigma <- matrix(c(1,0,0,0.5,0,1,0,0.5,0,0,1,0.5,0.5,0.5,0.5,1),4,4)
N <- 1e4
x <- mvrnorm(n=N, c(0,0,0,0), Sigma, empirical=TRUE)
data.df <- data.frame(x1=x[,1], x2=x[,2], x3=x[,3], x4=x[,4])
# y depends on x1, x2 and x3 but not directly on x4
data.df$y <- with(data.df, 5 + x1 + x2 + x3) + rnorm(N, sd=2)

round(cor(data.df), 3)
#       x1    x2    x3    x4     y
# x1 1.000 0.000 0.000 0.500 0.387
# x2 0.000 1.000 0.000 0.500 0.391
# x3 0.000 0.000 1.000 0.500 0.378
# x4 0.500 0.500 0.500 1.000 0.583
# y  0.387 0.391 0.378 0.583 1.000

pairs(~y+x1+x2+x3+x4,data=data.df, main="Scatterplot matrix")

model.lm <- lm(data=data.df, y ~ x1 + x2 + x3 +x4)
summary(model.lm)
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  4.98117    0.01979 251.682   <2e-16 ***
# x1           0.99874    0.02799  35.681   <2e-16 ***
# x2           1.00812    0.02799  36.016   <2e-16 ***
# x3           0.97302    0.02799  34.762   <2e-16 ***
# x4           0.06002    0.03958   1.516    0.129

x 1 x 2 x 3 x 4 y yyx1x2x3x4x1x2x3X4yy peut en fait trouver la variable qui n'appartient pas du tout au modèle.

Silverfish
la source
Mais ... tout cela s'applique-t-il à la situation, lorsque ce `` collègue psychologue '' choisit - disons - 4 des 10 variables Xs, qui sont fortement corrélées avec Y (coefficients de corrélation <0,7), laissant six autres Xs qui corrèlent modérément ou non tant avec Y?
Lil'Lobster
1
@Lili Quand j'ai le temps, je veux ajouter un exemple à cette réponse, dans lequel une variable devrait être incluse dans le modèle qui a (avant de séparer les autres variables) une corrélation nulle avec . Je vous suggère également de rechercher les concepts de corrélation confusionnelle et parasite , qui sont certainement pertinents en psychologie. y
Silverfish
0

Vous pouvez exécuter une analyse de régression par étapes et laisser le logiciel choisir les variables en fonction des valeurs F. Vous pouvez également consulter la valeur R ^ 2 ajustée lorsque vous exécutez la régression à chaque fois, pour voir si l'ajout d'une nouvelle variable contribue à votre modèle. Votre modèle peut avoir le problème de la multicolinéarité si vous utilisez simplement une matrice de corrélation et choisissez des variables avec une forte corrélation. J'espère que cela t'aides!

learning_stats
la source
6
La sélection par étapes conduit aux mêmes problèmes que la méthode décrite par OP: stata.com/support/faqs/statistics/stepwise-regression-problems notent également que la question portait sur cette certaine méthode et non sur la recherche de méthodes alternatives.
Tim
2
Il s'agit d'une méthode très basique pour la sélection de modèles - si votre objectif est strictement l'explication de la variance, l'utilisation de R2 par étapes peut être appropriée, mais si vous êtes intéressé par l'inférence, la prédiction, le test d'hypothèse, etc., alors vous devez penser bien au-delà de R2 (et peut-être même ignorer R2).
robin.datadrivers