더북(TheBook)

예측과 신뢰 구간

lm( )을 통해 모델을 만들고 나면 새로운 데이터에 대한 예측값은 predict( )로 구할 수 있다. predict( )는 일반 함수Generic Function로 여러 가지 방식으로 모델을 만들었을 때 해당 모델로부터 새로운 데이터에 대한 예측값을 구하는 데 사용할 수 있다. predict( )는 인자로 주어진 모델에 따라 내부적으로 predict.glm( ), predict.lm( ), predict.nls( ) 등의 함수를 부르게 되는데, 선형 회귀의 경우 predict.lm( )이 호출된다. 이러한 predict( )의 동작은 6장에서 설명한 plot( )과 유사하다.

표 8-2 선형 모델을 사용한 예측

predict.lm : 선형 모델을 사용한 예측을 수행한다.

predict.lm(
  object,  # 선형 모델
newdata,   # 예측을 수행할 새로운 데이터
  # 구간의 종류. 기본값은 none이며, 이 경우 신뢰 구간이 계산되지 않는다. interval confidence
  # 주어진 경우 회귀 계수에 대한 신뢰 구간을 고려하여 종속 변수의 신뢰 구간(confidence interval)
  # 찾는다. interval prediction인 경우 회귀 계수의 신뢰 구간과 오차항을 고려한 종속 변수의
  # 예측 구간(prediction interval)을 찾는다.
  interval=c("none", "confidence", "prediction")
)

반환 값은 newdata에 대한 예측 결과다.

자동차의 주행 속도와 제동 거리에 대한 선형 회귀 모델을 사용해 주행 속도가 3인 경우의 제동 거리를 예측해보자.

> (m <- lm(dist ~ speed, data=cars))
Call:
lm(formula = dist ~ speed, data = cars)

Coefficients:
(Intercept)     speed
    -17.579     3.932

> predict(m, newdata=data.frame(speed=3))
        1
-5.781869

> coef(m)
(Intercept)      speed
 -17.579095   3.932409

> -17.579095 + 3.932409 * 3  # 선형 모델의 회귀 계수를 사용해 직접 계산
[1] -5.781868

주행 속도가 3일 경우의 예측을 predict( )를 사용해 수행했더니 제동 거리가 -5.781869로 예측되었다. 그리고 이 값은 선형 회귀 모델의 회귀 계수를 사용해 직접 계산한 값과 일치했다.1

회귀 계수(절편과 기울기)의 신뢰 구간을 고려하기 위해 type=“confidence”를 지정하면 제동 거리의 평균 신뢰 구간을 구할 수 있다. 다음 결과에서 fit은 예측값의 점 추정치, lwr과 upr은 각각 신뢰 구간의 하한과 상한 값을 의미한다.

> predict(m, newdata=data.frame(speed=c(3)), interval="confidence")
        fit       lwr      upr
1 -5.781869 -17.02659 5.462853

이 값은 다음 식을 바탕으로 신뢰 구간을 구한 것이다.

dist = β0 + β1 × speed

이 식은 특정 속도를 가진 평균적인 차량의 제동 거리에 해당한다. 평균적인 차량에 대한 추정이므로 식 8-2와 달리 오차항은 고려하지 않는다. 왜냐하면 ‘8.1 선형 회귀의 기본 가정’ 절에서 설명한 것처럼 오차의 평균은 0으로 가정하기 때문이다.

그러나 특정 속도를 가진 차량 한 대가 주어졌을 때 해당 차량에 대해 제동 거리를 생각한다면 오차를 무시할 수 없다. 이 경우 type=“prediction”을 사용해 예측 구간을 구한다.

> predict(m, newdata=data.frame(speed=c(3)), interval="prediction")
        fit       lwr      upr
1 -5.781869 -38.68565 27.12192

제동 거리의 점 추정값 fit은 신뢰 구간과 예측 구간 모두 -5.781869로 같은 값이다. 그러나 구간의 하한lwr과 상한upr은 오차항 때문에 type=“confidence”보다 너비가 커진 것을 볼 수 있다.


1 직접 계산한 값은 계수와 절편 값의 유효 자리가 제한된 상태로 계산했으므로 소수점 여섯 번째 자리까지 완전히 일치하지는 않았다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.