Logistic 가설검정 — 적합도·효과·정보 기준

Woodward Ch.10.7 — Tests of Hypotheses

Logistic regression 의 3 가지 가설검정 (Wald, Likelihood Ratio, Score), Hosmer-Lemeshow goodness-of-fit, 그리고 모형 비교 기준 (AIC, BIC) 의 수식과 임계값을 추상 → 일상어 → 반사실 3 단계 직관으로 풀어낸다. Deviance 의 의미와 계산도 다룬다.

Experimentation
Modeling
저자

Kwangmin Kim

공개

2026년 05월 08일

1 3 가지 가설검정 — Wald, LR, Score

정의: 3 검정의 비교

Wald: \(H_0: \beta_j = 0\). 통계량 \(W = (\hat\beta_j / \widehat{\text{se}}(\hat\beta_j))^2 \sim \chi^2_1\).

Likelihood Ratio (LR): 두 중첩 모형의 likelihood 비교. \(\Lambda = -2 \log(L_0 / L_1) \sim \chi^2_k\) (k = 추가 모수 수).

Score: 귀무 모형에서의 score 함수. 모수 추정 안 한 상태로 검정.

대표본 + 진성 효과면 세 검정 거의 동등. 작은 표본·경계값 효과면 차이.

1.1 직관 — 세 검정의 분업

직관 3 단계: 어느 검정이 언제 우월?
  • 추상:
    • Wald: 적합 후 단일 계수 검정 — 빠름.
    • LR: 모형 비교 (multi-coefficient) — 가장 강력.
    • Score: 귀무 모형 적합만 필요 — 계산 효율.
  • 일상어 비유: Wald = 스냅샷, LR = 두 모형의 비교, Score = 사전 검정.
  • 반사실: 작은 표본에서 Wald 가 보수적 (CI wide). LR 이 최대 검정력. Score 는 nuisance parameter 회피 시 유리.

1.2 Hauck-Donner 효과 — Wald 의 함정

가정 위반: Wald CI 의 비대칭

추정 \(\hat\beta\) 가 매우 크면 (강한 효과) Wald CI 가 paradoxically narrow → 검정력 ↓.

Hauck-Donner (1977) 효과: 진성 효과 ↑ 일수록 Wald 검정의 검정력이 ↓ 어떤 임계값을 넘어가면. 매우 일반적이지 않으나 알려진 현상.

3 단계 직관:

  • 추상: \(\hat\beta\) 의 분포가 정규 근사 위반 시 (강한 효과·적은 표본) Wald 부정확.
  • 일상어 비유: 측정 기기의 한계 — 매우 큰 값 측정 시 정밀도 ↓.
  • 반사실: LR 또는 profile likelihood CI 가 강한 효과에서 더 정확.

2 Likelihood Ratio Test — 모형 비교의 표준

정의: LR Test

두 중첩 모형 \(M_0 \subset M_1\): - \(M_1\): full model (자유도 \(p_1\)). - \(M_0\): reduced model (자유도 \(p_0 < p_1\)).

\[\Lambda = -2(\log L_0 - \log L_1) \sim \chi^2_{p_1 - p_0}\]

귀무가설 \(H_0\): 추가 모수 \(= 0\).

2.1 사용 예시

비교 df
Null vs single \(X\) 1
Single \(X\) vs \(X + Z\) 1
Single \(X\) vs \(X + X^2\) (비선형 검정) 1
Linear \(X\) vs Categorical \(X\) (4 cat) 2
직관: LR 의 의미
  • 추상: \(-2 \log L\) 이 deviance (모형 적합도). 두 모형의 deviance 차이 = \(\chi^2\).
  • 일상어 비유: 두 학습 모형의 train loss 차이 — 충분히 크면 더 복잡한 모형 정당화.
  • 반사실: \(\Lambda\) 작으면 (df 대비) 추가 모수 정당화 안 됨 → 단순 모형 선택.

3 Hosmer-Lemeshow Goodness-of-Fit Test

정의: H-L Test

예측 확률을 deciles (10 그룹) 로 분할, 각 그룹의 observed vs expected 비교.

\[\chi^2_{HL} = \sum_{g=1}^{10} \frac{(O_g - E_g)^2}{E_g (1 - E_g/n_g)} \sim \chi^2_{8}\]

큰 표본에서 \(df = g - 2 = 8\).

3.1 한계 — 큰 표본의 함정

가정 위반: 큰 표본의 H-L 검정력

큰 표본 (예: A/B 테스트의 수만 명) 에서 H-L 이 항상 유의 — 미세한 misfit 도 잡아냄.

3 단계 직관:

  • 추상: \(n \to \infty\) 면 작은 misfit 도 통계 유의. 임상 의의와 무관.
  • 일상어 비유: 정밀 저울로 측정 — 미세한 환경 차이도 유의 차이로 보임.
  • 반사실: 임상 의의 임계값 (예: calibration plot 의 시각적 평가) 으로 보완.

