상관과 회귀

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


수강중

9. 회귀분석 실습 2

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

  • 모형의 유의성
  • 회귀 계수
  • r-square
  • 간단한 예측 해보기
    -> 오늘 강의해서는 r-square와 간단한 예측해보기를 해볼 예정임

실습

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

library(corrgram)
vars2 <- c("Assists","Atbat","Errors","Hits", "Homer", "logSal", "Putouts","RBI","Runs","Walks","Years")
cor.data <- baseball[,vars2]
pred.data <- cor.data[100,]
train.data <- cor.data[-100,]
lm.model = lm(logSal ~ RBI, data = train.data)
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

홈런으로 연봉을 예측하는 회귀 분석

lm.model.2 <- lm(logSal ~ Homer, data = train.data)
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
  • 홈런이 1만큼 증가할 때 연봉은 0.015만큼 증가함
  • 연봉을 예측하는데는 타점보다 홈런이 더 중요하다고 생각한다면?
    • 홈런 1이 증가하는 것과 타점 1이 증가하는 것이 동일한 1이 증가했다고 볼 수 있을까?

홈런의 범위

range(train.data$Homer)
[1]  0 40

RBI의 범위

range(train.data$RBI)
[1]   0 121
  • 홈런에서 1이 증가하는 것은 RBI에서 3이 증가하는 것과 비슷함
  • 따라서 홈런 1이 증가한 것과 타점 1이 증가한 것이 동일한 1이라고 보기 어려움
  • 이처럼 X의 범위, 분산이 다른 경우에는 회귀 계수를 직접적으로 크다, 작다고 하는 것이 어려움
  • 이러한 것들을 비교하기 위해 표준화 회귀계수를 사용함

표준화 회귀계수

  • 평균은 0, 표준편차는 1을 갖도록 바꿔줌
  • x가 1표준편차 증가할 때 y의 표준편차가 얼마나 증가하는지를 보고 비교 가능함

패키지 설치

install.packages('QuantPsyc')

불러오기

library(QuantPsyc)
Loading required package: boot

Attaching package: ‘boot’

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

    logit

Loading required package: MASS

Attaching package: ‘QuantPsyc’

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

    norm

RBI의 표준화 회귀계수

lm.beta(lm.model)
      RBI 
0.4444445 
  • 표준화를 했기 때문에 Intercept가 0으로 고정됨
  • RBI가 1 표준편차만큼 증가할 때 연봉이 0.44 표준편차만큼 증가함

홈런의 표준화 회귀계수

lm.beta(lm.model.2)
    Homer 
0.3395449 
  • 홈런이 1 표준편차만큼 증가할 때 연봉이 0.34 표준편차만큼 증가함

  • 결론: 연봉을 예측하는 데 있어서 홈런이 아니라 RBI가 더 중요한 변수임

r-square(결정계수)

  • 내가 구한 회귀 모형이 주어진 자료에 적합한 것일까?
  • 0에서 1까지의 값을 가짐
  • 1: 자료를 완벽하게 설명
    • 예) 홈런으로 연봉을 100% 설명
  • 모형을 선택할 때의 하나의 기준
  • r-square가 높은 모형을 선택하는 것이 좋음
  • lm.beta(lm.model)에서는 0.1975
  • lm.beta(lm.model.2)에서는 0.1153
  • 타점으로 예측하는 것이 더 좋은 모형을 만든다고 예측할 수 있음

간단한 예측하기

pred.value <- predict(lm.model, pred.data)
pred.value
     100 
2.543946 
  • 100번째 값에 해당하는 연봉

그래프로 제대로 예측했는지 확인

plot(train.data$RBI, train.data$logSal)
points(x = pred.data$RBI, pred.value, col = 'green') 
abline(lm.model, col = 'red')
  • 예측한 값을 초록색 점으로 찍음
  • 모든 RBI에 대해 찍어서 하나의 회귀 선(빨간 선)처럼 그려 넣음
  • 오차가 꽤 있어 보임
  • 이 오차를 줄이기 위해 더 많은 변수를 사용해보면 더 좋은 모형을 만들 수 있을 것으로 보임