일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 빅데이타
- data science
- R
- 확률
- No SQL
- 데이터 과학
- 딥러닝
- 김양재 목사님
- Artificial Intelligence
- 빅 데이터
- Machine Learning
- nodeJS
- 빅데이터
- 몽고디비
- openCV
- 우리들교회
- 주일설교
- 통계
- 김양재 목사
- c++
- Deep learning
- 김양재
- MongoDB
- Big Data
- 인공지능
- Statistics
- probability
- WebGL
- node.js
- 빅 데이타
- Today
- Total
Scientific Computing & Data Science
[Data Mining with R] R / Simple Linear Regression - Part 2. 본문
[Data Mining with R] R / Simple Linear Regression - Part 2.
cinema4dr12 2014. 12. 14. 18:15by 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이 아님을 의미하는 것이다. 다시 말해서 disp가 mpg에 의존함을 의미한다.
기울기 파라미터에 대한 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에 대한 추정에 대하여 알아보도록 한다.
'Data Science > Data Mining with R Programming' 카테고리의 다른 글
[Data Mining with R] R / How to download "shinyapps" Package (0) | 2015.01.08 |
---|---|
[Data Mining with R] R / Deploying Shiny Server on Amazon EC2 (0) | 2015.01.04 |
[Data Mining with R] R / Simple Linear Regression - Part 1. (0) | 2014.11.23 |
[Data Mining with R] R과 MongoLab 연동하기 팁 (0) | 2014.11.03 |
[Data Mining with R] ShinyApps / Reactive Output에 대하여 (0) | 2014.11.02 |