상관과 회귀

예측 분석의 기본이 되는 상관과 회귀의 개념을 알아봅니다


수강중

11. 중다회귀

  • 지금까지 했던 내용은 하나의 독립 변수로 하나의 종속 변수를 예측
  • 좀 더 많은 변수를 이용해 종속 변수를 예측 $$y = a + b_1x + b_2w + b_3z + ...$$
  • 회귀 계수를 잘 추정하는 것이 목표
  • 중다 회귀(Multiple Regression)에서 회귀 계수는 나머지 변수들이 고정된 상태에서 내가 보고자 하는 변수의 영향력을 나타내는 값임
  • 해석에 주의해야 하는 부분들이 있음

결과를 살펴볼 때 봐야 할 것들

  • 모형의 유의성
  • 회귀 계수
  • r-square
  • 간단한 예측 해보기

실습

지난 시간에 했던 데이터 그대로 사용

library(corrgram)
vars2 <- c("Assists","Atbat","Errors","Hits", "Homer", "logSal", "Putouts","RBI","Runs","Walks","Years")
cor.data <- baseball[,vars2]
Registered S3 methods overwritten by 'ggplot2':
  method         from 
  [.quosures     rlang
  c.quosures     rlang
  print.quosures rlang
Registered S3 method overwritten by 'seriation':
  method         from 
  reorder.hclust gclus

회귀분석

train.data <- cor.data[-100,]
lm.model = lm(logSal ~ RBI, data = train.data)
lm.model.2 <- lm(logSal ~ Homer, data = train.data)

이전에 만들었던 회귀 모델

summary(lm.model)
Call:
lm(formula = logSal ~ RBI, data = train.data)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.81573 -0.25592  0.04475  0.25880  1.09538 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 2.2323885  0.0477620   46.74  < 2e-16 ***
RBI         0.0066289  0.0008286    8.00 4.12e-14 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3471 on 260 degrees of freedom
  (59 observations deleted due to missingness)
Multiple R-squared:  0.1975,	Adjusted R-squared:  0.1944 
F-statistic:    64 on 1 and 260 DF,  p-value: 4.125e-14
summary(lm.model.2)
Call:
lm(formula = logSal ~ Homer, data = train.data)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.83421 -0.30147  0.06491  0.27229  0.92774 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 2.400028   0.037394  64.183  < 2e-16 ***
Homer       0.014972   0.002572   5.821 1.72e-08 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3645 on 260 degrees of freedom
  (59 observations deleted due to missingness)
Multiple R-squared:  0.1153,	Adjusted R-squared:  0.1119 
F-statistic: 33.88 on 1 and 260 DF,  p-value: 1.719e-08

중다 회귀 모델 만들기

lm.mult.model <- lm(logSal ~ RBI + Homer + Errors + Assists, data = train.data)
summary(lm.mult.model)
Call:
lm(formula = logSal ~ RBI + Homer + Errors + Assists, data = train.data)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.71681 -0.25648  0.03474  0.24695  1.06278 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  2.2562598  0.0529470  42.614  < 2e-16 ***
RBI          0.0086188  0.0016840   5.118 6.05e-07 ***
Homer       -0.0057834  0.0050339  -1.149  0.25167    
Errors      -0.0119246  0.0045757  -2.606  0.00969 ** 
Assists      0.0003649  0.0002180   1.673  0.09546 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3435 on 257 degrees of freedom
  (59 observations deleted due to missingness)
Multiple R-squared:  0.2233,	Adjusted R-squared:  0.2112 
F-statistic: 18.47 on 4 and 257 DF,  p-value: 2.34e-13
  • 수비와 공격에 관한 변수들을 독립 변수로 추가
  • 잔차들이 줄어듦
  • 연봉을 더 잘 추정할 수 있게 됨
  • p값이 0.05보다 작아 유의미함
  • 특히 RBI와 Errors가 p값이 0.05보다 작아 유의미함
  • Homer과 Assists는 p값이 0.05보다 큼
    • 위에서 lm.model.2 모델에서는 Homer의 p값이 0.05보다 작아 유의미했음
    • 그 이유는 RBI와 Homer의 관계 때문임
    • 타점이 높은 사람은 홈런이 높고 타점이 낮은 사람은 홈런도 낮음
    • Homer: 타점으로 설명할 수 있는 것은 완전히 배제한 순수한 홈런의 영향만을 고려한 것임
    • RBI: 홈런으로 설명할 수 있는 것은 완전히 배제한 순수한 타점의 영향만을 고려한 것임
  • 장점: 각각으로 돌렸을 때보다 한 꺼번에 돌리면 중요한 변수들만 설명을 잘 해줌
  • p값의 크기와 파라미터 크기의 차이
    • p값이 더 큰데 파라미터도 더 큰 이유는?
    • 각각의 변수의 범위가 다르기 때문임

어떤 변수가 더 강한지 알아보려면

library(QuantPsyc)
Loading required package: boot
Loading required package: MASS

Attaching package: ‘QuantPsyc’

The following object is masked from ‘package:base’:

    norm

lm.beta(lm.mult.model)
       RBI      Homer     Errors    Assists 
 0.5778632 -0.1311628 -0.2038048  0.1369778 
  • 변수마다 차이가 크게 나는 걸 확인할 수 있음
  • 그래서 유의미하지 않았던 Homer와 Assists 값이 둘의 절댓값이 비슷함