Pooled Logistic Regression — 시간 의존 + 인과 추론의 다리

Woodward Ch.11.11 — Pooled Logistic Regression

추적 시간을 작은 구간으로 분할 후 각 구간의 사건 발생을 logistic 으로 모형하는 Pooled logistic regression 의 수식, Cox PH 와의 동치성, 시간 의존 공변량의 자연 처리, 그리고 g-methods (IPW, g-formula) 와의 연결을 추상 → 일상어 → 반사실 3 단계 직관으로 풀어낸다.

Experimentation
Modeling
저자

Kwangmin Kim

공개

2026년 05월 08일

1 Pooled Logistic 의 발상

정의: Pooled Logistic Regression

추적 시간을 작은 구간 (예: 1 일, 1 주) 으로 분할 후 각 구간의 사건 발생을 logistic 으로 모형:

\[\text{logit}(P(\text{event in interval } k \mid \text{at risk}, X)) = \alpha_k + \beta^T X\]

각 구간 \(k\) 의 baseline odds \(\alpha_k\) 자유 (categorical 또는 spline).

(Woodward, 2014, Ch.11.11; Hernán & Robins, 2020).

1.1 직관 — Cox PH 의 Logistic 친척

직관 3 단계: Pooled Logistic 의 본질
  • 추상 정의: 연속 시간 hazard 를 작은 구간 단위 binary outcome 으로 환원. 구간이 충분히 작으면 Cox 와 동등.
  • 일상어 비유: 1 시간 단위 분석 → 매 시간 “사고 발생 yes/no” 의 logistic 회귀. 시간 단위 작을수록 연속 시간 모형에 근사.
  • 반사실 시나리오: Cox 가 시간 unit-free, pooled logistic 이 명시적 시간 unit. 시간 의존 공변량 처리 시 pooled logistic 이 단순.

1.2 Cox PH 와의 수식적 동치

정의: 동치성

각 구간 \(k\) 의 길이 \(\Delta t \to 0\) 일 때:

\[P(\text{event in } [t_k, t_{k+1})) \approx h(t_k) \cdot \Delta t\]

\[\text{logit}(P) \approx \log h(t_k) \approx \log h_0(t_k) + \beta^T X\]

→ Pooled logistic 의 \(\alpha_k = \log h_0(t_k) \cdot \Delta t\), \(\beta\) 는 Cox 의 \(\beta\) 와 동일.

큰 표본 + 작은 구간 → 두 모형 수치적으로 거의 동일.

직관: 두 모형의 수치 비교

가설: A/B 테스트의 retention 자료 100,000 명, 1 년 추적.

  • Cox PH: \(\hat\beta_{\text{treatment}} = -0.150\) (HR = 0.86).
  • Pooled logistic (일별 구간): \(\hat\beta_{\text{treatment}} = -0.149\) (OR = 0.86).

거의 동일 — pooled logistic 이 OR 로 보고하나 작은 구간이라 OR ≈ HR.

3 단계 직관:

  • 추상 정의: 작은 사건 확률 (1 일당) 에서 OR ≈ RR ≈ HR.
  • 일상어 비유: 매우 작은 비율의 비교 — 어느 측도 사용해도 결과 비슷.
  • 반사실 시나리오: 구간이 너무 크면 OR 와 HR 갈라짐. 1 일 또는 1 주 구간이 표준.

2 시간 의존 공변량의 자연 처리

정의: Time-varying \(X(t)\)

\[\text{logit}(P(\text{event in } [t_k, t_{k+1}) \mid X(t_k))) = \alpha_k + \beta^T X(t_k)\]

각 구간의 covariate 값 사용.

2.1 직관 — Long-format 의 자연

직관 3 단계: Long-format 자료

각 사람-구간 = 한 행:

Person Interval X(t) Event
1 1 0 0
1 2 0 0
1 3 1 1
2 1 1 0

각 행에 그 시점의 covariate 값. Logistic regression 이 자연 처리.

3 단계 직관:

  • 추상 정의: Long-format 이 시간 의존 자료의 표준 표현. Pooled logistic 이 long-format 의 회귀 분석.
  • 일상어 비유: 시계열 panel 자료 — 매 시점의 값 + outcome. Pooled logistic 이 panel 의 binary outcome 분석.
  • 반사실 시나리오: 만약 baseline X 만 사용하면 시간 의존성 무시 → Cox 의 baseline-only 와 같은 함정. Pooled logistic + long-format 이 자연.

3 g-Methods 와의 연결

정의: G-Methods

