본문 바로가기
R

[R] 회귀분석(Regression Analysis) [회귀식 추정, 회귀모형 검정, 적합도 파악]

by JKyun 2017. 3. 9.


안녕하세요. 우주신입니다.



저번 상관분석 포스팅에 이어 이번에는 회귀분석(Regression Analysis)에 대해 정리해보겠습니다. 


상관분석은 변수들이 서로 얼마나 밀접하게 직선적인 관계를 가지고 있는지를 분석하는 통계적 기법이며 


회귀분석은 한 개 또는 그 이상의 변수들(독립변수)에 대하여 다른 한 변수(종속변수) 사이의 관계를 수학적인 모형을 이용하여 설명하고 예측하는 분석기법 입니다.


쉽게 말하자면, 상관분석에서는 산점도의 점들의 분포를 통해 일정한 패턴을 확인한 후, 상관계수를 구하여 두 변수 간의 선형관계를 알 수 있었습니다. 여기서 더 나아가, 이 일정한 패턴을 활용하여 무엇인가를 예측하는 분석을 회귀분석이라고 보시면 됩니다.


'회귀분석'하면 이름도 생소하고 낯설 수 있지만, R 코드와 함께 따라와보시면 쉽게 이해가실겁니다!!


상관분석의 연장선에서 회귀분석을 하기 위해 데이터도 같은 데이터를 사용하겠습니다.


df <- read.csv("http://goo.gl/HKnl74")



저번 포스팅의 상관분석을 통해 놀이기구에 대한 만족도(rides)와 전체만족도(overall) 간에 일정한 패턴을 확인하였고, 상관계수 또한 0.5859로써 양의 선형관계를 이뤘습니다. 여기서 더 나아가, 회귀분석을 통해 변수 간에 관계를 예측까지 해보겠습니다.


참고로, 회귀분석은 크게 독립변수 종속변수가 각각 한 개일 때의 관계를 분석하는 단순선형회귀분석(simple linear regression analysis)

종속변수는 한개 독립변수는 두개 이상일 때는 중선형회귀분석(multiple linear regression analysis)으로 구분됩니다.




<단순선형회귀분석>




1. 회귀식의 추정


두 변수 X와 Y의 관계(rides, overall)에 적합한 회귀식을 구하기 위해서는 관측된 값으로부터 회귀계수 B0와 B1의 값을 추정하여야 합니다. 

이 때 일반적으로 많이 사용되는 방법을 최소제곱법이라고 합니다.


R에서는 lm(Y~X) 함수를 이용하면 회귀식을 쉽게 추정할 수 있습니다.

b0 = -94.962, b1 = 1.703 으로부터 overall = -94.962 + 1.703*rides 라는 회귀식을 구할 수 있으며,

놀이기구에 대한 만족도(rides)가 1 증가할 때마다 전체만족도(overall)이 1.703만큼 증가한다고 볼 수 있습니다.


이렇게 구해진 회귀직선을 산점도(scatter plot)위에 그려보겠습니다.

-m1 <- lm(overall~rides): m1에 회귀식을 입력

-plot(overall~rides, ...): 산점도를 그림

-abline(m1, col='blue'): 산점도 위에 m1이라는 회귀직선을 blue 색으로 그림

산점도 위에 파란색의 회귀직선이 그려진 것을 확인할 수 있습니다 !!


그러나 회귀식이 도출 됐어도 아직 할 일이 많습니다.... 



2. 회귀모형의 검정 및 적합도 파악


이 회귀식이 통계적으로 유의한지, 변수가 유의하게 영향을 미치는 지, 그리고 얼만큼의 설명력을 가지는지 등의 여부를 확인해야 합니다.


1. F-statistic

도출된 회귀식이 회귀분석 모델 전체에 대해 통계적으로 의미가 있는지 파악


2. P-Value

각 변수가 종속변수에 미치는 영향이 유의한지 파악


3. 수정된 R제곱

회귀직선에 의하여 설명되는 변동이 총변동 중에서 차지하고 있는 상대적인 비율이 얼마인지 나타냄

