1 Pooled Logistic 의 발상
추적 시간을 작은 구간 (예: 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 친척
- 추상 정의: 연속 시간 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 시간 의존 공변량의 자연 처리
\[\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 의 자연
각 사람-구간 = 한 행:
| 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 와의 연결
인과 추론의 표준 도구 (Hernán & Robins, 2020):
- IPW (Inverse Probability Weighting): Treatment 확률의 역수로 가중.
- G-formula: 시간 의존 covariate 의 표준 모형.
- G-estimation: 구조적 모형의 추정.
이들이 모두 pooled logistic 을 building block 으로 사용.
3.1 IPW 의 Pooled Logistic 활용
가설: 시간 의존 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 의 실용적 장점
| 강점 | 설명 |
|---|---|
| 시간 의존 공변량 | Long-format 으로 자연 처리 |
| 불규칙 측정 | 각 시점의 자료 사용 |
| 인과 추론 친화 | g-methods 의 building block |
| 계산 효율 | Cox 의 risk-set 비교 회피 |
4.1 Cox 의 단점과 비교
- 추상 정의: Cox 의 partial likelihood 가 risk-set 에 의존. 큰 표본 + 시간 의존 + IPW 시 계산 부담 ↑.
- 일상어 비유: 매 사건마다 모든 위험 인구 비교 vs 매 시점마다 단순 logistic — 후자가 직관적.
- 반사실 시나리오: 작은 자료 + 표준 분석 → Cox 가 표준. 큰 자료 + 시간 의존 + 인과 추론 → pooled logistic.
5 구간 크기 선택
구간이 너무 작음 (예: 1 분): - Cox 와 정확히 일치. - 자료 행 수 ↑↑ — 계산 부담.
구간이 너무 큼 (예: 1 년): - Cox 와 차이 커짐 (OR vs HR 갈라짐). - 시간 정보 손실.
권장: - 1 일 또는 1 주 (임상 자료). - 1 시간 또는 1 분 (실시간 자료). - 자료 자세함과 계산 자원의 균형.
6 Baseline Hazard 의 모형화
옵션 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
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
시간 의존 confounder 자료의 인과 효과 추정.
Step 1: 각 시점의 covariate 모형. Step 2: 각 시점의 outcome 모형 (pooled logistic). Step 3: Standardize over covariate 분포.
(Robins, 1986; Hernán & Robins, 2020).
- 추상 정의: Time-varying confounder + treatment 의 인과 효과 표준 도구.
- 일상어 비유: 시간 따라 변하는 환자 상태 + 약 처방 — 진성 약 효과 추정.
- 반사실 시나리오: 단순 보정 시 time-varying confounding 처리 못함. G-formula 가 표준.
10 MSM (Marginal Structural Model)
\[\text{logit}(P(Y_a = 1)) = \alpha + \beta a\]
여기서 \(Y_a\) = potential outcome under treatment \(a\).
IPW 가중 pooled logistic 으로 \(\beta\) 추정.
- 추상 정의: 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)
- 1111-11-11, Meta-analysis 개관
Causal Inference 크로스링크
- Hernan Ch.17 — Causal Survival
- (Phase D 의 g-methods 글로 확장 예정)