12-03 00:44
Notice
Recent Posts
Recent Comments
관리 메뉴

Scientific Computing & Data Science

[Data Mining with R] R / Simple Linear Regression - Part 2. 본문

Data Science/Data Mining with R Programming

[Data Mining with R] R / Simple Linear Regression - Part 2.

cinema4dr12 2014. 12. 14. 18:15

by Geol Choi | 


이번 글에서는 기울기 \(\beta_{1}\)에 대한 추정에 대하여 알아보도록 하자. 우선 이론적 배경을 살펴보도록 하고 R 코드를 이용하여 예제를 통해 이해하도록 한다.

Theoretical Background

기울기 \(\beta_{1}\)은 실험자에게 특별한 관심 대상인데, 실험 값 x와 이에 대한 결과 값 y의 상관성 지표를 나타내기 때문이다. 기울기 값에 대한 신뢰 구간(confidence interval)을 계산하는 것과 기울기 값이 특정 값을 값는 것에 대한 가설을 테스트하는 것은 매우 유용하다.


\(\beta_{1}\)을 실험 데이터에 대한 알려지지 않은 참값(True Value)라고 하고 \(\hat{\beta}_1\)을 데이터 세트(Data Set)에 대한 Linear Regression을 통해 얻어진 직선의 추정 기울기 값이라고 하자. 기울기에 대한 점 추정(Point Estimate)은,


\(\hat{\beta}_{1}=\frac{S_{XY}}{S_{XX}}\)


과 같다.


\(S_{XY}=\sum_{i}^{n}{(x_{i}-\bar{x})(y_{i}-\bar{y})}=\sum_{i}^{n}{(x_{i}-\bar{x})y_{i}}-\bar{y}\sum_{i}^{n}{(x_{i}-\bar{x})}\)   (1)


이며,


\(\sum_{i=1}^{n}{x_{i}}=n\bar{x}\)  (2)


이므로, 식(1)의 우변 두번째 항(Term)은


\(\sum_{i=1}^{n}{(x_{i}-\bar{x})}=\sum_{i=1}^{n}{x_{i}-n}=n\bar{x}-n\bar{x}=0\)  (3)


이 된다. 그러므로,


\(S_{XY}=\sum_{i=1}^{n}{(x-{i}-\bar{x})y_{i}}\)  (4)


이 된다. 따라서 \(\hat{\beta}_{1}\)은 다음과 같이 정리할 수 있다:


\(\hat{\beta}_{1}=\frac{S_{XY}}{S_{XX}}=\frac{\sum_{i=1}^{n}{(x_i - \bar{x})}}{S_{XX}}y_{i}=\sum_{i=1}^{n}{c_{i}y_{i}}\)  (5)


\(c_{i}=\frac{(x_{i}=\bar{x})}{S_{XX}}\)  (6)


식(5)는 점 추정 \(\hat{\beta}_1\)이 랜덤 변수 \(Y_{i}\)를 따른다는 것을 나타내고 있다. 즉,


\(Y_{i}\sim N(\beta_{0}+\beta_{1}x_{i},\sigma^2)\), \(1\le i \le n\)  (7)


이며, 따라서


\(\hat{\beta}_{1} \sim \sum_{i=1}^{n}{c_{i}Y_{i}}\)  (8)


이다.

이번에는 \(\hat{\beta}_1\)의 기대값과 분산값을 계산해 보자. 우선 기대값은


\(E(\hat{\beta}_1)=E(\sum_{i=1}^{n}{c_{i}Y_{i}})=\sum_{i=1}^{n}{c_{i}E(Y_i)}=\sum_{i=1}^{n}{c_{i}(\beta_{0}+\beta_{1}x_{i})}\)

\(=\beta_{0}\frac{\sum_{i=1}^{n}{(x_{i}-\bar{x})}}{S_{XX}}+\beta_{1}\frac{\sum_{i=1}^{n}{(x-{i}-\bar{x})}}{S_{XX}}\)

\(=0+\beta_{1}\frac{\sum_{i=1}^{n}{x_i^2-n\bar{x}^2}}{S_{XX}}=\beta_{1}\frac{S_{XX}}{S_{XX}}=\beta_{1}\)  (9)


즉, \(\hat{\beta_1}\)은 기울기 참값 \(\beta_1\)의 비편향 점 추정(Unbiased Point Estimate)라고 할 수 있다. 또한 \(\hat{\beta}_1\)의 분산은


\(\mathrm{Var}(\hat{\beta}_{1})=\mathrm{Var}(\sum_{i=1}^{n}{c_{i}Y_{i}})=\sum_{i=1}^{n}{c_{i}^{2}\mathrm{Var}(Y_i)}=\sigma^2\sum_{i=1}^{n}{c_i^2}\)

\(=\sigma^{2}\sum_{i=1}^{n}{\frac{(x_{i}-\bar{x})^2}{S_{XX}^2}}=\frac{\sigma^2}{S_{XX}^2}\sum_{i=1}^{n}{(x_{i}-\bar{x})^2}=\frac{\sigma^2}{S_{XX}^2}S_{XX}=\frac{\sigma^2}{S_{XX}}\)


따라서 점 추정 \(\hat{\beta}_1\)의 표준 오차(Standard Error)는


\(s.e.(\hat{\beta}_1)=\frac{\sigma}{\sqrt{S_{XX}}}\)  (11)


이며, 이에 대한 추정은 다음과 같다.


\(\frac{\hat{\sigma}}{\sqrt{S_{XX}}}\)


