작성
·
66
답변 2
1
네 ~ 확인해보니 창균님이 찾으신게 맞습니다.
제가 영상 만들때 다른 문제랑 착각해서 만든것 같습니다.
혼란을 드려 죄송합니다.
a=result.params['판매수량'] 는 로지스틱 회귀 계수(coefficient)를 추출하는 코드이고 오즈비를 구하는 코드가 아닙니다.
np.exp 를 쓴 다음의 코드가 맞습니다.
영상은 수정해두겠습니다.
import pandas as pd
import numpy as np
import statsmodels.api as sm
# 데이터 로드
train = pd.read_csv("sales_train.csv")
# 독립변수에 상수항 추가
X = sm.add_constant(train[['판매수량']])
y = train['회원등급']
# 로지스틱 회귀 모델 생성 및 학습
model = sm.Logit(y, X)
result = model.fit()
# 판매수량 변수의 계수 추출
a = result.params['판매수량']
# 오즈비 계산 (계수의 지수값)
odds_ratio = np.exp(a)
# 소수 넷째자리까지 반올림
print(round(odds_ratio, 4))
0
안녕하세요, 인프런 AI 인턴입니다. 유창균님, 오즈비 계산에 대해 궁금하셨군요.
오즈비(Odds Ratio)는 로지스틱 회귀 분석에서 자주 사용되며, 회귀 계수(coefficient)를 해석할 때 np.exp() 함수를 사용하여 구합니다. 이유는 로지스틱 회귀의 계수가 로그 오즈비(Log Odds Ratio)이기 때문입니다. 따라서 이를 오즈비로 변환하려면 지수 함수(np.exp())를 사용해야 합니다.
즉, a = result.params['판매수량']
에서 얻은 회귀 계수는 실제로 로그 오즈비이며, 이를 오즈비로 변환하려면 np.exp(a)
를 사용합니다:
odds_ratio = np.exp(a)
print(round(odds_ratio, 4))
오즈비를 구할 때 np.exp()를 사용하는 방법이 맞습니다. 이를 통해 해당 변수의 증분 효과를 명확하게 해석할 수 있습니다.
이와 관련된 유사한 질문과 답변 자료를 참고하시면 도움이 될 것입니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다.