logistic regression
이 토픽을 마치면
이진 outcome을 확률과 log-odds의 관계로 표현하고, 계수·odds ratio·예측확률·calibration을 구분할 수 있습니다. logistic 모델의 적합 성공을 예측 성능이나 인과 효과로 과장하지 않습니다.
이진 outcome의 구조
outcome이 두 범주로 기록될 때 선형 예측값을 그대로 확률로 읽으면 0보다 작거나 1보다 큰 값이 나올 수 있습니다. logistic regression은 선형 예측값을 log-odds 척도에 놓고 확률로 변환하는 구조를 사용합니다.
계수 읽기
계수는 다른 입력을 고정했을 때 log-odds 척도의 변화입니다. 계수를 지수화하면 odds ratio가 되지만, odds와 probability는 같은 값이 아닙니다. 확률 차이는 baseline probability에 따라 달라질 수 있으므로 계수 하나만으로 연구 결과를 설명하지 않습니다.
Python 적합
import numpy as npimport statsmodels.api as sm
X = sm.add_constant(data[["exposure", "covariate"]])model = sm.Logit(data["outcome"], X).fit(disp=False)probability = model.predict(X)odds_ratio = model.params.apply(lambda value: np.exp(value))print(probability.head())print(odds_ratio)이 코드는 이진 outcome과 적절한 자료형·결측이 준비됐다는 전제에서 실행합니다. np.exp를 사용하려면 NumPy import와 lock 환경을 확인해야 합니다. 확률 예측이 생성됐다는 사실과 calibration이 좋다는 판단을 구분합니다.
진단과 예측
discrimination은 순서를 얼마나 잘 구분하는지, calibration은 예측확률이 관측 빈도와 얼마나 맞는지를 묻습니다. 하나의 metric이 두 질문을 동시에 대답하지 않습니다. threshold를 적용해 분류값을 만들 때도 threshold의 목적과 비용을 기록합니다.
연구 질문으로 돌아가 해석하기
logistic 계수는 설계와 모델이 허용하는 조건부 관계입니다. 관측자료에서 odds ratio를 인과 risk ratio처럼 읽지 않으며, prevalence·baseline·표본구성에 따라 해석이 달라질 수 있음을 적습니다.
자주 생기는 실패
- odds와 probability를 같은 말로 쓰지 않습니다.
- 계수를 곧바로 생물학적 효과로 확정하지 않습니다.
- calibration 없이 예측확률을 신뢰하지 않습니다.
- class imbalance에서 accuracy만 보고하지 않습니다.
핵심 정리
- logistic regression은 이진 outcome과 log-odds의 관계를 모델링합니다.
- 계수, odds ratio, probability는 서로 다른 척도입니다.
- discrimination과 calibration을 분리해야 합니다.
다음 토픽으로
다음 편에서는 count·rate·offset과 overdispersion을 다룹니다.
참고 자료
- statsmodels API: https://www.statsmodels.org/stable/api.html
- scikit-learn calibration: https://scikit-learn.org/stable/modules/calibration.html
- scikit-learn metrics: https://scikit-learn.org/stable/modules/model_evaluation.html
본 편의 설명과 데이터 구조는 BioStatPy가 독립적으로 작성했습니다.