인과 추론의 표준 도구 (Hernán & Robins, 2020):

  • IPW (Inverse Probability Weighting): Treatment 확률의 역수로 가중.
  • G-formula: 시간 의존 covariate 의 표준 모형.
  • G-estimation: 구조적 모형의 추정.

이들이 모두 pooled logistic 을 building block 으로 사용.

3.1 IPW 의 Pooled Logistic 활용

사례: IPW 분석

가설: 시간 의존 treatment \(A(t)\) + outcome \(Y\).

Step 1: 각 시점의 treatment 모형: \[\text{logit}(P(A(t) = 1 \mid \text{covariates}(t))) = \gamma_0 + \gamma^T Z(t)\]

→ Pooled logistic.

Step 2: IPW weight: \[w_i(t) = \prod_{k \le t} \frac{1}{P(A_i(k) \mid Z_i(k))}\]

Step 3: Outcome 의 가중 분석 (또한 pooled logistic).

3 단계 직관:

  • 추상 정의: g-methods 가 pooled logistic 의 시간 의존 + 가중 처리 활용.
  • 일상어 비유: 두 단계 분석 — 처치 받을 확률 보정 후 결과 비교.
  • 반사실 시나리오: 단순 Cox 만 사용하면 시간 의존 confounding 통제 어려움. Pooled logistic + IPW 가 인과 추론의 표준 도구.

(Hernán & Robins, 2020, Ch.17~18 의 g-methods).

4 Pooled Logistic 의 실용적 장점

4 가지 강점
강점 설명
시간 의존 공변량 Long-format 으로 자연 처리
불규칙 측정 각 시점의 자료 사용
인과 추론 친화 g-methods 의 building block
계산 효율 Cox 의 risk-set 비교 회피

4.1 Cox 의 단점과 비교

직관 3 단계: Cox 의 한계
  • 추상 정의: Cox 의 partial likelihood 가 risk-set 에 의존. 큰 표본 + 시간 의존 + IPW 시 계산 부담 ↑.
  • 일상어 비유: 매 사건마다 모든 위험 인구 비교 vs 매 시점마다 단순 logistic — 후자가 직관적.
  • 반사실 시나리오: 작은 자료 + 표준 분석 → Cox 가 표준. 큰 자료 + 시간 의존 + 인과 추론 → pooled logistic.

5 구간 크기 선택

가정 점검: 구간 크기의 trade-off

구간이 너무 작음 (예: 1 분): - Cox 와 정확히 일치. - 자료 행 수 ↑↑ — 계산 부담.

구간이 너무 큼 (예: 1 년): - Cox 와 차이 커짐 (OR vs HR 갈라짐). - 시간 정보 손실.

권장: - 1 일 또는 1 주 (임상 자료). - 1 시간 또는 1 분 (실시간 자료). - 자료 자세함과 계산 자원의 균형.

6 Baseline Hazard 의 모형화

정의: \(\alpha_k\) 의 표현

옵션 1 — Categorical: \(\alpha_k\) 가 각 구간의 자유 모수. - 자유도 ↑, 적합 우수. - 외삽 불가.

옵션 2 — Spline: \(\alpha_k = s(t_k)\) — 매끄러운 함수. - 자유도 적음. - 외삽 가능.

옵션 3 — Polynomial: \(\alpha_k = \alpha_0 + \alpha_1 t_k + \alpha_2 t_k^2 + \cdots\) - 가장 단순. - 형태 가정 강함.

직관: 어느 옵션?
  • 추상 정의: \(\alpha_k\) 가 baseline hazard 의 형태 표현. 자유도와 적합도 trade-off.
  • 일상어 비유: 곡선 fitting — categorical (각 점), spline (매끄러운 곡선), polynomial (정해진 형태).
  • 반사실 시나리오: 자료가 충분하면 categorical. 외삽 필요하면 spline. 매우 단순한 형태이면 polynomial.

7 코드 예시 — Pooled Logistic

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

np.random.seed(42)
n = 1000

# 가상: A/B 테스트의 retention
# 진성 hazard: treatment 가 0.7 (보호)
np.random.seed(42)
df_long = []
for i in range(n):
    treatment = np.random.binomial(1, 0.5)
    pre_eng = np.random.normal(0, 1)

    for day in range(1, 366):
        # 시간 의존 hazard
        hazard = 0.001 * np.exp(-0.36 * treatment + 0.3 * pre_eng + 0.001 * day)
        if np.random.random() < hazard:
            df_long.append({"id": i, "day": day, "treatment": treatment,
                           "pre_eng": pre_eng, "event": 1})
            break
        df_long.append({"id": i, "day": day, "treatment": treatment,
                       "pre_eng": pre_eng, "event": 0})

