Parametric g-formula와 SNMM의 생존 분석

Hernan Ch.17.5~17.6 — 결과 모형 표준화 + 구조적 SNMM g-estimation 의 시간-사건 확장

Hernan & Robins (2020) Ch.17.5~17.6 을 다룬다. Parametric g-formula 의 생존 분석 적용 — 결과 모형 (hazard) 적합 + 가상 시나리오 표준화 + 시점별 survival 도출. 그리고 Structural Nested Cumulative Failure Time Models 와 G-estimation 의 인과 생존 추정. 세 도구 (IPW MSM, g-formula, SNMM) 의 결과 비교와 도구 선택 가이드.

Experimentation
Causal Inference
저자

Kwangmin Kim

공개

2026년 05월 08일

1 정의

정의: Parametric g-formula for Survival

표준화 식별식의 시간-사건 확장:

\[\Pr(D_k^a = 0) = \mathrm{E}_L\left[\prod_{m=1}^{k} \Pr(D_m = 0 | D_{m-1}=0, A=a, L)\right]\]

= 모든 \(L\) 값에서 시점별 conditional survival 곱의 평균.

추정 절차: 결과 (hazard) 모형 적합 → 가상 시나리오 데이터에 대입 → 시점별 hazard 예측 → 곱셈으로 conditional survival → \(L\) 분포로 평균.

정의: Structural Nested Cumulative Failure Time Model

생존 분석의 SNMM 형태. 처치 효과를 누적 위험비 (cumulative incidence ratio) 로 표현:

\[\frac{\Pr(D_k^a = 1 | A = a, L)}{\Pr(D_k^{a=0} = 1 | A = a, L)} = \exp(\gamma_k a)\]

또는 hazard ratio 형태.

G-estimation 으로 모수 \(\gamma\) 추정.

직관 — 시간-사건 g-formula 의 본질: 단일 시점 g-formula 는 한 평균. 시간-사건은 시점마다 평균 → 시점별 survival 곡선. 같은 절차의 시간 차원 일반화. 확장의 자연스러움이 g-method 의 강점.

2 17.5 Parametric g-formula

2.1 절차의 5 단계

g-formula Survival 알고리즘

Step 1: Person-time 데이터 + 결과 (hazard) 모형 적합:

\[\mathrm{logit}\, \Pr(D_{k+1} = 1 | D_k = 0, A, L) = \alpha_{0,k} + \alpha_1 A + \alpha_2 A k + \alpha_3 L + \cdots\]

(보통 \(A \times L\) product term 포함하여 효과 수정 표현.)

Step 2: 가상 시나리오 데이터 생성 — 모든 환자에게 \(A := 1\) 적용한 person-time 복사본, \(A := 0\) 적용한 복사본.

Step 3: 적합된 hazard 모형으로 두 가상 데이터의 시점별 hazard 예측.

Step 4: 환자별 + 시점별 conditional survival 계산: \(\widehat{S}_i(k | A=a) = \prod_{m=1}^{k} (1 - \widehat{h}_i(m | A=a, L_i))\).

Step 5: 환자별 survival 의 표본 평균 → marginal survival: \(\widehat{\Pr}(D_k^a = 0) = \frac{1}{n} \sum_i \widehat{S}_i(k | A=a)\).

직관 — 가상 시나리오 데이터의 의미: Ch.13 의 표준화의 4 단계 알고리즘과 같음. 차이는 생존 분석에서는 시점별로 hazard 예측 + survival 누적 곱. 반사실의 시점별 추정.

직관 — 환자별 survival 의 평균: 각 환자의 \(L\) 에 따른 conditional survival 다름. 평균하면 \(L\) 의 표본 분포로 적분 → marginal survival. 표준화의 본질.

2.2 NHEFS g-formula 결과 (Hernan, Program 17.4)

NHEFS g-formula Survival 추정
측정 g-formula IPW MSM (Ch.17.4)
120 month \(\widehat{\Pr}(D^{a=1}=0)\) 80.4% 80.7%
120 month \(\widehat{\Pr}(D^{a=0}=0)\) 80.1% 80.5%
차이 +0.3% +0.2%
95% CI \((-3.9\%, +4.1\%)\) \((-4.1\%, +3.7\%)\)

