5.2 최소 제곱 추정

물론 실제로는 관측값을 가지고 있지만 계수 값 \(\beta_0,\beta_1, \dots, \beta_k\)은 모릅니다. 이러한 값은 데이터로부터 추정해야 합니다.

최소 제곱 원리(least square principle)는 제곱 오차의 합을 최소화하여 계수를 효과적으로 선택할 수 있는 방법입니다. 즉, 아래 값을 최소화하는 \(\beta_0, \beta_1, \dots, \beta_k\) 값을 선택합니다. \[ \sum_{t=1}^T \varepsilon_t^2 = \sum_{t=1}^T (y_t - \beta_{0} - \beta_{1} x_{1,t} - \beta_{2} x_{2,t} - \cdots - \beta_{k} x_{k,t})^2. \]

오차를 제곱하여 더한 양의 최소값을 나타내기 때문에 이것을 “최소 제곱(least square)” 추정이라고 부릅니다. 계수의 가장 좋은 추정치를 찾는 것을, 종종 모델을 데이터에 “맞춘다”고 부르거나, 때때로 모델을 “학습(learning)”시키거나 “훈련(training)”시킨다고 부릅니다. 그림 5.3에 나타낸 선은 이러한 방법으로 얻은 것입니다.

추정된 계수를 언급할 때, 이러한 \(\hat\beta_0, \dots, \hat\beta_k\) 기호를 사용하여 나타낼 것입니다. 5.7 절에서 이러한 계수에 대한 식을 다룰 것입니다.

tslm() 함수는 선형 회귀 모델을 시계열 데이터에 맞춥니다. 선형 모델에서 널리 사용되는 lm() 함수와 비슷하지만, tslm()은 시계열을 다루기 위한 추가적인 기능을 제공합니다.

예제: 미국 소비 지출

미국 소비 데이터를 다루는 다중 선형 회귀 모델은 다음과 같습니다. \[ y_t=\beta_0 + \beta_1 x_{1,t}+ \beta_2 x_{2,t}+ \beta_3 x_{3,t}+ \beta_4 x_{4,t}+\varepsilon_t, \] 여기에서 \(y\)는 실제 개인 소비 지출의 백분율 변화, \(x_1\)은 실제 개인 가처분 소득의 백분율 변화, \(x_2\)는 산업 생산의 백분율 변화, \(x_3\)은 개인 저축의 백분율 변화, \(x_4\)는 실업률 변화입니다.

다음의 출력은 적합 모델(fitted model)에 관한 정보를 나타냅니다. 계수(coefficients)의 첫 번째 열은 각 \(\beta\) 계수의 추정을, 두 번째 열은 \(\beta\)의 표준 오차(즉, 비슷한 데이터에 대해 \(\beta\) 계수를 반복적으로 추정하여 얻을 수 있는 표준 편차)입니다. 표준 오차는 추정된 \(\beta\) 계수의 불확실성을 나타냅니다.

fit.consMR <- tslm(
  Consumption ~ Income + Production + Unemployment + Savings,
  data=uschange)
summary(fit.consMR)
#> 
#> Call:
#> tslm(formula = Consumption ~ Income + Production + Unemployment + 
#>     Savings, data = uschange)
#> 
#> Residuals:
#>     Min      1Q  Median      3Q     Max 
#> -0.8830 -0.1764 -0.0368  0.1525  1.2055 
#> 
#> Coefficients:
#>              Estimate Std. Error t value Pr(>|t|)    
#> (Intercept)   0.26729    0.03721    7.18  1.7e-11 ***
#> Income        0.71448    0.04219   16.93  < 2e-16 ***
#> Production    0.04589    0.02588    1.77    0.078 .  
#> Unemployment -0.20477    0.10550   -1.94    0.054 .  
#> Savings      -0.04527    0.00278  -16.29  < 2e-16 ***
#> ---
#> Signif. codes:  
#> 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 0.329 on 182 degrees of freedom
#> Multiple R-squared:  0.754,	Adjusted R-squared:  0.749 
#> F-statistic:  139 on 4 and 182 DF,  p-value: <2e-16

예측할 때 마지막 두 열은 별로 중요하지 않습니다. “t 값”은 추정된 \(\beta\) 계수와 표준 오차의 비율을, 마지막 열은 p-값을 나타냅니다. 여기에서 p-값은 관련 예측변수(predictor variable)와 소비 사이에 실제 관계가 없는 경우에, 추정된 \(\beta\) 계수가 원래 값만큼 클 확률입니다. 이 값은 각 예측변수의 효과를 살펴볼 때 유용하지만, 예측할 때는 그렇게 유용하진 않습니다.

적합값

회귀식에서 추정된 계수를 사용하고 오차항을 0으로 두어 \(y\)의 예측값을 얻을 수 있습니다. 일반적으로 다음과 같이 적습니다. \[\begin{equation} \hat{y}_t = \hat\beta_{0} + \hat\beta_{1} x_{1,t} + \hat\beta_{2} x_{2,t} + \cdots + \hat\beta_{k} x_{k,t}. \tag{5.2} \end{equation}\] \(x_{1,t},\dots,x_{k,t}\) for \(t=1,\dots,T\) 값을 대입하면 학습-표본 안의 \(y_t\) 예측값을 얻습니다. 이 예측값을 적합값(fitted value)이라고 부릅니다. \(y\)의 참 미래 예측값이 아니고 모델을 추정하기 위해 사용한 데이터의 예측값이라는 것에 주목하시길 바랍니다.

