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
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.