이번 포스팅에서는 Statsmodel을 활용한 로지스틱 회귀분석을 해석하는 포스팅입니다.
로지스틱 회귀분석 해석
데이터는 타이타닉 데이터를 사용합니다.
import seaborn as sns
import statsmodels.api as sm
import pandas as pd
import numpy as np
titanic = sns.load_dataset("titanic")
from sklearn.preprocessing import LabelEncoder
# sex 레이블 인코딩
encoder = LabelEncoder()
encoder.fit(titanic['sex'])
sex = encoder.transform(titanic['sex']) #male이 1 femail이 0
titanic['sex'] = sex
#모델링
model = sm.Logit.from_formula("survived ~ C(pclass)+sex+age+fare+sibsp", data=titanic)
logit_res = model.fit(disp=0)
print(logit_res.summary())
로지스틱 회귀분석은 일반적인 OLS와는 해석방법이 다릅니다.
특히 첫번째 회귀계수 부분이 일반적인 숫자가 아니라 로그가 붙어 있는 오즈비 입니다. 따라서 로그를 떼어내고 해석해야합니다. 로그를 떼어 내는 방법은 넘파이이의 np.exp()입니다.
먼저 fare(요금)입니다. fare의 로짓을 로그를 떼면 다음과 같습니다.
이는 요금이 1달러 증가할 때 마다 생존률이 1.0018배 증가한다는 것입니다.
다음은 Age(나이 입니다.)
이는 나이가 1살 증가할 때마다 생존률이 0.956배 증가한다는 것입니다. 사실 이는 좀 말이 안되기 때문에 다음과 같이 바꾸어 줍니다.
다시보면 나이가 1살 증가할 때 마다 생존률이 4.3프로 감소한다는 것입니다.
이번에는 Pclass3입니다.
Pclass3의 생존률은 -87퍼센트입니다. 거의 생존하지 못했음을 알 수 있습니다.
이번에는 sex입니다.(여성이 기준)
오즈비를 보면 여성에 비해 남성의 생존률은 0.073배 높다고 할 수 있습니다.
그럼 남성에 비해 여성의 생존률은 91.2배 높은것일까요. 아닙니다. 오즈비는 분자/분모인데, 기준을 바꾸려면 이 분자 분모를 바꾸어야 합니다. 1/0.009가 남성대비 여성 생존률의 비율입니다.
남성에 비해 여성의 생존률은 1268% 높은것이다.
따라서 로지스틱회귀분석을 사용할 때는 기준이 되는 그룹을 잘 설정해야 한다.
정리
- 회귀계수는 로짓이며 오즈비로 바꾸기 위해서는 np.exp()를 사용한다.
- {exp(회귀계수) - 1} * 100 은 % 증가/감소로 해석 가능하다.
- 독립변수가 1단위 증가할 때와 1단위 감소할 때의 해석은 다르다.
- 감소할 때의 해석 : {(1/exp(회귀계수) - 1} * 100 으로 해석
- 모든 독립변수의 증감에 대해 종속변수가 1(Y=1)이 되는 확률로 해석한다.
사이킷런을 활용한 로지스틱 회귀분석
아래 링크에서 확인하실 수 있습니다.
해당 포스팅은 아래 유튜브 영상을 참고하여 만들었습니다.
www.youtube.com/watch?v=HCcwgEnijoM&list=PLalb9l0_6WAo52Z5EsU1JWMdXgU46hr_D&index=3
'Data Analysis & ML > 회귀분석' 카테고리의 다른 글
[회귀분석] 다중선형회귀분석(2) - 다중선형회귀모형 개념/활용/검증 (0) | 2023.01.24 |
---|---|
[회귀분석] 다중선형회귀분석(1) - 다중선형회귀모형의 가정 (0) | 2023.01.24 |
[회귀분석] 단순선형회귀분석(Linear Regression)(9) - 이분산성 (0) | 2021.02.13 |
[회귀분석] 단순선형회귀분석(Linear Regression)(8) - 더미변수(Dummy Variable) (0) | 2021.02.13 |
[회귀분석] 단순선형회귀분석(Linear Regression)(7) - R-squared (R^2)(결정계수) (SST/SSR/SSE/Adjusted R-squared) (2) | 2021.02.13 |