다음의 그래프는 미국 소비 지출 시계열의 백분율 변화에 대해 적합값(fitted value)과 실제 값을 나타냅니다. 그림 5.6의 시간 그래프(time plot)는 적합값이 실제 데이터를 꽤 비슷하게 따라가는 것을 나타냅니다. 이것으로 그림 5.7에서 산점도(scatterplot)로 나타낸 강한 양의 관계를 확인합니다.

autoplot(uschange[,'Consumption'], series="데이터") +
  autolayer(fitted(fit.consMR), series="적합값") +
  xlab("연도") + ylab("") +
  ggtitle("미국 소비 지출의 백분율 변화") +
  guides(colour=guide_legend(title=" "))
실제 미국 소비 지출과 예측된 미국 소비 지출의 시간 그래프.

Figure 5.6: 실제 미국 소비 지출과 예측된 미국 소비 지출의 시간 그래프.

cbind(Data = uschange[,"Consumption"],
      Fitted = fitted(fit.consMR)) %>%
  as.data.frame() %>%
  ggplot(aes(x=Data, y=Fitted)) +
    geom_point() +
    ylab("적합값 (예측된 값)") +
    xlab("데이터 (예측된 값)") +
    ggtitle("미국 소비 지출의 백분율 변화") +
    geom_abline(intercept=0, slope=1)
미국 실제 소비 지출을 예측된 미국 소비 지출에 대해 나타낸 것.

Figure 5.7: 미국 실제 소비 지출을 예측된 미국 소비 지출에 대해 나타낸 것.

적합도(Goodness-of-fit)

선형 회귀 모델이 데이터에 얼마나 잘 맞는지 요약하는 일반적인 방법은 결정 계수(coefficient of determination) 또는 \(R^2\)를 사용하는 것입니다. 이것은 관측한 \(y\) 값과 예측한 \(\hat{y}\) 값 사이의 상관 관계(correlation)의 제곱으로 계산할 수 있습니다. 대신에, 다음과 같이 계산할 수도 있습니다. \[ R^2 = \frac{\sum(\hat{y}_{t} - \bar{y})^2}{\sum(y_{t}-\bar{y})^2}, \] 여기에서 합산 기호는 모든 관측값에 대한 것입니다. 따라서, 회귀 모델로 설명되는 목표 예상변수(forecast variable)의 변동 비율을 반영합니다.

단순 선형 회귀 분석에서, \(R^2\) 값은 \(y\)\(x\) 사이의 상관 관계의 제곱과 같습니다(포함된 절편이 있는 경우).

예측값이 실제 값과 가깝다면, \(R^2\)는 1에 가까울 것입니다. 반면에, 예측값이 실제 값과 관련이 없다면(다시 말해, 절편이 있다고 가정하면), \(R^2=0\)입니다. 모든 경우에 \(R^2\)는 0과 1 사이의 값을 갖습니다.

예측 작업에서 \(R^2\) 값은 종종 잘못 사용되긴 하지만 자주 사용됩니다. 여분의 예측변수(predictor variable)를 모델에 추가할 때 \(R^2\) 값은 절대로 줄어들지 않고, 이것이 과대적합(over-fitting)으로 이어질 수 있습니다. 좋은 \(R^2\) 값에 대해 정해진 규칙은 없으며 \(R^2\)의 일반적인 값은 사용하는 데이터의 종류에 따라 다릅니다. 테스트 데이터에 대해 모델의 예측 성능을 확인하는 것이 학습 데이터(training data)에 대한 \(R^2\)를 측정하는 것보다 훨씬 낫습니다.

예제

5.2 절에서 다룬 미국 소비 데이터 예제로 다시 돌아가봅시다.

그림 5.7은 실제 소비 지출 값에 대해 적합값(fitted value)을 나타낸 것입니다. 이러한 변수 사이의 상관 관계(correlation)는 \(r=0.868\)입니다. 따라서 \(R^2= 0.754\)%입니다(결과는 위에 나타냈습니다). 이 경우에 모델이 소비 데이터에서 나타나는 75.4% 변동을 설명하기 때문에 훌륭하게 작동했다고 볼 수 있습니다. 이것을 5.1 절과 같은 데이터를 사용하여 단순 회귀로 얻은 0.16의 \(R^2\) 값과 비교합시다. 세 가지 예측변수(predictor variable)를 더 추가하면, 소비 데이터의 변동을 더 잘 설명할 수 있습니다.

회귀 분석의 표준 오차

모델이 데이터에 얼마나 잘 들어 맞았는지에 대한 또 다른 척도는 “잔차 표준 오차(residual standard error)”라고 하는 잔차(residual)의 표준 편차입니다. 이것은 0.3286 값으로 위의 출력 결과에 나와있습니다.

이것은 다음의 식으로 계산합니다. \[\begin{equation} \hat{\sigma}_e=\sqrt{\frac{1}{T-k-1}\sum_{t=1}^{T}{e_t^2}}. \tag{5.3} \end{equation}\] 여기에서 \(k\)는 모델에 포함된 예측변수(predictor variable)의 수입니다. 잔차(residual)를 계산할 때 \(k+1\) 개의 매개변수(각 예측변수에 대한 절편과 계수)를 추정했기 때문에 \(T-k-1\)로 나누는 것에 주목하시길 바랍니다.

표준 오차는 모델이 내는 평균 오차의 크기와 관련이 있습니다. 이 오차를 \(y\)의 표본 평균이나 모델의 정확도에 대해 몇 가지 파악하기 위해 \(y\)의 표준 편차와 비교할 수 있습니다.

표준 오차를 평가하는 것이 눈금(scale)에 따라 매우 주관적일 수 있다는 것에 반드시 주의하시길 바랍니다. 5.6 절에서 다룬 것처럼, 예측구간(prediction interval)을 생성할 때 필요하기 때문에 이것을 여기에서 소개합니다.