Must Learning With Statistics

회귀분석(R Code) 본문

통계 이론

회귀분석(R Code)

Doublek Park 2020. 3. 23. 01:26
11. 회귀분석(R Code)

회귀분석은 제가 만들어 둔 데이터로 진행을 하도록 하겠습니다.
데이터 다운로드 링크 : https://www.dropbox.com/sh/vtqlvrgdts2yfez/AAD_cd49dBcvgBNdz-C-A6TFa?dl=0

# 데이터 불러오기
Regression = read.csv("F:\\Dropbox\\DATA SET(Dropbox)/Regression.csv")

산점도

회귀분석은 우선적으로 산점도를 그려보고 선형성을 판단해야됩니다.

library(ggplot2)

ggplot(Regression,aes(x = X , y = y)) +
 geom_point() +
 geom_smooth(method = 'lm') +
 theme_classic()

산점도를 그려본 결과 X와 y는 선형 관계를 가지고 있는 것을 알 수 있습니다. 이런 경우 단순 선형 회귀분석을 진행하면 됩니다.

회귀분석

Reg = lm(y ~ X  , data = Regression)
anova(Reg)
Analysis of Variance Table

Response: y
           Df Sum Sq Mean Sq F value    Pr(>F)    
X           1 143757  143757  3882.2 < 2.2e-16 ***
Residuals 148   5480      37                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(Reg)

Call:
lm(formula = y ~ X, data = Regression)

Residuals:
    Min      1Q  Median      3Q     Max 
-9.5537 -5.7116  0.2738  5.0961 10.2835 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   1.9839     0.9975   1.989   0.0486 *  
X            10.0924     0.1620  62.308   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 6.085 on 148 degrees of freedom
Multiple R-squared:  0.9633,    Adjusted R-squared:  0.963 
F-statistic:  3882 on 1 and 148 DF,  p-value: < 2.2e-16

$p-value$는 0과 매우 가까운 값입니다. 그러므로 회귀분석의 귀무가설($H_0:회귀식은\ 유의하지\ 않다$)을 기각하게 됩니다. 즉, 회귀선은 유의합니다.

R분석 결과를 자세히 보도록 하겠습니다.

  • Residuals는 $y_i-\hat{y_i}$의 요약 값을 나타냅니다.

  • Coefficients는 추정된 회귀식을 나타냅니다.

  • Estimate는 회귀식의 절편과 기울기를 나타냅니다.

  • (Intercept) : $b_0$의 값은 1.9839입니다.

  • $X$ : $b_1$의 값은 10.0924입니다.

  • Pr(>|t|)는 각각 $b_0$, $b_1$에 대한 가설검정 결과를 나타냅니다.
    만약 설명 변수를 여러 개 사용하는 다중 회귀분석을 진행할 경우, 각 설명 변수에 대한 가설 검정을 진행하게 될 것입니다.

  • Multiple R-squared는 회귀모형의 $R^2$를 나타냅니다.

  • Adjusted R-squared는 조금은 다른 $R^2$를 나타냅니다.

  • 일반적으로 회귀 모형은 설명 변수가 많을 수록 설명력은 높아지는 구조를 가지고 있습니다.

  • 만약 다른 변수로 구성 된 두 회귀 모형의 설명력을 비교하고자 할 때 Adjusted R-squared를 사용합니다.

$$
Model_1:\hat{y_i}=b_0+b_1x_{1i}+b_2x_{2i}
$$
$$
Model_2:\hat{y_i}=b_{0^*}+b_1x_{1i}+b_2x_{2i}+b_3x_{3i}
$$

예를 들어 회귀식이 2개가 있고 두 모형 중 $R^2$가 더 높은 모형을 택하고자 합니다.
$Model2$는 3개의 설명 변수가 투입되었기에 설명 변수를 2개를 투입한 $Model1$에 비해 우위에 있습니다. $R^2$ 의 구조상 설명변수가 많아지면 항상 오를 수 밖에 없는 구조이기 때문입니다. 그렇지만 설명 변수가 많은 것은 항상 바람직한 것이 아닙니다. 그만큼 많은 계수를 추정해야하기 때문이죠. 그렇기에 설명 변수가 더 많이 투입된 부분을 보정해주어 더 바람직한 모형의 기준을 제시해 주는 $R^2$값이 Adjusted R-square입니다.

  • p-value : 회귀모형에 대한 유의성을 나타냅니다.

회귀분석의 결과를 정리하면 다음과 같습니다.

  • 적합된 회귀선은 $\hat{y_i}=1.9839 +10.0924x_i$입니다. $x_i$가 한 단위 증가하면 $\hat{y_i}$는 10.0924만큼 증가합니다.
  • $R^2$는 0.963으로 96%의 설명력을 가진다고 볼 수 있습니다.

잔차 진단

회귀분석을 진행한 후에는 항상 가정 검토를 위해 잔차진단을 해야합니다. 회귀분석에서의 가정은 정규성, 등분산성, 독립성입니다. 그런데 독립성은 데이터가 수집되는 과정에서 확인하여야 할 가정이므로 수집된 데이터로 분석이 진행된 상황에서는 확인할 수 없습니다. 그렇기에 여기서는 정규성, 등분산성을 다루고, 추가적으로 영향점이라는 것을 다루도록 하겠습니다.

plot(Reg)

)))

  • 정규성
qqnorm(Reg$residuals)