직관 — 두 도구의 일치: g-formula 0.3% vs IPW MSM 0.2% — 거의 같음. 두 도구가 다른 모형 가정에 의존하는데 결과 일치 → 결과의 robust 신호. 단순 비교 -5.8% 와 매우 다른 결론.

직관 — 차이의 의미: 두 도구의 0.1% 차이는 모형 misspecification 의 흔적. 같은 방향의 작은 오차 가능. 의사결정에는 무관 — 둘 다 효과 거의 0.

2.3 Doubly Robust 추정량

DR Estimator for Survival

처치 모형 + 결과 모형 모두 적합 → 한쪽만 옳아도 일치 추정.

대표 형태 — Bang & Robins (2005) 의 시간-사건 확장:

각 시점 \(k\) 의 hazard 모형에 IP 가중치 \(W^A\) 를 추가 변수로 포함 후 표준화.

NHEFS DR 결과: 0.2~0.3% 차이 (95% CI 비슷). 세 도구 모두 거의 같은 결론.

직관 — DR 의 가치는 모형 위반 시: 두 모형 모두 잘 specify 되면 IPW, g-formula, DR 모두 비슷한 결과. 한 모형 misspecified 면 그 도구만 편향, DR 은 다른 모형이 옳으면 보정. NHEFS 사례는 두 모형 합리적이라 DR 의 추가 가치 작음.

3 17.6 G-estimation 의 생존 확장

3.1 Structural Nested Mean Model 의 한계

단일 시점 SNMM (Ch.14):

\[\mathrm{E}[Y^a - Y^{a=0} | A = a, L] = \beta_1 a + \beta_2 a L\]

생존 분석에서는 결과가 시점별 binary \(D_k\) 라 평균 차이 모형이 부자연스럽다. 두 가지 대안:

  1. Cumulative Failure Time SNMM: \(\Pr(T^a < k) - \Pr(T^{a=0} < k)\) 의 모형.
  2. Hazard SNMM: \(\log \frac{h^a(k|L)}{h^{a=0}(k|L)} = \gamma_k a\) 형태.

두 모형 모두 g-estimation 으로 추정 가능 (Robins 1992, 1994).

직관 — 생존 SNMM 의 어려움: 단일 시점 SNMM 보다 복잡 — 시점별 모수, hazard ratio 의 함정. 단일 시점 도구만큼 표준화 안 됨. 이론적 도구지만 실무에서는 g-formula 또는 IPW MSM 이 흔함.

3.2 Multiplicative Hazard SNMM

정의: Multiplicative Hazard SNMM (Tech Point 14.1, 17.5)

\[\frac{h^a(k | A=a, L)}{h^{a=0}(k | A=a, L)} = \exp(\beta_1 a + \beta_2 a L)\]

처치-non-treated hazard ratio 의 모형. \(\exp(\beta_1)\) 은 baseline group 의 HR.

G-estimation 으로 추정 — counterfactual hazard 의 conditional 형태.

직관 — Multiplicative 가 자연스러운 이유: Hazard 는 양수, 비율 비교가 자연. Logistic hazard 의 odds ratio 와 비슷한 multiplicative 형태. 분석적 편의 + 생물학적 해석 자연.

직관 — Hazard ratio 의 함정 재등장: SNMM 이 hazard 비율 모형이라 Ch.17.1 의 두 함정 (시점 의존 + built-in selection bias) 동일하게 적용. 결과 보고는 survival 차이로 변환 권장.

3.3 G-estimation 절차의 생존 확장

SNMM G-estimation for Survival

Ch.14 의 5 단계 절차의 시간-사건 확장:

Step 1: 후보 모수 격자 정의. Step 2: 각 후보 \(\psi^\dagger\) 에 대해 $H_k(^) = $ “처치 효과를 빼낸 가상 hazard” 계산 — multiplicative SNMM 형태. Step 3: 각 시점의 가중 logistic 회귀 — \(\Pr(A=1 | H_k(\psi^\dagger), L)\). Step 4: 모든 시점의 회귀 계수 합이 0 인 \(\psi^\dagger\) 찾기. Step 5: Test inversion 으로 95% CI.

직관 — 시점별 logistic 회귀의 합: 단일 시점 g-estimation 은 1 회 logistic. 생존은 시점마다 logistic — 시점 수만큼 적합. 모수 검색의 차원 수도 늘어 계산 부담 큼. 닫힌형 또는 Newton- Raphson 권장.