즉, 회귀직선이 종속변수의 몇%를 설명할 수 있는지 확인


위에 나온 3가지는 모두  summary() 함수 하나를 통해 다 확인할 수 있습니다. summary()의 위대함은 여기서도 느끼네요.

결과를 보면 잔차에 대한 정보, 회귀계수에 대한 정보, R제곱, 검정통계량 F0 값과 P-Value 값 등이 출력된 것을 확인할 수 있습니다.


1. 제일 밑에 F-statistic의 p-value 값은 2.2e-16 로 0.05보다 작기에 이 회귀식은 회귀분석 모델 전체에 대해 통계적으로 의미가 있다고 볼 수 있습니다.


2. 중간의 Coefficients:에는 y절편 값(Intercept) 및 변수들의 p-value 값이 나와있습니다. rides 변수의 경우 2e-16으로 0.05보다 작기에 overall을 설명하는데 유의하다고 판단할 수 있습니다.

참고로 *는 통계적으로 유의하다는 것을 한 눈에 보여주는 표시이며 *가 많을수록 통계적으로 유의할 확률이 높다고 볼 수 있습니다.


3. 밑 부분의 Adjusted R-squared 값은 0.3421 로써 34%만큼의 설명력을 가진다고 판단할 수 있습니다.

(0에 가까울 수록 예측값 믿을 수 없고 1에 가까울 수록 믿을 수 있다)



<중선형회귀분석>

이번에는 중선형회귀분석(multiple linear regression analysis)을 해보겠습니다. 

위 단순선형회귀분석과 비교했을 때 종속변수를 설명하는 독립변수가 두개 이상으로 증가했다고 생각하시면 됩니다.


overall을 설명하는 독립변수를 기존에 있었던 rides에 더해 games와 clean 변수를 추가해봤습니다.

lm(Y~X1+X2+ ... Xn)과 같은 형식으로 입력해주면 회귀식이 나옵니다.

이번에는 summary() 함수를 통해 한번에 회귀식과 회귀모형을 검정해보겠습니다.


회귀식: overall = -131.67877 + 0.57798*rides + 0.26028*games + 1.28381*clean 


1. 제일 밑에 F-statistic의 p-value 값이 2.2e-16 로 0.05보다 작기에 이 회귀식은 회귀분석 모델 전체에 대해 통계적으로 의미가 있다고 볼 수 있습니다.


2. 중간의 Coefficients에 나온 변수들의 p-value 값이 모두 0.05보다 작기에 overall을 설명하는데 유의하다고 판단할 수 있습니다.


3. 밑 부분의 Adjusted R-squared 값은 0.4358 로써 43.5%만큼의 설명력을 가진다고 판단할 수 있습니다. 앞선 결과와 비교했을 때 더 높은 설명력을 가지는 것을 알 수 있습니다. 


이번에는 weekend 변수(범주형)를 넣어서 회귀분석을 해봤습니다.


1. 여전히 제일 밑에 F-statistic의 p-value 값이 2.2e-16 로 0.05보다 작기에 이 회귀식은 회귀분석 모델 전체에 대해 통계적으로 의미가 있다고 볼 수 있습니다.


2. 중간의 Coefficients에 나온 weekendyes를 제외한 변수들의 p-value 값이  0.05보다 작기에 overall을 설명하는데 유의하다고 판단할 수 있습니다. weekend 변수와 같이 yes, no 데이터로 구성되어 있는 범주형 변수의 경우 하나의 값을 기준으로 나머지 값을 비교합니다.

즉, weekendyes(주말에 온 사람들)가 weekendno(주중에 온 사람들)와 비교했을 때 -0.85183만큼 overall(전체만족도)를 평가했다고 생각하면 쉬울 것 같습니다.


3. 밑 부분의 Adjusted R-squared 값은 0.4358 로써 43.5%만큼의 설명력을 가진다고 판단할 수 있습니다. 





끝.


수고하셨습니다~









댓글