3.2 Calibration Plot — 시각적 보강

각 deciles 의 (predicted, observed) plot. 대각선 (y=x) 에 가까우면 calibration OK.

자세한 calibration 분석은 H-WOO13-5 (Risk Score) 에서.

4 AIC / BIC — 정보 기준

정의: AIC, BIC

Akaike Information Criterion: \[\text{AIC} = -2 \log L + 2k\]

Bayesian Information Criterion: \[\text{BIC} = -2 \log L + k \log n\]

여기서 \(k\) = 모수 수, \(n\) = 표본 크기.

작을수록 좋음. 모형 비교용.

4.1 AIC vs BIC

직관 3 단계: 두 기준의 분업
  • 추상: AIC 는 prediction-oriented (over-fit 약간 허용), BIC 는 selection-oriented (true model 선호).
  • 일상어 비유: AIC = 새로운 자료 예측 능력, BIC = “진짜 메커니즘 식별”.
  • 반사실: \(n\) 큰 시점부터 BIC 가 AIC 보다 단순 모형 선호 (\(\log n > 2\)).

5 Deviance — 모형 적합도의 핵심 지표

정의: Deviance

\[D = -2 \log\left(\frac{L_{\text{model}}}{L_{\text{saturated}}}\right) = -2(\log L_{\text{model}} - \log L_{\text{saturated}})\]

Saturated model = 각 관측에 별도 모수 (perfect fit). Deviance = “현재 모형이 saturated 에서 얼마나 멀리?”

Null deviance: \(H_0\) (intercept only) 의 deviance. Residual deviance: 적합 모형의 deviance.

5.1 Pseudo R²

\[R^2_{\text{Cox-Snell}} = 1 - \exp\left(-\frac{D_{\text{null}} - D_{\text{model}}}{n}\right)\]

\[R^2_{\text{Nagelkerke}} = R^2_{\text{Cox-Snell}} / R^2_{\text{Cox-Snell, max}}\]

선형 회귀의 R² 와 비슷 — 0~1 사이. 단 logistic 의 진성 R² 는 정의 어려움.

가정 위반: Pseudo R² 의 해석

Logistic 의 pseudo R² 는 선형 R² 와 다른 값 — 직접 비교 불가.

  • 선형 R² 0.5 = 50% 분산 설명.
  • Pseudo R² 0.5 = “매우 좋은 적합” 수준.

3 단계 직관:

  • 추상: Pseudo R² 가 0~1 의 단순 비율 아님. Reference (max) 에 따라 정의 변화.
  • 일상어 비유: 환율과 환율 — 다른 도시의 같은 척도 사용 불가.
  • 반사실: 모형 비교 시 같은 자료 + 같은 종류 R² 사용. Cross-domain 비교 부적절.

6 코드 예시 — 가설 검정 + 적합도

import numpy as np
import pandas as pd
import statsmodels.api as sm
from scipy.stats import chi2

np.random.seed(42)
n = 1000

# 가상 자료
df = pd.DataFrame({
    "smoke": np.random.binomial(1, 0.30, n),
    "age": np.random.normal(50, 10, n),
})
log_odds = -3 + 0.6 * df["smoke"] + 0.04 * df["age"]
df["disease"] = np.random.binomial(1, 1/(1+np.exp(-log_odds)), n)

# 모형들
m_null = sm.Logit(df["disease"], sm.add_constant(np.ones(n))).fit(disp=0)
m1 = sm.Logit(df["disease"], sm.add_constant(df[["smoke"]])).fit(disp=0)
m2 = sm.Logit(df["disease"], sm.add_constant(df[["smoke", "age"]])).fit(disp=0)

# Wald — m2 의 각 계수
print("=== Wald (m2) ===")
for var in ["smoke", "age"]:
    z = m2.params[var] / m2.bse[var]
    p = 2 * (1 - chi2.cdf(z**2, 1))
    print(f"  {var}: z² = {z**2:.2f}, p = {p:.4f}")

# LR test — m_null vs m1
LR_1 = 2 * (m1.llf - m_null.llf)
p_1 = 1 - chi2.cdf(LR_1, df=1)
print(f"\n=== LR (null vs m1) ===")
print(f"  LR = {LR_1:.2f}, df = 1, p = {p_1:.4f}")

# LR test — m1 vs m2
LR_2 = 2 * (m2.llf - m1.llf)
p_2 = 1 - chi2.cdf(LR_2, df=1)
print(f"\n=== LR (m1 vs m2) ===")
print(f"  LR = {LR_2:.2f}, df = 1, p = {p_2:.4f}")