3.4 NHEFS G-estimation 결과

NHEFS SNMM 결과 (Hernan, Program 17.5)

이론적으로 가능하지만 본문에서 자세한 결과 제시 안 함. IPW MSM·g-formula 와 일치할 것으로 예상.

세 도구 모두 흡연 중단의 사망 효과 약함이라는 robust 결론.

4 도구 선택 가이드

도구 강점 약점
IPW MSM 처치 모형만 specification, 시간변동 자연 확장 weak IPW 시 분산 폭발
Parametric g-formula 결과 모형만 specification, robust to positivity 결과 함수 형태 가정
SNMM g-estimation semiparametric, sensitivity 자연 통합 절차 복잡, 격자 검색 비용
Doubly Robust 두 모형 중 한쪽만 옳아도 두 모형 적합 비용

실무 권장: 가능하면 세 도구 모두 사용. 결과 일치 → robust. 차이 → 모형 misspecification 의 신호 → sensitivity analysis.

5 NHEFS 의 종합 결론

흡연 중단의 효과 (전체 NHEFS 분석 종합)

체중 효과 (Ch.12-15): IPW 3.4kg, 표준화 3.5kg, g-est 3.4kg, PS 3.5kg, IV 2.4kg (weak). → Robust 약 +3.5kg 체중 증가. 다섯 도구 일치.

사망 효과 (Ch.17): IPW MSM 0.2%, g-formula 0.3%. → 10 년 내 사망 영향 거의 없음. 두 도구 일치.

메커니즘 추론: 흡연 중단이 체중 증가시키지만 (직접) 사망에는 단기 영향 약함. 흡연으로 인한 만성 질환은 더 긴 추적 기간 필요. NHEFS 의 1992 년 종료가 추적 한계.

직관 — 모든 도구의 종합 결론이 결정: 단일 도구의 점추정은 가정 위반에 취약. 5+ 도구의 일치 결과는 robust. 인과 분석의 황금 표준은 다중 도구 + sensitivity.

6 결과 보고 템플릿

NHEFS 흡연 중단의 사망 효과 보고

연구 질문: 1971-75 흡연자의 1982 까지 금연이 1992 까지 사망에 미치는 평균 인과 효과는?

데이터: NHEFS 1629 명 (1971-1992 추적). 318 명 사망, 1311 명 행정 censoring.

식별 가정: - 조건부 교환가능성: 9 baseline 변수가 모든 처치-사망 confounder 포함. - 양의 확률: PS 분포 [0.05, 0.95] 양호. - 일관성: 금연 정의 명확. - 행정 censoring 외생적 (모든 사람 동일 시점).

방법: KM (no adjustment) + IPW MSM + g-formula. Bootstrap 500 반복.

결과: - KM: -5.8% (95% CI -10.1, -1.4) — 단순 비교, 연관. - IPW MSM: +0.2% (95% CI -4.1, +3.7) — 인과 추정. - g-formula: +0.3% (95% CI -3.9, +4.1) — 인과 추정. - 두 인과 도구 일치 → 결과 robust.

Sensitivity: - 단순 비교의 -5.8% 는 나이 confounding 으로 설명 가능. - 추적 기간 10 년 — 흡연 만성 효과 발현에 짧음. - 미관측 교란 sensitivity (E-value): 약 1.1 — 약한 미관측 교란에 민감 가능.

결론: 측정된 9 변수 보정 + 결과·처치 모형 가정 + 약한 미관측 교란 가정 아래, 흡연 중단이 1992 사망에 미치는 평균 인과 효과 거의 0 (CI ±4%). 그러나 추적 기간 한계 + sensitivity 1.1 때문에 장기 효과나 미관측 교란 시나리오에서는 다른 결론 가능.

직관 — 보고의 풍부함: 점추정 + CI 만으로 부족. 가정 명시 + sensitivity + 한계 인식까지 포함하면 사용자가 도메인 판단으로 결과 신뢰성 평가 가능. 인과 분석은 계산이 아닌 추론의 조합.

