저번 포스팅에서는 회귀계수에 최소제곱법을 이용하여 $\beta_{1}^{LSM}$과 $\beta_{2}^{LSM}$의 추정량을 보이고 실습했습니다.
이번 포스팅에서는 회귀계수추정량의 표준오차와 검정 그리고 모델의 평가에 대해 알아보겠습니다.
1. 회귀계수추정량의 평균과 표준오차
회귀계수추정량은 모회귀의 절편과 기울기를 나타내는 확률변수이기 때문에 평균과 표준오차(통계량의 표준편차)를 구할 수 있는데요. 오차의 가정(오차의 등분산성, 오차의 무상관성, 정규분포)하에서 아래가 성립합니다.
$$\widehat{\beta_0} \sim N(\beta_0, \sigma^2[\frac{1}{n} + \frac{\overline{X}^2}{\sum_{i=1}^{n}{(X_i - \overline{X})^2}}])$$
$$\widehat{\beta_1} \sim N(\beta_1, \frac{\sigma^2}{\sum_{i=1}^{n}{(X_i - \overline{X})^2}}])$$
이때 $\sigma^2$는 모회귀에서의 오차의 분산으로 샘플 데이터를 받아서 분석하는 저희는 일반적으로 알기 힘든 값입니다.
따라서 샘플 데이터에서 추정해야하며 이때 $\sigma^2$의 추정치는 아래와 동일합니다.
$$\hat{\sigma}^2 = \frac{RSS}{n-2} = MSE$$
2. 회귀계수의 신뢰구간
이제 회귀계수의 평균과 표준오차 그리고 분포를 알기에 검정을 위한 모든 준비가 끝났습니다. 회귀계수는 정규분포를 따르지만 $\sigma$를 알지못해 표본에서 추출한 추정량 $\hat{\sigma}^2$을 사용한다면 신뢰구간 및 계수의 검정에는 T-검정을 사용해야 합니다. (만약 $\sigma$를 알고 있다면 Z-검정을 사용) 따라서 회귀계수의 $100(1-\alpha)$% 신뢰구간은 다음과 같습니다.
$$ \hat{\beta_0} \pm t_{1-\frac{\alpha}{2}, (n-2)} * \hat{\sigma} \sqrt{ \frac{1}{n} + \frac{\overline{x}^2}{\sum{ (x_i - \overline{x})^2 }} }$$
$$ \hat{\beta_1} \pm t_{1-\frac{\alpha}{2}, (n-2)} * \frac{\hat{\sigma}}{\sqrt{\sum(x_i-\overline{x})^2}} $$
3. 회귀계수의 통계적검정
또한 통계적 검정은 다음과 같이 할 수 있습니다. (아래 가설 말고 다양하게 설정할 수 있습니다)
$H_0 : \beta_1 = 0$
$H_1 : \beta_1 \neq 0$
$H_0$가 사실이라면 X의 값이 주어지든 Y에 영향을 끼치지 않으므로 이는 상관관계가 없다고 생각할 수 있습니다.
즉 위의 가설은 X와 Y의 상관관계를 검정하는 가설이라고 생각할 수 있고 검정통계량은 다음과 같습니다.
$$t = \frac{\hat{\beta_1} - 0}{SE(\hat{\beta_1})} \sim t_{1-\frac{\alpha}{2}, (n-2)}$$
이때 검정통계량에 대한 P-value를 계산해 유의수준보다 작다면 귀무가설을 채택하고, 크다면 귀무가설을 기각하면 됩니다.
4. 모델의 정확도 평가
모델이 얼마나 데이터를 잘 표현하는지 수량화하여 성능에 대해 유추해 볼 수 있는데요.
많이 사용하는 측도가 잔차표준오차(RSE)와 $R^2$(결정계수) 입니다.
1. RSE (잔차표준오차)
- 오차항의 표준편차에 대한 추정값으로 반응변수 값이 실제 회귀선으로부터 벗어나게 될 평균값
- 잔차표준오차(s)가 작을수록 적합이 잘된 것으로 판단할 수 있음
- $RSE = \sqrt{\frac{RSS}{n-2}} = \sqrt{MSE}$
2. $R^2$ (결정계수)
- $\frac{ESS}{TSS} = \frac{ESS}{ESS+RSS}$
- 0과 1사이에 존재하며 1에 가까울수록 추정된 회귀식으로 인해 데이터의 총변동을 많이 설명할 수 있다는 뜻
- 잔차표준오차와 같이 어느정도의 값이 좋은지에 대한 기준이 없음
- 단순선형회귀분석에서 $R^2=Cor(X,Y)^2$임을 보일 수 있음
5. 실습
library(tidyverse)
# displ : 배기량, hwy : 연비
mpg %>% ggplot(mapping=aes(x=displ, y=hwy)) + geom_point() + geom_smooth()
mpg 데이터셋에 포함된 변수인 displ, hwy에 대해 단순선형회귀분석을 진행해 보려고합니다.
이때 ggplot2를 이용해 두 변수의 산점도와 loess 회귀 적합선을 그려서 전체적인 트랜드를 파악하고자 하였습니다.
일반적으로 같은 조건에서 배기량이 높으면 연비는 안좋다고 알고 있는데 그래프에서도 displ(배기량)이 증가할수록 연비(hwy)는 떨어지는 경향을 보이네요.
lm.fit <- lm(hwy~displ, data=mpg)
summary(lm.fit)
우선 선형회귀분석을 함수를 이용해 적합하였습니다.
결과를 보면 절편(Intercept)의 추정값은 35.6977, displ(배기량)의 회귀계수 추정값은 -3.5306이네요.
또 절편 추정량의 표준오차는 0.7204, displ의 회귀계수추정량의 표준오차는 0.1945이네요.
앞에서 살펴본 공식으로 같은 값이 나오는지 확인하겠습니다.
beta1 = cov(x,y)/var(x)
beta0 = mean(y) - beta1*mean(x)
n = length(x)
residual = y - (beta0 + beta1*x)
RSS = sum(residual^2)
sigma_hat = sqrt(RSS/(n-2))
beta1_se = sigma_hat/sqrt(sum({x-mean(x)}^2))
beta0_se = sigma_hat*sqrt(1/n+mean(x)^2/sum({x-mean(x)}^2))
sprintf("[beta0] Mean=%.4f and SE=%.4f", beta0, beta0_se)
sprintf("[beta1] Mean=%.4f and SE=%.4f", beta1, beta1_se)
공식에 데이터를 대입해 얻은 값과 함수를 이용해 얻은 추정량의 평균과 표준오차는 같은것을 알 수 있습니다.
회귀계수에 대한 신뢰구간은 confint(lm.fit)함수로 알 수 있는데 코드와 결과는 다음과 같습니다.
confint(lm.fit)
절편에 대한 95% 신뢰구간은 [34.2783, 37.1169]이며 displ의 회귀계수에 대한 95% 신뢰구간은 [-3.9138, -3.1473]이네요.
이 역시 위 공식을 통해 같은 결과를 도출할 수 있는데 코드는 아래와 같습니다.
alpha=0.05
beta0 + c(-1,1)*qt(p=1-alpha/2, df=n-2)*beta0_se
beta1 + c(-1,1)*qt(p=1-alpha/2, df=n-2)*beta1_se
마지막으로 잔차표준오차와 결정계수를 계산해보겠습니다.
전차표준오차는 오차항의 표준편차를 추정하는 통계량으로 계산되며 위 summary(lm.fit)의 결과로 Residual standard error : 3.836이라는 부분이 보이나요? 이것이 잔차표준오차를 의미하므로 데이터에서 계산된 잔차표준오차는 3.836이 되겠네요!
그리고 결정계수$R^2$는 Multiple R-squared : 0.5856에서 확인할 수 있는데 여기서는 0.5856의 결정계수를 가지고 있네요.
n = length(x)
residual = y - (beta0 + beta1*x)
RSS = sum(residual^2)
RSE = sqrt(RSS/(n-2))
SSE = sum(residual^2)
SST = sum({y-mean(y)}^2)
R_square = 1- SSE/SST
sprintf("[RSE] %.3f, [R_Sqaure] %.4f", RSE, R_square)
유도한 공식에 대입한 결과 역시 동일합니다.
자세한 내용은 https://moogie.tistory.com/32를 참고하면 좋습니다.
'AI > Machine Learning' 카테고리의 다른 글
[ISR] 3. 선형회귀(Linear Regression) Part 4 (0) | 2023.03.09 |
---|---|
[ISR] 3. 선형회귀(Linear Regression) Part 3 (0) | 2023.03.08 |
[ISL] 3. 선형회귀(Linear Regression) Part 1 (0) | 2023.02.28 |
[ISR] 2. Bayes Classifier & KNN (2) | 2023.02.20 |
[ISR] 2. 통계학습(Statistical Learning) (0) | 2023.02.20 |