- 선형회귀 결과해석 및 단순 예측
- 분산분석
- 신뢰구간과 예측
- '선형회귀' 란 무엇인가?
- (X1, X2, …, Xn)을 n차원의 확률 변수로 하여 조건부 기댓값
- 하나의 설명 변수에 기반한 경우에는 단순선형회귀, 둘 이상의 복수의 설명 변수에 기반한 경우에는 다중선형회귀라고 한다.
[네이버 지식백과] 선형 회귀 분석 [linear regression]
단순 선형회귀를 기준으로 y = ax + b 라는 회귀 함수 (회귀 곡선) 를 구하여
독립변수(x)에 따른 종속변수(y)값을 예측하는 모델링이라고 할 수 있겠습니다.
간단하게 '나이에 따른 평균 키' 를 예로 들면
키 = a*나이 + b 가 되며,
독립변수는 나이, 그리고 종속변수는 키가 되겠습니다.
결국 나이에 따라 평균키가 결정되므로,
나이는 독립변수, 키는 종속변수라고 할 수 있겠습니다.
- 데이터 준비
나이에 따른 평균 키 | |
나이(month) |
평균 키 (cm) |
---|---|
18 | 76.1 |
19 | 77 |
20 | 78.1 |
21 | 78.2 |
22 | 78.8 |
23 | 79.7 |
24 | 79.9 |
25 | 81.1 |
26 | 81.2 |
27 | 81.8 |
28 | 82.8 |
29 | 83.5 |
나이에 따른 평균 키의 데이터를 가지고, 선형 회기분석 (Linear regression)을 통해
선형회귀모델 (Linear regression model)을 만들어 보도록 하겠습니다.
> age=18:29
> age
[1] 18 19 20 21 22 23 24 25 26 27 28 29
좋은 선형회기 모델이란것은 예측값과 실제 값의 차이를 뜻하는 Residual error가 작은 모델
> res=lm(height~age)
linear model 함수(lm)를 이용하여 최적선 (Line of Best Fit)을 구하고, abline()을 이용하여
plot에 직선을 추가한 모습입니다.
선형회기 모델(y = ax + b) 에서 최적의 a와 b를 구하기 위해 정규 최소 제곱으로 알려진 추정 기법을 사용합니다.
위의 그림과 같이 선형회기식에서 예측되는 y값과 실제 y값의 차이는 error residual 이라고 하는데,
이를 최소로 하는것이 바로 정규 최소제곱의 목적입니다.
실제 y값과 예측된 y값의 차이로 error residual = e를 정의한다.
다음의 방정식을 최소화 하는 방식으로 선형회귀계수가 정의된다.
- 선형회귀 결과해석 및 단순 예측
> res
Call:
lm(formula = height ~ age)
Coefficients:
(Intercept) age
64.928 0.635
>
lm() 함수로 나온 결과는 다음과 같이 해석할 수 있습니다.
intercept (y 절편) : 64.928
age (독립변수의 기울기): 0.635
키 = 0.635 * 나이 + 64.928
height = 0.635*age + 64.928
따라서, 위의 데이터를 이용해서 구해진 선형회귀 식은 위와 같고,
age 변수에 태어난지 몇달 되었는지에 대한 값을 넣어주면, 평균적인 키를 예측하실 수 있을 것입니다.
따라서 태어난 직후 24개월 된 아이의 키는
height = 0.635*age + 64.928 = 0.635*24 + 64.928 = 80.168cm로 예측할 수 있겠습니다.
> summary(res)
Call:
lm(formula = height ~ age)
Residuals:
Min 1Q Median 3Q Max
-0.27238 -0.24248 -0.02762 0.16014 0.47238
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 64.9283 0.5084 127.71 < 2e-16 ***
age 0.6350 0.0214 29.66 4.43e-11 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.256 on 10 degrees of freedom
Multiple R-squared: 0.9888, Adjusted R-squared: 0.9876
F-statistic: 880 on 1 and 10 DF, p-value: 4.428e-11
이 선형회귀 모델은 유의하느냐? 에 대한 답은 F-통계량의 p-value를 이용해서 확인하실 수 있습니다.
이는 summary(res)를 통해 알 수 있으며 마지막 부분의 p-value가 4.428e-11로 0.05보다 매우 작으면 유의하다고 할 수 있습니다.
일반적으로 모형이 x%로 유의하려면 F-통계량의 p-value가 1-x%보다 작아야합니다.
- 분산분석
단순히 24개월 된 아이의 키가 '몇 cm' 인지 바로 예측 할 수 있지만, 사실 하나의 값으로 나타낼 이유가 전혀 없습니다.
왜냐하면 대부분의 통계값들이 그렇듯, 하나의 독립변수(x)에 의해 나타날 수 있는 종속변수(y)는 다양할 수 있기 때문입니다.
따라서 회귀를 이용하여 특정 독립변수에서의 종속변수 값을 얘기할 때는,
몇 % 확률도 a~b 사이에 존재할 것이다. 라고 이야기합니다.
anova 함수를 이용한다면 선형회귀 모델의 분산분석표를 쉽게 구할 수 있습니다.
> res_anova = anova(res)
> res_anova
Analysis of Variance Table
Response: height
Df Sum Sq Mean Sq F value Pr(>F)
age 1 57.655 57.655 879.99 4.428e-11 ***
Residuals 10 0.655 0.066
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
분산분석표를 보면 종속변수 age가 유의하다는 것을 알 수 있습니다.
- 신뢰구간과 예측
> summary(res)
....
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 64.9283 0.5084 127.71 < 2e-16 ***
age 0.6350 0.0214 29.66 4.43e-11 ***
...
> confint.default(res) #confint(res, level=0.95)
2.5 % 97.5 %
(Intercept) 63.9318559 65.9247874
age 0.5930125 0.6769176
confint 함수는 신뢰구간(confidence interval)을 계산해주는 함수입니다.
confint로 부터 나온 age의 구 구간 차를 2로 나누면 0.04195255이란 값을 구할 수 있습니다.
이 값은 1.96 * 0.0214 = 0.041944로 직접 구한것과 비슷하죠?
summary(res)에 나오는 결과를 이용하여 직접 계산해 볼 수도 있습니다.
- 0.635 ± 1.96 * 0.0214 = (0.593056, .676944)
선형회귀 모델에서는 독립변수의 모든 범위에 대해서 같은 분포를 가진다고 가정하기 때문에
신뢰구간은 다음과 같이 공식화 할 수 있습니다.
height = 0.635*age + 64.928 ± 0.04195255
따라서 24개월된 아이의 크기는 95% 신뢰구간으로
80.168 ± 0.04195255, 즉
(80.12605, 80.20995) 범위를 가진다고 예측할 수 있습니다.
'Programing > R- programming' 카테고리의 다른 글
카플란 메이어 (kaplan meier) 생존분석 - R (3) | 2015.04.22 |
---|---|
R을 이용하여 엑셀(excel) 파일 읽고 쓰기 (2) | 2015.04.19 |
리눅스에서 R 가로넓이 조절하기 (0) | 2015.03.20 |
R - One sample T-test / T 검정 (3) | 2015.02.08 |
IQR Rule for Outliers - 이상치 (2) | 2015.02.04 |