7 응용 분야

  • 임상 코호트 사망 분석: g-formula 가 표준 도구
  • 종양학: 진행·생존의 g-formula 분석
  • HIV/AIDS 코호트: ART 의 시간변동 처치 + 사망 결과
  • 공중보건 정책: 정책 효과의 장기 결과 분석
  • 신뢰성 공학: 부품 수명의 처치 효과

8 코드 — Parametric g-formula Survival

import pandas as pd
import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf

# 이전 person-time 데이터 (Ch.17.4 코드)
nhefs = pd.read_csv("nhefs.csv").reset_index(drop=True)
nhefs["death"] = nhefs["death"].fillna(0).astype(int)
nhefs["survtime"] = np.where(
    nhefs["death"] == 1,
    (nhefs["yrdth"] - 1983) * 12 + nhefs["modth"],
    120
)

def to_person_time_with_L(df, L_cols):
    rows = []
    for _, r in df.iterrows():
        n = int(r["survtime"])
        for k in range(n):
            row = {"id": r["seqn"], "k": k, "qsmk": r["qsmk"]}
            for col in L_cols:
                row[col] = r[col]
            row["D_k1"] = 1 if (k == n - 1 and r["death"] == 1) else 0
            rows.append(row)
    return pd.DataFrame(rows)

L_cols = ["sex", "race", "education", "age", "smokeintensity",
          "smokeyrs", "exercise", "active", "wt71"]
person_time = to_person_time_with_L(nhefs, L_cols)

# === Step 1: 결과 (hazard) 모형 적합 with L ===
hazard_formula = (
    "D_k1 ~ qsmk * (k + I(k**2)) "
    "+ qsmk * smokeintensity "
    "+ sex + race + C(education) + age + I(age**2) "
    "+ smokeintensity + I(smokeintensity**2) "
    "+ smokeyrs + I(smokeyrs**2) + C(exercise) + C(active) "
    "+ wt71 + I(wt71**2) "
    "+ k + I(k**2)"
)
hazard_model = smf.glm(
    hazard_formula,
    data=person_time,
    family=sm.families.Binomial()
).fit()

# === Step 2: 가상 시나리오 데이터 생성 ===
def make_counterfactual_pt(df, L_cols, A_value, k_max=120):
    rows = []
    for _, r in df.iterrows():
        for k in range(k_max):
            row = {"k": k, "qsmk": A_value}
            for col in L_cols:
                row[col] = r[col]
            rows.append(row)
    return pd.DataFrame(rows)

cf_treated = make_counterfactual_pt(nhefs, L_cols, 1)
cf_untreated = make_counterfactual_pt(nhefs, L_cols, 0)

# === Step 3-4: 환자별 + 시점별 conditional survival ===
cf_treated["h"] = hazard_model.predict(cf_treated)
cf_untreated["h"] = hazard_model.predict(cf_untreated)

# 환자별 cumulative survival
def cumulative_survival(df, n_individuals, k_max=120):
    df["S"] = (1 - df["h"]).groupby(df.index // k_max).cumprod()
    # 시점별 marginal survival
    marginal_S = df.groupby("k")["S"].mean().values
    return marginal_S

n_ind = len(nhefs)
S1 = cumulative_survival(cf_treated, n_ind)
S0 = cumulative_survival(cf_untreated, n_ind)

print(f"g-formula Survival:")
print(f"  S(120 | A=1) = {S1[-1]:.3f}")
print(f"  S(120 | A=0) = {S0[-1]:.3f}")
print(f"  Difference = {S1[-1] - S0[-1]:.3f}")

# Bootstrap CI 는 IPW MSM 과 동일 절차로

9 한 줄 요약

Parametric g-formula 는 hazard 모형 + 가상 시나리오 데이터 + 시점별 survival 곱셈으로 인과 생존 추정. NHEFS 흡연 중단의 사망 효과 약 0.3% — IPW MSM 의 0.2% 와 일치, robust 결론. SNMM g-estimation 은 multiplicative hazard 형태로 시간-사건 확장 — 이론적 도구지만 실무에서는 g-formula·IPW MSM 이 흔함. 세 도구 일치성으로 결과의 robust 검증. NHEFS 종합: 흡연 중단이 체중 증가시키지만 10 년 내 사망 영향 거의 없음 — 추적 기간 한계 + 만성 효과 발현 시간.

10 관련 주제

선행 지식

후속 주제

다른 카테고리 연결

Subscribe

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