결론적으로 \(\hat{\beta_{1}}\)은 다음과 같은 정규분포를 따른다고 할 수 있다.


\(\hat{\beta_1} \sim N \begin{pmatrix}\frac{\sigma^2}{S_{XX}}\end{pmatrix}\)  (12)


이를 기대값 0, 분산 \(1^2\)인 표준정규분포로 변환하면


\(\frac{\hat{\beta_1 - \beta_1}}{\sqrt{\frac{\sigma^2}{S_{XX}}}} \sim N(0,1)\)  (13)


이며, 오차 분산의 추정은 다음과 같다.


\(\hat{\sigma}^2 \sim \sigma^2\frac{\chi_{n-2}^2}{n-2}\)  (14)


식(13)과 식(14)로부터 (n-2)의 자유도를 갖는 t-분산을 얻을 수 있다:


\(t_{n-2} \sim \frac{N(0,1)}{\sqrt{\frac{\chi_{n-2}^2}{n-2}}} \sim \frac{\frac{\hat{\beta}_1-\beta_1}{\sqrt{\frac{\sigma^2}{S_{XX}}}}}{\frac{\chi_{n-2}^2}{n-2}} \sim \frac{\hat{\beta}-_1\beta_1}{\sqrt{\frac{\sigma^2}{S_{XX}}\frac{\chi_{n-2}^2}{n-2}}} \sim \frac{\hat{\beta}-_1\beta_1}{\sqrt{\sigma^2\frac{\chi_{n-2}^2}{n-2}}\frac{1}{S_{XX}}} \sim \frac{\hat{\beta}_1-\beta_1}{\sqrt{\frac{\hat{\sigma}^2}{S_{XX}}}}\)  (15)


이들로부터 파라미터 \hat{\beta}_1에 대한 신뢰구간은 다음과 같이 계산된다:


\(\beta_1 \in (\hat{\beta}_1 - \mathrm{Critical\,Point}\times s.e.(\hat{\beta}_1), \hat{\beta}_1 + \mathrm{Critical\,Point} \times s.e.(\hat{\beta}_1))\)


여기서 Critical Point는 (n - 2) 자유도를 갖는 t-분산으로부터 얻을 수 있다.

t-통계와 (n - 2) 자유도를 갖는 t-분산을 비교하여 파라미터 \(\hat{\beta}_1\)의 값에 관한 가설검증을 할 수 있다. 귀무가설(Null Hypothesis) \(H_0:\beta_1=0\)는 꽤 흥미로운 가설이다. 왜냐하면 이 가설이 참이라면 기울기가 0이라는 의미이며 따라서 종속변수는 통제변수에 영향이 없다는 의미가 되기 때문이다.


다음은 기울기 파라미터 \(\hat{\beta}_1\)에 대한 추정을 정리한 것이다:


(1) 유의수준 1 - α 를 갖는 Two-side 신뢰구간


즉,

(2) Two-side 가설

versus

에 대한 t-통계를 통한 검증



p-value는



인 경우 귀무가설을 기각한다.

Examples

지난 글과 마찬가지로 R의 빌트-인(built-in) 데이터인 mtcars를 예롤 들어 설명하도록 하겠다. 통제변수를 mpg로, 종속변수를 disp로 한다. 



기울기 \(\hat{\beta})_1\)에 대한 표준오차 s.e.



이며, 이를 구하기 전 오차분산 \(\hat{\sigma}\)은 다음과 같이 구할 수 있다.



따라서 \(\hat{\sigma}\)



귀무가설 \(H_0:\beta_1=0\)을 검증하기 위한 t-통계는



이며, \(\mathrm{p-value}=2 \times P(X>|t|)\)이므로



이다. 이렇게 낮은 p-value는 귀무가설이 유효하지 않으며 즉 기울기 파라미터가 0이 아님을 의미하는 것이다. 다시 말해서 dispmpg에 의존함을 의미한다.

기울기 파라미터에 대한 99% Two-side 신뢰구간에 대한 t-통계는



이다. 이를 구하는 이론은 여기를 참고하기 바라며, 이에 대한 R 코드는 다음과 같다.


qt(c(.005, .995), df = 30)


여기서 df는 자유도(Degrees of Freedom)를 의미하며, n = 32이므로 df = n - 2 = 30이 된다.

R 콘솔의 결과 출력은 다음과 같다:


> qt(c(.005, .995), df = 30)
[1] -2.749996  2.749996


최종적으로 신뢰구간 계산은 다음과 같다.



즉 99% 신뢰수준으로 \(\hat{\beta}_1\)의 신뢰구간은 -22.91과 -11.95 사이이다.


Linear Regression에 대한 \(\hat{\beta}_1\)과 \(\hat{\beta}_0\)에 대한 각종 정보는 다음의 R 코드로부터 얻을 수 있다:


df = data.frame(mpg = mtcars$mpg, disp = mtcars$disp);

x = df$mpg;
y = df$disp;

# number of data points
n = length(x);

lr = lm(y ~ x);

summary(lr)


R 콘솔의 출력은 다음과 같다:


> summary(lr)

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-103.05  -45.74   -8.17   46.65  153.75 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  580.884     41.740  13.917 1.26e-14 ***
x            -17.429      1.993  -8.747 9.38e-10 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 66.86 on 30 degrees of freedom
Multiple R-squared:  0.7183,	Adjusted R-squared:  0.709 
F-statistic: 76.51 on 1 and 30 DF,  p-value: 9.38e-10


이것으로 이번 글을 마무리한다.

다음 글에서는 Regression Line에 대한 추정에 대하여 알아보도록 한다.

Comments