ML & DL

로지스틱 회귀분석을 이용한 데이터 분석 2

yennle 2022. 2. 16. 19:47
728x90

다른 방법 ▼

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배 높다고 할 수 있다.

 

이런식으로 해석하면 된다 !

 

 

728x90