관련글
1. 들어가며
R 프로그래밍을 통해 실제로 회귀분석을 해보자. SPSS나 SAS를 주로 사용했던 사회과학 계열 출신들은 코딩 방식이 처음에는 헷갈리고 시간이 많이 걸릴 수 있지만 일단 익숙해지면 GUI 방식의 통계 소프트웨어보다 훨씬 더 편리하게 사용할 수 있을 것이다.
2. 예제 데이터 : airquality
회귀분석 실습 데이터는 R 내장 데이터인 airquality를 사용한다. "?airquality"라고 입력하고 엔터를 치면 해당 데이터에 대한 정보가 나타난다. 1973년 5월 ~ 9월 사이의 뉴욕시 공기 질에 관한 데이터이다. 먼저 데이터의 구조를 살펴보자.
str(airquality)
결과를 보면 153개의 데이터 수와 6개의 변수로 구성된 데이터프레임이다. Ozone, Solar.R 변수의 경우에는 NA(결측)값도 보인다.
이 데이터의 변수간의 상관관계를 살펴보자.
library(GGally)
ggpairs(airquality)
Day, Month는 정수형 데이터(int)이지만 실제적으로 특정 범주(1~30일, 1~12월)를 의미하므로 기타 변수와의 상관관계는 당연히 없을 것이다. 반면 "Ozone" , "Solar.R" "Wind", "Temp" 사이에는 다소 높은 상관관계가 보인다.
3. 회귀모델 구축 기본 문법
회귀모델을 만들려면 lm( ) 함수를 이용하는데 linear Model의 줄임말이다. 기본 문법은 다음과 같다.
lm(반응변수 ~ 설명변수, 데이터프레임) |
예를 들어 Temp가 반응변수 Ozone이 설명변수라면 다음과 같이 코딩한다.
lm(Temp ~ Ozone, airquality)
문제는 설명변수가 2개 이상일 경우다. 이때는 몇 가지 연산자를 이용해야 한다.
연산자 | 문법 | 설명 |
+ | lm(Temp ~ Ozone + Solar.R + Wind, airquality) | 설명변수를 + 연산자로 계속 붙인다. |
. | lm(Temp ~ . , airquality) | Temp를 제외한 모든 설명변수를 포함시킨다. |
- | lm(Temp ~ . , -Wind, airquality) | 설명변수에서 Wind를 제외 시킨다. |
설명변수가 2개 이상일 경우 변수간의 상호작용을 고려할 수도 있다. 이때는 다음과 같은 연산자를 이용한다.
연산자 | 문법 | 설명 |
: | lm(Temp ~ Ozone + Solar.R + Ozone : Wind, airquality) | Ozone과 Wind의 상호작용 항을 포함시킨다 |
* | lm(Temp ~ Ozone*Solar.R*Wind, airquality) | 세 변수 Ozone, Solar.R, Wind간의 모든 상호작용 관계를 포함시킨다. |
위의 표에서 * 연산자는 아래와 같은 의미다.
lm(Temp ~ Ozone*Solar.R*Wind, airquality) =lm(Temp ~ Ozone + Solar.R + Wind + Ozone : Solar.R + Solar.R : Wind + Ozone : Wind + Ozone : Solar.R : Wind, airquality) |
가장 기본적인 형태로 회귀모델을 구축해보자.
reg_model = lm(Temp ~ Ozone + Solar.R + Wind, airquality)
4. 회귀모델 결과 해석
구축된 회귀모델에 대한 결과는 아래와 같다.
결과를 구성하는 정보 덩어리를 1~3까지 살펴보자.
① : 회귀모델의 잔차에 대한 정보이다. 회귀모델은 잔차에 대한 중요한 가정을 설정하는데 이는 따로 살펴보겠다. 이 잔차는 평균이 0에 가까워야 한다.
② : 회귀모델을 구성하는 변수들의 회귀계수와 그 변수가 모델에서 통계적으로 유의한가를 설명한다. 검은점선이 회귀모델을 구성하는 변수와 회귀계수다. 저 결과를 바탕으로 회귀모델을 다음과 같이 서술할 수 있다.
Temp = 0.171*Ozone + 0.007*Solar.R - 0.329Wind + 72.418
회귀모델에서 Ozone 변수만이 통계적으로 유의하다는 결과를 얻었다. 회귀계소의 통계적 유의성은 귀무가설(회귀계수 = 0)이 사실이라면 해당 t value를 얻을 확률 값 Pr(>|t|)이 0.05보다 작을 경우 귀무가설을 기각하므로, 즉 회귀계수의 기울기가 0인지 아닌지를 따진다. 결과에서는 Ozone 만이 Pr(>|t|) < 0.05 이므로 통계적으로 유의하다.
③ 두 가지 정보를 나타내 준다. 결정계수(R-Squared)와 F값에 대한 통계적 유의성이다. 이 모델은 다중회귀모델이므로 수정된 결정계수 (Adjusted R- suared)값을 보아야 하는데 0.485 이므로 높지도 낮지도 않은 모델 적합도이다. 또한 F값은 귀무가설(모든 회귀계수=0)이 사실이라라면 해당 F값을 얻을 확률을 보고 귀무가설 기각 여부를 결정하는데 F = 36.65이고 이 값을 얻을 확률이 4.729e-16, 즉 0.05보다 작으므로 귀무가설을 기각한다. 따라서 회귀계수 중 적어도 하나는 0이 아닌 것이다. 위의 회귀계수 검정 결과와 일치한다.
관련글
'R_데이터 분석 기술' 카테고리의 다른 글
R을 이용한 t-test와 효과 크기 계산 (0) | 2022.05.04 |
---|---|
R 랜덤포레스트(randomforest) (0) | 2022.05.03 |
R_의사결정나무 분석(rpart) (0) | 2022.05.02 |
R 교차표 작성 (0) | 2022.04.08 |
R 주성분 분석 (0) | 2022.04.07 |
R 다중공선성 VIF 값 계산 (0) | 2022.04.04 |
wide & long 데이터 형태 전환 (0) | 2022.04.04 |
댓글