단순선형 회귀분석에서 결정계수 (R², Coefficient of Determination) 를 가장 쉽게 설명해 보자
여기 x 와 y 에 대한 데이터가 있습니다. x 가 변화함에 따라 y 는 어떻게 달라지는지를 알고 싶어 회귀분석을 해 보겠습니다.
x | y | |
1 | 10 | 30 |
2 | 20 | 40 |
3 | 30 | 50 |
4 | 40 | 80 |
5 | 50 | 90 |
6 | 60 | 100 |
7 | 70 | 120 |
저는 SAS 를 이용합니다. 먼저 데이터 데이블을 생성합니다.
data my_data;
input x y;
datalines;
10 30
20 40
30 50
40 80
50 90
60 100
70 120
;
run;
그리고 단순선형 회귀분석을 해 보겠습니다.
proc reg data=WORK.DATAA alpha=0.05;
model y=x;
run;
quit;
통계 프로그램은 회귀방정식 y= 11.429 + 1.5357x
를 제공해 주었습니다.
즉, x 가 1 증가할 때 y 는1.5357 배로 증가합니다. 그리고 이 회귀모형의 결정계수 (R2) 는 0.9793 이라고 합니다. 이렇게 결정계수를 확인했다고 여기서 멈추면 절대로 결정계수의 원리를 이해할 수 없습니다.
이번 시간에는 이 결정계수가 어떻게 계산되는지를 설명하겠습니다. 수기로 계산할 수 있다면 그 원리는 자동으로 이해할 수 있을 것입니다.
■ 단순선형 회귀분석에서의 결정계수: ANOVA 에 대한 이해
회귀분석에서 왜 갑자기 ANOVA 를 이야기 하는지 의아해 할 수도 있겠습니다. Analysis of variance (ANOVA) 는 분산 (variance) 에 대한 해석입니다. 이제 우리는 x 와 y 데이터에 대한 분산에 대해 살펴 보겠습니다.
x | y | ŷ | model equation | |
1 | 10 | 30 | 26.8 | ŷ=11.429 + 1.5357 * 10 |
2 | 20 | 40 | 42.1 | ŷ=11.429 + 1.5357 * 20 |
3 | 30 | 50 | 57.5 | ŷ=11.429 + 1.5357 * 30 |
4 | 40 | 80 | 72.9 | ŷ=11.429 + 1.5357 * 40 |
5 | 50 | 90 | 88.2 | ŷ=11.429 + 1.5357 * 50 |
6 | 60 | 100 | 103.6 | ŷ=11.429 + 1.5357 * 60 |
7 | 70 | 120 | 118.9 | ŷ=11.429 + 1.5357 * 70 |
ȳ = 72.86 |
앞서 통계 프로그램은 x 와 y 데이터에 대한 회귀모형 y= 11.429 + 1.5357x
를 제공해 주었습니다. 그러면 이 회귀모형을 이용해서 우리는 특정 x 값에 대한 ŷ
값을 예측할 수 있게 됩니다.
이제 다음으로 Total = Fit + Error
라는 개념에 대해 살펴 보겠습니다.
Total | Fit | Error | ||||
x | yi | ŷ | yi – ȳ | ŷ – ȳ | yi – ŷ | |
1 | 10 | 30 | 26.8 | -42.86 | -46.07 | 3.21 |
2 | 20 | 40 | 42.1 | -32.86 | -30.72 | -2.14 |
3 | 30 | 50 | 57.5 | -22.86 | -15.36 | -7.50 |
4 | 40 | 80 | 72.9 | 7.14 | 0.00 | 7.14 |
5 | 50 | 90 | 88.2 | 17.14 | 15.35 | 1.79 |
6 | 60 | 100 | 103.6 | 27.14 | 30.71 | -3.57 |
7 | 70 | 120 | 118.9 | 47.14 | 46.07 | 1.07 |
ȳ = 72.86 |
먼저 우리는 y
값의 평균 72.86 을 구했습니다. 그리고 각각의 y
의 개별값에서 그 평균을 빼 보겠습니다. y
의 개별값을 yi
로 표시하고 전체 y
의 평균값을 ȳ
로 표시하겠습니다. 그러면 그 계산식을 yi - ȳ
로 표시할 수 있을 것입니다. 그리고 이 값을 제곱해서 다 더해 보겠습니다. 이 계산 과정을 수식으로 표현하면 Σ (yi - ȳ)2
으로 표시 할 수 있습니다.
두번째로 model equation 을 통해 예측된 y
값에서 전체 y
의 평균값을 빼 보겠습니다. 그 계산식은 ŷ - ȳ
으로 표시 할 수 있을 것입니다. 그리고 이 값 역시 제곱을 해서 다 더하겠습니다. 이 계산 과정을 수식으로 표현하면 Σ (ŷ - ȳ)2
으로 표시 할 수 있습니다.
마지막으로는 y
의 개별값에서 예측된 y
값을 빼 보겠습니다. 그 계산식은 yi - ŷ
으로 표시 할 수 있을 것입니다. 그리고 이 값 역시 제곱을 해서 다 더하겠습니다. 이 계산 과정을 수식으로 표현하면 Σ (yi - ŷ)2
으로 표시 할 수 있습니다.
SST | SSR | SSE | ||||
n | x | yi | ŷ | (yi – ȳ)2 | (ŷ – ȳ)2 | (yi – ŷ)2 |
1 | 10 | 30 | 26.8 | 1836.7 | 2122.5 | 10.3 |
2 | 20 | 40 | 42.1 | 1079.6 | 943.3 | 4.6 |
3 | 30 | 50 | 57.5 | 522.4 | 235.8 | 56.3 |
4 | 40 | 80 | 72.9 | 51.0 | 0.0 | 51.0 |
5 | 50 | 90 | 88.2 | 293.9 | 235.8 | 3.2 |
6 | 60 | 100 | 103.6 | 736.7 | 943.4 | 12.8 |
7 | 70 | 120 | 118.9 | 2222.4 | 2122.6 | 1.1 |
ȳ = 72.86 | Σ(yi – ȳ)2 =6742.86 | Σ(ŷ – ȳ)2 = 6603.45 | Σ(yi – ŷ)2 = 139.29 |
[Note] 데이터의 variation 이해하기 1) yi - ȳ 는 데이터의 전체 variation 을 의미한다. 이렇게 생각해 봅시다. 5, 7, 8, 5, 5 라는 데이터가 있습니다. 이 데이터의 평균은 6 입니다. 그럼 각각의 개별값에서 그 평균을 빼 보겠습니다. 5 - 6 , 7 - 6 , 8 - 6 , 5 - 6 , 5 - 6 이 값은 데이터의 전체 variation 을 의미합니다. 더 쉽게 얘기하자면 만일 데이터가 5, 5, 5, 5, 5 라면 평균은 0 이고 이 데이터의 전체 variation 은 0 입니다. 즉, 데이터간 차이가 없다는 말 입니다. 이렇게 각각의 개별값에서 그 전체 값의 평균을 뺀 것을 무엇이라고 부를까요? 그 값을 편차 (deviation) 라고 부릅니다. 그리고 편차의 합은 언제나 0 입니다. 데이터의 전체variation 을 파악하기 위해서는 그 값을 다 더해야만 그 variation 을 알 수 있습니다. 하지만 편차의 합은 0 이기에 우리는 데이터의 전체 variation 을 파악 할 수 없습니다. 어떻게 하면 이 문제를 해결 할 수 있을 까요? 각각의 편차값에 제곱을 취하면 됩니다. (5 - 6)2 , (7 - 6)2 , (8 - 6)2 , (5 - 6)2 , (5 - 6)2 이제 우리는 이 값을 다 더해도 0 이 되지 않습니다. 그 합은 8 입니다. 이 계산 과정을 수식으로 표현 하면 Σ (yi - ȳ)2 으로 표시 할 수 있습니다. 2) ŷ - ȳ 는 예측값의 variation 이며 이것은 모델 방정식의 적합도를 의미한다. 회귀 모델 방정식을 통해 우리는 예측된 값 ŷ 을 구했습니다. 그리고 그 값에서 원래 y 의 평균값을 빼줬습니다. 이것은 모델 방정식의 적합도를 의미합니다. 예를 들어, x 값이 1, 2, 3, 4, 5 이고 y 값이 10, 20, 30, 40, 50 일 경우의 회귀 모델 방정식은 ŷ = 10x 가 됩니다. 그리고 y 값의 평균은 ȳ = 30 이 됩니다.ŷ = 10x
이라는 모델 방정식에 따라 ŷ 의 값 역시 10, 20, 30, 40, 50 이 될 것입니다. 그럼 ŷ - ȳ 은 10 - 30, 20 - 30, 30 - 30, 40 - 30, 50 - 30 이 될 것입니다. 그런데 만일 y 값이 10, 20, 30, 40, 200 일 경우에는 어떻게 될까요? 회귀 모델 방정식은 ŷ = -60 + 4x 가 됩니다. 그럼 예측값 ŷ 은 -20, 20, 60, 100, 140 이 되고 ȳ = 60 이 되니 ŷ - ȳ 은 -20 - 60, 20 - 60, 60 - 60, 100 - 60, 140 - 60 이 됩니다. 편차의 합은 0 이기 때문에 이 편차에 제곱을 취하고 다 더해 보겠습니다. 이 계산 과정을 수식으로 표현 하면Σ (ŷ - ȳ)2
으로 표시 할 수 있습니다. ŷ = 10x 일 경우 그 값은 1,000 이 되고 ŷ = -60 + 4x 일 경우 그 값은 16,000 이 됩니다. 어떤 모델이 더 정확한 모델일까요? 당연 ŷ = 10x 일 것입니다. 이 모델 방정식에 따르면 예측값은 실제 측정값과 다 동일합니다. 그렇기에Σ (ŷ - ȳ)2
값이 크다는 말은 모델 방정식의 적합도가 낮다는 말입니다. 3) yi - ŷ 는 회귀모형의 error 를 의미한다. 각각의 y 값에서 예측된 y 값을 뺀다는 말은 실제값과 예측값 사이의 차이이며 이것은 회귀모형이 발생시키는 error 를 의미합니다. x 값이 1, 2, 3, 4, 5 이고 y 값이 10, 20, 30, 40, 50 인 데이터의 회귀모형,ŷ = 10x
에서 error 는 얼마일까요? 0 입니다. 반면 x 값이 1, 2, 3, 4, 5 이고 y 값이 10, 20, 30, 40, 200 인 데이터의 회귀모형,ŷ = -60 + 4x
에서 error 는 얼마일까요? 이것 역시 편차에 제곱을 취하고 다 더하겠습니다. 이 계산 과정을 수식으로 표현하면 Σ (yi - ŷ)2 가 됩니다. (10 - -20)2 + (20 -20)2 + (60-30)2 + (100 - 40)2 + (200- 140)2 = 9,000 이 됩니다. 즉 데이터의 variation 이 커지면 (i.e., 10, 20, 30, 40 다음에 갑자기 200 이 되는 경우) 회귀모형의 적합도도 낮아지고 그 모형이 발생시키는 error 도 증가하게 됩니다.
이렇게 계산을 마무리 하면 우리는 아래와 같은 수식을 검증 할 수 있습니다.
Σ (yi – ȳ)2 = Σ (ŷ – ȳ)2 + Σ (yi – ŷ)2
우리는 편차를 제곱 (squares) 하고 그 값을 다 더했습니다 (sum). 그래서 이 과정을 sum of squares 라고 부를수 있습니다.
앞에서 우리는 전체 데이터의 variation, 모형의 적합도의 variation, 그리고 error 의 sum of squares 를 각각 구했기에 이제 부터는 그 값을 Sum of Squares Total (SST), Sum of Squares due to Regression (SSR), 그리고 Sum of Squares Error (SSE) 라고 하겠습니다.
그리고 이 값은 아래와 같이 설명되어 질 수 있습니다.
Σ (yi – ȳ)2 = Σ (ŷ – ȳ)2 + Σ (yi – ŷ)2
SST = SSR + SSE
6742.86 = 6603.45 + 139.29
이렇게 각각의 sum of squares 를 구했다면 ANOVA 테이블을 작성해 보겠습니다. Simple linear regression 모델에서의 ANOVA 테이블의 구성은 아래와 같습니다.
데이터 갯수는 n= 7 입니다. 앞에서 계산한 sum of squares 값을 ANOVA 테이블에 대입하겠습니다.
이렇게 수기로 계산된 ANOVA 테이블 과 앞에서 SAS 가 제공한 값과 비교해 보겠습니다. 같은 값 입니다.
이제 우리는 회귀분석의 ANOVA 테이블 이 작성되는 원리를 이해 했습니다.
가끔 통계 프로그램 마다 ANOVA 테이블이 다른 이름으로 표시되서 헷갈리는 경우가 종종 있습니다. 아래 테이블은 SPSS 에서 가져온 것입니다. 앞에서 설명한 것과는 별개로 SPSS 에서 과거에 분석해 놓은 결과값을 단순 예시로 가져온 것입니다. SAS 는 Model, Error, Corrected Total 로 표시되어 있는 반면 SPSS 는 Regression, Residual, Total 로 표시되어 있습니다. 통계 프로그램마다 약간은 다른 이름으로 결과값을 보여 줘서 헷갈리는 경우가 종종 있고, 어떤 통계책은 TSS = SSR + SSE 로 설명해서 이게 무슨 말인가 하는 경우가 종종 있습니다.
그렇기에 위에서 설명한 이 개념만 확실히 이해하면 통계 프로그램에서 다른 이름으로 표시되어 있어도, 통계책에서 다른 이름으로 방정식을 설명한다 해도 그 개념을 확실히 이해할 수 있을 것입니다.
Σ (yi – ȳ)2 = Σ (ŷ – ȳ)2 + Σ (yi – ŷ)2
SST = SSR + SSE
여기까지 잘 따라 오셨다면 결정계수를 구하는 것은 식은죽 먹기 입니다.
그냥 SSR 에서 SST 를 나눠주면 됩니다. 그리고 이 계산식은 1 – SSE/SST 로도 설명될 수 있습니다.
R2 = 6603.45 / 6742.86 = 0.979
= 1 – 139.29 / 6742.86 = 0.979
우리가 수기로 계산한 R2 는 0.979 입니다. 이 값은 SAS 가 제공한 값과 동일한 값 입니다.
SSR / SST 의 비율이 의미하는 것은 무엇일까요? 아래 그림을 살펴 봅시다. SSR 이 작다는 말은 회귀모형의 예측값이 평균에서 크게 이탈하지 않는다는 말입니다. 즉 회귀모형의 적합도가 높다는 말입니다. SSR 이 작아지기에 R2 는 커질 것입니다.
이 말인즉, y 값에서의 variation 중 97.9% 는 x 에 의해서 설명되어 질 수 있다는 말입니다. 나머지 2.1% 는 어떤 다른 요인에 의해서 발생된 것이겠지요!!