회귀분석에서 잔차의 정규성을 진단하는 이유는 신뢰구간 추정과 가설검을 정확하게 하기 위해서 진행합니다. 우측 상단에 배치되어 있는 Normal Q-Q를 보면 됩니다. x축은 Theoretical Quantiles이며, y축은 Standardized Residuals입니다. QQ plot은 역확률을 이용하여 두 분포를 비교하는 plot입니다. 여기서는 정규분포와 잔차의 분포를 비교하고 있습니다. 만약 선이 대각선을 따라가는 일직선이라면 그만큼 잔차의 분포는 정규분포와 비슷하다고 볼 수 있습니다. 반대로 선이 대각선과는 멀어지는 곡선 형태라면 그만큼 잔차의 분포는 정규분포와 다르다는 것을 의미합니다.

  • 등분산성

등분산성은 회귀분석에서 매우 중요한 가정 중 하나 입니다. 여기서 등분산의 주체는 오차입니다. 그렇지만 실제 오차를 정량화 할 수 없으니 오차의 추정치로써 잔차를 사용하게 됩니다. 잔차는 추정된 회귀선과 실제 값의 차이입니다. 즉, 등분성을 보는 것은 선과 점 사이의 거리가 패턴이 없이 일정한가를 보는 것과 같습니다.

이를 확인하기 위해 조금 극단적인 예를 보겠습니다.

좌측 산점도와 우측 산점도가 있을 때, 두 산점도에 회귀선을 적합시켜보도록 하겠습니다.

우측의 회귀선은 직관적으로 판단해도 회귀선에 문제가 없습니다. 하지만 좌측 회귀선은 그러지 못합니다. 그 이유는 회귀선과 데이터의 차이(잔차)가 x가 커지면서 같이 늘어나고 있기 때문입니다. 즉, 등분산성을 만족한다고 할 수 없습니다. 이 때는, 회귀선이 데이터를 잘 설명한다고 보기 어렵습니다. 이처럼 회귀분석에서 등분산성이 위배되면 회귀분석은 데이터를 설명하지 못한다고 판단하기 때문에 좋은 회귀선이라고 할 수 없습니다.
좌측의 회귀선에 대한 잔차의 등분산 진단 그래프로 보면 다음과 같은 플롯을 확인할 수 있습니다.

x축은 Fitted value입니다. 즉, $\hat{y_i}$를 의미합니다. y축은 Resiuals($y_i-\hat{y_i}$)을 의미합니다. 잔차가 추정값이 증가함에 따라 증가하는 패턴을 보이고 있습니다. 위에서 말씀드린 것처럼 등분산성을 만족하지 못한다는 것을 알 수 있습니다.
다시 데이터로 돌아와서 위에서 그린 잔차진단 그래프를 확인해보겠습니다. 등분산성은 좌측 상,하 그래프를 보면 됩니다.

좌측은 y축이 Residuals, 우측은 y축이 표준화 잔차값입니다. 이는 또한 설명변수와 반응 값과의 관계를 확인 할 수도 있습니다. 만약 패턴이 존재하지 않는다면 상관 없지만 Fitted value 에 따라 잔차가 특정한 패턴을 보인다면 다른 분석을 고려하거나 설명변수의 변환을 생각해 보아야합니다.

  • 독립성
    ggplot(NULL) +
    geom_point(aes(x = 1:nrow(Regression), y = Reg$residuals)) +
    geom_hline(yintercept = 0, linetype = "dashed",col = 'red') + 
    xlab("Index") + ylab("Residuals") + 
    theme_bw()

잔차의 독립성이란, 잔차가 ’자기상관(Auto correlation)’이 있는지 없는지 판단하는 것입니다. 우리는 확률변수 및 확률분포를 다룰 때, 모든 확률실험은 독립시행을 했다고 가정을 하였습니다. 이 말은 전 시점에서의 확률실험이 현재의 확률실험에 영향을 주지 못하며, 지금의 확률실험은 미래의 결과에 영향을 주지 못한다는 것입니다. 이를 ’자기상관’이라고 합니다. 대표적으로 주식, 날씨 등이 해당이 됩니다. 만약, 독립성이 위배가 된다면 이 떄는 시계열 분석(Time Series)방법론을 이용하여 회귀분석을 해야 합니다. 검정방법은 매우 간단합니다. Durbin-Watson검정을 하는 방법도 있지만, 잔차들을 시점 순서대로 그래프를 그린다 다음, 패턴이 없다면 독립성을 충족한다고 판단할 수가 있습니다.

  • 영향점

회귀분석과 같은 통계모형에는 영향점이라는 것이 존재합니다. 영향점은 쉽게 설명하면 회귀선을 자기 자신한테 당겨오는 데이터입니다. 즉 회귀선의 무게중심과 멀리 있어, 이에 영향을 준다고 볼 수 있습니다. Cook’s distance라는 값을 계산하여 영향점을 판단합니다. plot에 찍힌 92, 134, 144번째 데이터가 회귀선에 영향을 주고 있음을 나타내고 있습니다. 이 점들은 회귀선을 기울기에 크게 영향을 주어 예측에 왜곡을 줄 수 있습니다. 영향점을 발견하였을 경우, 먼저 영향점에 대한 확인이 필요합니다. 영향점은 일반적인 x와 먼 값을 갖고 있으면서 높은 잔차를 보이므로 우선적으로 x값이 정당한 값인가를 확인해야 합니다. 측정 자체가 잘못되었을 가능성이 있기 때문입니다. 또한 예측에 목적이 있다면 해당 데이터를 제거하고 회귀분석을 진행하는 방법도 고려해야 합니다.

'통계 이론' 카테고리의 다른 글

다항 회귀분석(Polynomial Regression)  (0) 2020.03.23
다중 회귀분석(Multiple Regression)  (0) 2020.03.23
단순 선형 회귀분석의 추정  (0) 2020.03.23
상관분석 (R code)  (0) 2020.03.23
상관분석  (0) 2020.03.23
Comments