R - 다중회귀분석 (Multiple Linear Regression)
R 을 통해 다중회귀분석을 수행하는 기본적인 절차를 포스팅합니다.
라이브러리 임포트
datarium 의 marketing 이라고 하는 데이터셋을 이용하여 다중회귀분석을 수행한다.
library(devtools) # install_github("kassambara/datarium") library(tidyverse) library(datarium) data("marketing", package = "datarium") head(marketing, 4)
탐색적 자료분석 - 데이터 분포 살펴보기
가장 먼저 할 일은 데이터의 분포를 살펴보는 것이다.
ggplot(data = marketing, aes(x = newspaper, y = sales)) + geom_point(size=5)
위와 같이 하나하나 산점도를 볼 수 있지만, 아래처럼 모든 변수들의 분포 (Variation)와 두 변수의 관계 (Covariation) 한 번에 볼 수 있도록 하는 라이브러리들이 많이 존재한다. 예를 들어, PerformanceAnalytics 라이브러리를 이용하면 아래와같이 한 번에 분포와 상관계수까지 구할 수 있다.
library("PerformanceAnalytics") chart.Correlation(marketing, histogram=TRUE, pch=19)
모델 만들기
sales = b0 + b1youtube + b2facebook + b3*newspaper
분포를 봤을 때, youtube, facebook, newspaper 가 sales와 선형관계를 갖고 있다고 가정하고 위와 같이 다중 회귀 모델을 만들 수 있으며, 아래 R 코드를 통해 모델을 적합시킬 수 있다.
model <- lm(sales ~ youtube + facebook + newspaper, data = marketing) summary(model)
Call:
lm(formula = sales ~ youtube + facebook + newspaper, data = marketing)
Residuals:
Min 1Q Median 3Q Max
-10.5932 -1.0690 0.2902 1.4272 3.3951
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.526667 0.374290 9.422 <2e-16 ***
youtube 0.045765 0.001395 32.809 <2e-16 ***
facebook 0.188530 0.008611 21.893 <2e-16 ***
newspaper -0.001037 0.005871 -0.177 0.86
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.023 on 196 degrees of freedom
Multiple R-squared: 0.8972, Adjusted R-squared: 0.8956
F-statistic: 570.3 on 3 and 196 DF, p-value: < 2.2e-16
결과 해석
Regression 결과를 해석하는데, 가장 먼저할 것은 F-statistics 를 확인하는 것이다. 가장 밑에 F-statistics 를 보면, p-value가 매우 작아, 최소 한 변수가 유의하다는 것을 알 수 있다. 어떤 변수가 유의한지를 확인하기 위해, 아래 coefficient table 을 보면 된다. 이 때, t-value와 p-value 는 귀무가설 평균=0 로 놓고 구한 값으로, 귀무가설로부터 얼마나 벗어난지에 관한 지표이다.
X의 estimate 값은 다른 변수가 고정되어있을 때, X가 한 단위 변화했을 때, Y의 평균적인 변화량이다. 예를 들어, youtube의 estimate 는 0.04 인데, 이는 youtube 가 1 변화했을 때, sales의 평균적인 변화량이다. newpaper 의 경우, p-value > 0.05 이므로 이러한 estimate 의 값이 유의하지 않다는 것을 알 수 있다.
t value 와 p-value 는 무엇인가?
$$ H_0 : \beta = 0 $$
$$ t = \frac{\hat{\beta}}{se(\hat{\beta})} $$
이 때 위의 t 값은 자유도가 n-2 인 t 분포를 따른다. (이렇게 되는 이유)
p-value는 이렇게 계수 추정치가 t 분포를 따른다는 사실을 이용해서 구한 값이다.
결정계수와 F-stat
다음과 같이 정의해보자.
$$ SSE = \sum^{n}_{i=1}{(y_i - \hat{y})^2} $$
$$ SSR = \sum^{n}_{i=1}{(\bar{y} - \hat{y_i})^2} $$
$$ SST = \sum^{n}_{i=1}{(y_i - \bar{y})^2} $$
이 때, 각각의 통계량에 대한 자유도는 아래와 같다.
df(SSE) : n-p
df(SSR) : p-1
df(SST) : n-1
이 때, p는 intercept를 포함한 모델의 총 파라미터의 갯수이며, n은 샘플 수이다.
$$ MSE = \sum^{n}_{i=1}{(y_i - \hat{y})^2} / (n-p) $$
$$ MSR = \sum^{n}_{i=1}{(\bar{y} - \hat{y_i})^2} / (p-1) $$
$$ MST = \sum^{n}_{i=1}{(y_i - \bar{y})^2} / (n-1) $$
귀무가설을 아래와 같이 설정하자
$$ H_0 : \beta_1 = \beta_2 = \beta_3 = ... = \beta_{p-1} $$
이 때,
$$ \frac{MSE}{MSR} \sim F(n-p, p-1) $$
이를 통해 F-stat 과 p-value를 구할 수 있다. 이 값은 (explained variance) / (unexplained variance) 가 F-stat 을 따른다는 사실을 이용한 검정 방법이라고 할 수 있다. 왜 이렇게 되는지에 대해서는 이 링크를 참고.
결정계수 (Coefficient of determination, Rsquare)
결정계수는 아래와 같이 정의되며, 전체 분산 중 모델에의해 설명되는 분산의 양을 의미한다.
$$ R^2 = \frac{SSR}{SST} $$
adjusted 결정계수를 사용하기도 하는데, 이는 아래와 같이 정의된다.
$$ \bar{R^2} = 1-(1-R^2) \frac {n-1}{n-p} $$
적합된 모델의 계수
summary(model)$coefficient
새로운 모델을 아래와 같이 구할 수 있다. sales = 3.5 + 0.045youtube + 0.187facebook.
새로운 모델
model <- lm(sales ~ youtube + facebook, data = marketing) summary(model)
Call:
lm(formula = sales ~ youtube + facebook, data = marketing)
Residuals:
Min 1Q Median 3Q Max
-10.5572 -1.0502 0.2906 1.4049 3.3994
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.50532 0.35339 9.919 <2e-16 ***
youtube 0.04575 0.00139 32.909 <2e-16 ***
facebook 0.18799 0.00804 23.382 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.018 on 197 degrees of freedom
Multiple R-squared: 0.8972, Adjusted R-squared: 0.8962
F-statistic: 859.6 on 2 and 197 DF, p-value: < 2.2e-16
신뢰구간
confint(model)
2.5 % | 97.5 % | |
---|---|---|
(Intercept) | 2.80841159 | 4.20222820 |
youtube | 0.04301292 | 0.04849671 |
0.17213877 | 0.20384969 |
위와 같이 계수의 신뢰구간을 출력할 수도 있다. 이는 t 분포를 이용한다.
'Tools > R' 카테고리의 다른 글
R - dplyr 을 통한 데이터 변형과 장점 (0) | 2019.03.24 |
---|---|
윈도우에서 R 업데이트 하기 (과거 R 패키지 그대로 가져오는법) (3) | 2019.03.24 |
R igraph 설치 오류 해결 (0) | 2018.12.28 |
R Default library path 바꾸기 (2) | 2018.12.28 |
R -기초 생존 분석, PBC (primary biliary cirrhosis) 데이터 (0) | 2018.10.06 |