df = pd.DataFrame(df_long)

# Pooled logistic (day 를 categorical baseline)
# 자료 매우 큰 경우 day 를 spline 으로
df["log_day"] = np.log(df["day"])
df["log_day_sq"] = df["log_day"] ** 2

X = sm.add_constant(df[["treatment", "pre_eng", "log_day", "log_day_sq"]])
m = sm.Logit(df["event"], X).fit(disp=0, maxiter=100)
print(m.summary())

# Treatment OR ≈ HR (작은 구간이라)
OR_treat = np.exp(m.params["treatment"])
print(f"\nTreatment OR (≈ HR): {OR_treat:.3f}")

해석: Pooled logistic 의 OR 가 Cox HR 과 거의 동일 (작은 구간 + 희귀 사건).

8 A/B 테스트의 Pooled Logistic

사례: 시간 의존 노출의 IPW

A/B 테스트의 흔한 도전: - 사용자가 처음에 A 그룹 → 일주일 후 B 로 자기 선택 (treatment switch). - 단순 ITT 분석 → switch 효과 평탄화.

해결: Pooled logistic + IPW.

# Step 1: 각 시점의 treatment 확률 모형
treatment_model = sm.Logit(df["A_t"],
                            sm.add_constant(df[["pre_eng", "day"]])).fit()

# Step 2: IPW weight 산출
df["pi_A"] = treatment_model.predict()
df["weight"] = np.where(df["A_t"] == 1, 1/df["pi_A"], 1/(1-df["pi_A"]))

# Step 3: 가중 outcome 모형
outcome_model = sm.GLM(df["event"],
                       sm.add_constant(df[["A_t", "log_day"]]),
                       family=sm.families.Binomial(),
                       freq_weights=df["weight"]).fit()

# Treatment effect (시간 의존 confounding 보정)
print(np.exp(outcome_model.params["A_t"]))

3 단계 직관:

  • 추상 정의: IPW 가 시간 의존 confounding (자기 선택) 의 표준 보정.
  • 일상어 비유: 약 처방 시 환자 자기 선택 — IPW 가 그 자기 선택의 영향 제거.
  • 반사실 시나리오: 단순 ITT (initial assignment) 만 분석 시 실제 treatment 효과 ↓. IPW 가 진성 효과 추정.

9 G-Formula 와 Pooled Logistic

정의: G-Formula

시간 의존 confounder 자료의 인과 효과 추정.

Step 1: 각 시점의 covariate 모형. Step 2: 각 시점의 outcome 모형 (pooled logistic). Step 3: Standardize over covariate 분포.

(Robins, 1986; Hernán & Robins, 2020).

직관 3 단계: G-Formula 의 활용
  • 추상 정의: Time-varying confounder + treatment 의 인과 효과 표준 도구.
  • 일상어 비유: 시간 따라 변하는 환자 상태 + 약 처방 — 진성 약 효과 추정.
  • 반사실 시나리오: 단순 보정 시 time-varying confounding 처리 못함. G-formula 가 표준.

10 MSM (Marginal Structural Model)

정의: MSM via IPW

\[\text{logit}(P(Y_a = 1)) = \alpha + \beta a\]

여기서 \(Y_a\) = potential outcome under treatment \(a\).

IPW 가중 pooled logistic 으로 \(\beta\) 추정.

직관: MSM 의 가치
  • 추상 정의: Counterfactual outcome 의 marginal 모형 — 직접 인과 효과.
  • 일상어 비유: 약 효과의 평균 모형 — 환자 마다 변환 후 평균.
  • 반사실 시나리오: G-formula 와 MSM 이 같은 인과 효과의 다른 추정. 결과 비교가 sensitivity.

11 결론 — Phase H WOO Ch.11 시리즈 마무리

Phase H WOO Ch.11 시리즈 (10 편 완성)
│
├── H-WOO11-0: Overview
├── H-WOO11-1: 생존·위험 함수
├── H-WOO11-2: Hazard 추정 4 방법
├── H-WOO11-3: 모수적 모형
├── H-WOO11-4: 모수적 PH
├── H-WOO11-5: Cox PH + Weibull PH
├── H-WOO11-6: 모형 진단
├── H-WOO11-7: 경쟁 위험
├── H-WOO11-8: Poisson 회귀
└── H-WOO11-9: Pooled logistic (이 글)

다음 묶음 (WOO Ch.12 — Meta-analysis, H-WOO12-0~8) 은 여러 연구 결과의 통합 분석을 다룬다.

12 관련 주제

다음 묶음 (WOO Ch.12)

Causal Inference 크로스링크

Subscribe

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