회귀 분석을위한 예측 변수를 선택하기 위해 상관 행렬을 사용하고 있습니까? 상관 행렬을보고

며칠 전, 내 심리학자 연구원은 선형 회귀 모델에 변수를 선택하는 그의 방법에 대해 이야기했습니다. 좋지는 않지만 다른 사람에게 확인을 요청해야합니다. 방법은 다음과 같습니다

모든 변수 (종속 변수 Y 포함) 사이의 상관 행렬을보고 Y와 가장 관련이있는 예측 변수 X를 선택하십시오.

그는 어떤 기준도 언급하지 않았다.
Q : 그가 옳았습니까?

[이 예측 방법은 어떤 예측 변수를 선택해야하는지 또는 생략 된 가변 바이어스 (OVB)를 말하는 이론과 같은 많은 이유로 인해 잘못되었다고 생각합니다.]



답변

어떤 이유로 모형에 하나의 변수 만 포함하려는 경우 와 가장 높은 상관 관계를 갖는 예측 변수를 선택하면 몇 가지 장점이 있습니다. 예측 변수가 하나 뿐인 가능한 회귀 모형 중에서이 모형은 표준화 된 회귀 계수 가 가장 높은 모형이며 (단순 선형 회귀 분석에서 의 제곱이므로 ) 가장 높은 결정 계수입니다 .

y

R2

r

그러나 여러 데이터를 사용할 수있는 경우 회귀 모델을 하나의 예측 변수로 제한하려는 이유는 확실하지 않습니다. 주석에서 언급했듯이 모델에 여러 변수가 포함되어 있으면 상관 관계를 보는 것만으로는 작동하지 않습니다. 예를 들어이 산포 행렬 에서 모형에 포함해야하는 대한 예측 변수 는 x 1 (상관 0.824) 및 x 2 (상관 0.782)이지만 x 3 (상관 0.134)은 유용한 예측 변수가 아니라고 생각할 수 있습니다.

y

x1

x2

x3

상관 된 변수의 산점도 행렬

그러나이 예제에서 는 두 개의 독립 변수 x 1x 3 에 의존 하지만 x 2에 직접적으로 의존하지는 않습니다 . 그러나 x 2x 1 과 높은 상관 관계가 있으므로 y 와도 상관 관계가 있습니다. yx 2 의 상관 관계를 따로 살펴보면 x 2y 의 좋은 예측 변수라는 것을 알 수 있습니다 . 그러나의 효과하면 X 1이 되어 밖으로 partialled 포함하여 X 1

y

x1

x3

x2

x2

x1

y

y

x2

x2

y

x1

x1

모델에서는 그러한 관계가 남아 있지 않습니다.

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

이 표본 크기는 x 2에 대한 계수 추정의 다중 공선 성 문제를 극복하기에 충분히 큽니다 . 의 계수는 0에 가까우며 중요하지 않은 p- 값으로 추정 됩니다. 실제 계수는 0입니다. 및 의 절편 및 기울기는 각각 실제 값인 5, 3 및 0.5 근처에서 추정됩니다. 참고 제대로 발견이가 분산 매트릭스에서 분명보다 작더라도, 중요한 예측 인자가 될 수 있습니다.

x1

x2

x2

x1

x3

x3

그리고 더 나쁜 예가 여기 있습니다 :

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

여기서 는 (관련되지 않은) 예측 변수 , 및 에 의존합니다. 실제로 실제 회귀 기울기는 각각에 대해 하나입니다. 그것은 네 번째 변수 에 의존하지 않지만 변수가 , 및 각각과 상관되는 방식 때문에 산점도와 상관 행렬에서 두드러지는 일 것입니다 ( 와의 상관 관계 는 0.583, 나머지는 0.4 미만입니다). 따라서 와 가장 높은 상관 관계가있는 변수를 선택하면 실제로 모델에 속하지 않은 변수를 찾을 수 있습니다.

y

x1

x2

x3

x4

x1

x2

x3

x4

y

y


답변

단계적 회귀 분석을 실행하고 소프트웨어가 F 값을 기반으로 변수를 선택하도록 할 수 있습니다. 회귀 분석을 실행할 때마다 조정 된 R ^ 2 값을보고 모형에 기여하는 새 변수를 추가하는지 확인할 수도 있습니다. 상관 행렬을 사용하여 강한 상관 관계가있는 변수를 선택하면 모델에 다중 공선 성 문제가있을 수 있습니다. 도움이 되었기를 바랍니다!


답변