로지스틱 회귀분석을 이용한 데이터 분석 2
다른 방법 ▼
2022.02.09 - [Statistics/Python] - 로지스틱 회귀분석을 이용한 데이터 분석
오늘은 statsmodels 라이브러리를 이용한 로지스틱 회귀분석에 대해 작성한다.
아래의 코드를 기본으로 하며, 아래 예시를 통해 더욱 자세하게 다룰 것이다.
import statsmodels.api as sm
logit = sm.Logit(종속변수, 독립변수)
result = logit.fit()
result.summary() # 혹은 result.summary2() 결과 다름
< 예시 >
사용할 데이터는 아래와 같으며, 종속변수는 '계약건수_0'이고 독립변수는 나머지로 설정하려고 한다.
import statsmodels.api as sm
X = model_data2.iloc[:,1:]
y = model_data2["계약건수_0"]
# for b0, 상수항 추가
X = sm.add_constant(X, has_constant = "add")
logit = sm.Logit(y, X)
result = logit.fit()
result.summary2()
이러한 결과를 얻을 수 있었다. coef는 변수들의 계수를 의미하며,
우리가 봐야할 것은 P>|z|부분이다. p-value를 나타내는 것인데,
보통 유의수준을 0.05로 설정하고 p-value가 0.05보다 작으면
귀무가설을 기각한다. 여기서 귀무가설은 독립변수 하나가 종속변수에 영향을 미치지 않는다.
예를 들어, '1개월전의 계약여부는 다음 달의 계약여부에 영향을 미치지 않는다'라고 쓰면 된다.
변수 설명을 안했지만, 대충 '계약건수_1은 계약건수_0에 영향을 미치지 않는다.' 라는 의미.
나머지 변수들은 다 0.05보다 작은데 '계약방법_지명경쟁'만 기각이 되지 않는 것을 볼 수 있다.
이는 '유의수준 0.05에서 지명경쟁의 계약방법은 다음 달의 계약여부에 영향을 미친다고 할 수 없다'라고 해석한다.
유의하지 않아서 최종모델에서 빼기도 하지만 나는 그냥 넣는 걸로 했다.
(사실 변수선택 과정도 거쳐야하지만 생략ㅎㅎ)
< 최종 모형 >
해석은 오즈비를 이용한다.
오즈는 사건이 일어날 확률을 일어나지 않을 확률로 나눈 것을 의미하고,
오즈비는 다른 두개의 사건을 비교할 때 사용한다.
p/(1-p)가 오즈를 의미한다.
1개월 전 계약이 없을 경우 대비 계약이 있을 경우의 오즈비는
'1개월 전 계약이 있을 경우의 오즈 / 1개월 전 계약이 없을 경우의 오즈'로 나타낼 수 있고
이는 exp(0.89) = 2.43의 값을 가진다.
따라서 1개월 전 계약이 있을 경우 없는 경우에 비해 다음 달 계약이 있을 확률이 2.43배 높다고 할 수 있다.
이런식으로 해석하면 된다 !