R로 데이터 분석하기 - 모델링 (2) : 로지스틱 회귀분석
1. 로지스틱 회귀분석
이전 글에서 다룬 회귀분석의 경우에는 종속변수가 연속형이었다. 만약 종속변수가 범주형 변수가 되면 로지스틱 회귀분석을 수행한다. weather 데이터를 이용해 이분형 로지스틱 회귀분석을 수행해보자.
glm_model <- glm(Rain2~Temp_mean+Dust+Humidity,family="binomial",data=weather)
summary(glm_model)
Call:
glm(formula = Rain2 ~ Temp_mean + Dust + Humidity, family = "binomial",
data = weather)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.14324 -0.57438 -0.32246 -0.02382 3.11696
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -8.123769 0.801381 -10.137 < 2e-16 ***
Temp_mean -0.073565 0.013399 -5.490 4.02e-08 ***
Dust -0.038511 0.007836 -4.915 8.88e-07 ***
Humidity 0.156059 0.014361 10.867 < 2e-16 ***
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 706.87 on 628 degrees of freedom
Residual deviance: 453.29 on 625 degrees of freedom
(7 observations deleted due to missingness)
AIC: 461.29
Number of Fisher Scoring iterations: 6
결과를 해석하기 위해서는 각 변수별 회귀계수 값을 exp()
처리를 해주어야 한다.
round(exp(glm_model$coefficients),2)
(Intercept) Temp_mean Dust Humidity
0.00 0.93 0.96 1.17
위 결과를 해석하면 다음과 같다.
- 평균 기온(Temp_mean)이 1 증가할 때 비가 올 확률이 7% 감소
- 미세먼지 농도(Dust)가 1 증가할 때 비가 올 확률이 4% 감소
- 습도(Humidity)가 1 증가할 때 비가 올 확률이 17% 증가
이렇게 exp()
처리를 해야 하는 이유는 로지스틱 회귀모형이 만들어지는 원리와 관련되어 있다.
로지스틱 회귀분석이란, glm에서 링크 함수를 로짓(로그 오즈)으로 사용한 회귀분석을 말한다.
p / (1-p) 값이 오즈(Odds), 즉 일어날 확률과 일어나지 않을 확률의 비율이다. 간단하게 생각하면, 이 오즈값에 로그를 취했기 때문에 해석하기 위해서 로그의 영향을 원래대로 돌려주는 exp()
을 쓰는 것이다.
그런데 사실 회귀계수에 exponential을 취한 결과는 오즈의 증가분이 아니라, 정확히는 오즈비(OR, Odds Ratio)의 증가분이라고 하는 게 맞다. 이를 이해하기 위해 “결과를 해석할 때는 다른 효과가 동일한 상태라고 가정“하고 해석한다는 점을 알고 있으면 좋다.
오즈비(Odds Ratio) = Odds1 / Odds2
예를 들어, 위의 수식에서 X1이 1인 경우(일어날 확률 p)와 X1이 0인 경우(일어날 확률 p’)가 있다고 해보자. 이 때 다른 효과는 동일하게 고정한다. 그리고 첫 번째 경우의 식에서 두 번째 경우의 식을 빼주면 ln(p/(1-p)) - ln(p'/(1-p')) = β1
, 즉 Odds Ratio = exp(β1)
이 된다.
Leave a comment