Si, por alguna razón, va a incluir solo una variable en su modelo, entonces seleccionar el predictor que tiene la mayor correlación con tiene varias ventajas. De los posibles modelos de regresión con un solo predictor, este modelo es el que tiene el coeficiente de regresión estandarizado más alto y también (dado que R 2 es el cuadrado de r en una regresión lineal simple ) el coeficiente de determinación más alto .yR2r
Pero no está claro por qué querría restringir su modelo de regresión a un predictor si tiene datos disponibles para varios. Como se menciona en los comentarios, solo mirar las correlaciones no funciona si su modelo puede incluir varias variables. Por ejemplo, a partir de esta matriz de dispersión, podría pensar que los predictores para que debe incluir en su modelo son x 1 (correlación 0.824) y x 2 (correlación 0.782) pero que x 3 (correlación 0.134) no es un predictor útil.yx1x2x3
Pero se equivocaría: de hecho, en este ejemplo, depende de dos variables independientes, x 1 y x 3 , pero no directamente en x 2 . Sin embargo, x 2 está altamente correlacionado con x 1 , lo que lleva a una correlación con y también. Mirando la correlación entre y y x 2 de forma aislada, esto podría sugerir que x 2 es un buen predictor de y . Pero una vez que los efectos de x 1 se dividen al incluir x 1yx1x3x2x2x1yyx2x2yx1x1 en el modelo, no queda tal relación.
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 ***
x1x2x2x1x3x3
Y aquí hay un ejemplo que es aún peor:
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
yx1x2x3x4x1x2x3x4yy en realidad puede encontrar la variable que no pertenece en absoluto al modelo.