# AIC, BIC
print(f"\n=== AIC/BIC ===")
for label, m in [("null", m_null), ("m1", m1), ("m2", m2)]:
    print(f"  {label}: AIC = {m.aic:.1f}, BIC = {m.bic:.1f}")

해석: m2 가 가장 작은 AIC/BIC → 다중 변수 모형 정당화. LR test 도 m1 → m2 추가가 유의.

7 A/B 테스트의 가설 검정

A/B 테스트에서 logistic 의 활용:

검정 활용
Wald (treatment) A vs B 의 lift 의 통계 유의성
LR (treatment + interaction) HTE 의 통계 유의성
Hosmer-Lemeshow 모형 calibration
AIC/BIC 어느 공변량 보정이 best
직관: A/B 의 검정력 ↑ 도구
  • 추상: 사전 변수 (CUPED) 추가 → SE ↓ → Wald z 통계 ↑ → 검정력 ↑.
  • 일상어 비유: 측정 도구의 정밀도 ↑ → 작은 차이도 유의 검출.
  • 반사실: 단순 lift 만 보면 noise 큼. 다중 logistic 으로 분산 감소.

8 Profile Likelihood — Wald 의 대안

정의: Profile Likelihood CI

\(\beta_j\) 에 대해 다른 모수 (nuisance) 를 최대화한 likelihood:

\[L_p(\beta_j) = \max_{\beta_{-j}} L(\beta_j, \beta_{-j})\]

CI: \(\beta_j\) values where \(-2 \log(L_p(\beta_j)/L_{\max}) \le \chi^2_{1, 0.95} = 3.84\).

직관 3 단계: Profile vs Wald
  • 추상 정의: Profile 이 likelihood 자체의 정확한 곡률, Wald 가 정규 근사.
  • 일상어 비유: Profile = 정밀 측정, Wald = 빠른 근사.
  • 반사실 시나리오: 작은 표본 + 강한 효과 시 Wald 부정확. Profile 이 robust.

Hauck-Donner 효과 회피: Profile likelihood 가 큰 효과에서도 정확.

9 Score Test 의 활용

정의: Score Test

귀무 가설 모형에서의 score function:

\[U(\beta_0) = \frac{\partial \log L}{\partial \beta} \bigg|_{\beta = \beta_0}\]

검정: \[T = U(\beta_0)^T I(\beta_0)^{-1} U(\beta_0) \sim \chi^2_p\]

장점: \(\beta\) 추정 불필요 — 빠름.

직관: Score 의 활용
  • 추상 정의: 귀무 모형 적합만 → 새 변수 추가 효과 검정.
  • 일상어 비유: 추가 답안 작성 전 점수 영향 예측.
  • 반사실 시나리오: 다중 변수 후보 중 우선순위 결정 시 score 가 효율.

10 Q&A — 검정 도구의 흔한 오해

Q1: 큰 표본의 H-L p < 0.05 — 모형 폐기?

A: 아니다. 임상 의의 평가 우선.

3 단계 직관:

  • 추상 정의: 큰 표본의 검정력 ↑ → 사소한 misfit 도 유의.
  • 일상어 비유: 정밀 도구가 모든 차이 검출 — 임상 무관.
  • 반사실 시나리오: H-L p < 0.05 + calibration plot 시각이 임상 의의 판정.
Q2: AIC 와 BIC 다른 모형 추천 — 어느 것?

A: 분석 목적에 따라.

3 단계 직관:

  • 추상 정의: AIC = prediction-oriented (over-fit 약간 허용), BIC = true-model-oriented.
  • 일상어 비유: AIC = 새 자료 예측, BIC = 진성 메커니즘 식별.
  • 반사실 시나리오: 예측 모형은 AIC, 인과 분석은 BIC. 또는 cross-validation 이 결정.
Q3: Pseudo R² 가 0.3 — 좋은 적합?

A: 분야에 따라. Cox-Snell 의 max 가 < 1.

3 단계 직관:

  • 추상 정의: Pseudo R² 가 선형 R² 와 다른 정의.
  • 일상어 비유: 다른 도시의 교환율 — 직접 비교 불가.
  • 반사실 시나리오: AIC + AUC + calibration 종합 평가가 단일 R² 보다 정직.

11 결론

3 가지 검정 (Wald, LR, Score) + GoF (Hosmer-Lemeshow) + IC (AIC, BIC) 가 logistic 의 표준 도구. 큰 표본에서 H-L 의 한계 + Wald 의 Hauck-Donner 효과 주의. LR 이 일반적으로 가장 robust. Profile likelihood CI 가 작은 표본 + 강한 효과의 표준.

다음 글 (H-WOO10-6) 에서 confounding 과 interaction 의 모형화를 본다.

12 관련 주제

Statistics 크로스링크

Subscribe

Enjoy this blog? Get notified of new posts by email: