1 경쟁 위험의 정의
관심 사건 외의 다른 사건이 같은 사람에서 발생하여 관심 사건을 영구히 차단 하는 상황 (Woodward, 2014, Ch.11.9).
예시: - 관심: 폐암 사망 / 경쟁: 심혈관 사망 (전자가 차단). - 관심: 첫 결혼 / 경쟁: 사망. - 관심: A/B 의 결제 / 경쟁: 이탈 (이탈자는 결제 불가). - 관심: 골절 / 경쟁: 비-골절 사망.
각 사람은 결국 여러 사건 중 하나만 경험.
1.1 Independent Censoring 가정의 위반
KM 의 가정 — censoring 시점이 사건 시점과 독립.
경쟁 위험은 이를 위반: - 심혈관 사망자는 폐암 사건 발생 불가 → “이 시점까지 폐암 미발생자” 의 자연 정의가 흔들림. - 단순 censoring 처리 시 폐암 누적 발생률 과대 추정.
3 단계 직관:
- 추상 정의: \(T_{\text{관심}} \perp T_{\text{경쟁}}\) — 두 사건이 독립 가정. 같은 사람의 두 사건 모두 건강 상태에 의존하므로 일반적으로 종속.
- 일상어 비유: 마라톤 결승선 통과 vs 부상 하산 — 둘 다 체력에 의존. 부상자를 censoring 으로 처리하면 결승률 부풀려.
- 반사실 시나리오: 만약 두 사건이 정말 독립이면 KM OK. 실제로는 의학·IT 자료의 다수가 종속 → CIF 권장.
2 Naive 1 - KM 의 함정
가설: 폐암 사망 자료에서 심혈관 사망을 censoring 처리. KM 으로 폐암 미발생 확률 \(\hat S_{\text{lung}}(t)\) 추정. 1 - KM 으로 “폐암 누적 발생 확률” 보고.
문제: 1 - KM 은 “심혈관 사망이 0 이라는 가정 하의 폐암 발생 확률” — 즉 가상 시나리오. 실제 자료에서의 누적 발생률 아님.
3 단계 직관:
- 추상 정의: 1 - KM 가 conditional probability — “심혈관 사망 안 했다는 가정 하의 폐암 위험”.
- 일상어 비유: 학생 100 명의 졸업률을 측정 — 자퇴자를 “그 시점까지 무사했다” 가정 처리 → 졸업률 부풀려짐.
- 반사실 시나리오: 만약 심혈관 사망 0 이면 1 - KM 이 정확. 실제로는 항상 > 0 → CIF 가 정직.
3 Cumulative Incidence Function (CIF) — Aalen-Johansen
원인 \(k\) 의 누적 발생 확률:
\[F_k(t) = P(T \le t, \text{cause} = k)\]
추정 (Aalen-Johansen): \[\hat F_k(t) = \sum_{t_i \le t} \hat S(t_i^-) \cdot \frac{d_{ki}}{n_i}\]
여기서: - \(\hat S(t_i^-) = \prod_{t_j < t_i} (1 - d_j / n_j)\) — 모든 원인 통합 KM (시점 \(t_i\) 직전). - \(d_{ki}\): 시점 \(t_i\) 의 원인 \(k\) 사건 수. - \(n_i\): \(t_i\) 직전 위험 인구.
성질: \(\sum_k F_k(t) + S(t) = 1\) (모든 사건 + 미발생자 = 1).
3.1 직관 — CIF 의 진성 발생률
- 추상 정의: CIF 는 “시점 \(t\) 까지 원인 \(k\) 가 발생한 인구 비율” 의 직접 추정. 1 - KM 보다 작거나 같음.
- 일상어 비유: 100 명 출발 → 시점 5 까지 70 명 무사 → 시점 5 에 원인 A 5 명, 원인 B 3 명 사망.
- CIF_A(5) = 5/100 = 5%.
- 1 - KM_A(5) ≈ 5/(100 - 3) = 5.2%.
- 차이는 작아 보이지만 누적되면 큼.
- 반사실 시나리오: 만약 경쟁 사건이 흔하면 1 - KM 의 과대 추정이 클 수 있음 (예: 노인 골반 골절 — 사망이 흔해 1 - KM 이 진성보다 ↑).
3.2 사례 — 골반 골절과 사망
가설: 70 세 여성 1,000 명 5 년 추적.
- 골반 골절 발생: 80 명.
- 골절 없이 사망: 200 명.
Naive (1 - KM): \(1 - \hat S(5) \approx 80/(1000-200) = 10\%\) — 사망자를 censoring 처리.
CIF: \(\hat F_{\text{fracture}}(5) \approx 80/1000 = 8\%\).
차이 2%p — 사망이 골절을 차단하므로 진성 발생률이 KM 보다 낮음.
임상 활용: 환자에게 “5 년 안에 골절 위험” 보고 시 어느 수치가 정직한가? CIF.
3 단계 직관:
- 추상 정의: 진성 누적 발생률 = 환자에게 직접 의미.
- 일상어 비유: 보험 청구 발생률 — 사망자도 분모에 포함하여 진성 비율 계산.
- 반사실 시나리오: 1 - KM 이 보고되면 환자가 위험 과대 평가. 의사 결정 왜곡.
4 Cause-Specific Hazard
\[h_k^{cs}(t) = \lim_{\Delta t \to 0} \frac{P(t \le T < t + \Delta t, \text{cause} = k \mid T \ge t)}{\Delta t}\]
분모: 모든 사건 미발생자 (즉 시점 \(t\) 까지 어느 사건도 안 겪은 자).
모형: Cox-style cause-specific Cox PH.
\[h_k^{cs}(t \mid X) = h_{0k}^{cs}(t) \exp(\beta^T X)\]
각 원인별 별도 Cox 적합. 분석 시 다른 원인 = censoring 처리.
4.1 직관 — Etiology Focus
- 추상 정의: “이 시점에 무사한 사람이 다음 순간 원인 \(k\) 를 겪을 즉각 비율” — 인과 메커니즘 (etiology) 분석 자연.
- 일상어 비유: 약이 폐암 발생 메커니즘에 영향 vs 심혈관 메커니즘에 영향 → cause-specific HR 이 각각 답.
- 반사실 시나리오: 약이 폐암 cause-specific HR ↓ 이지만 심혈관 cause-specific HR 무관 → 약은 폐암 메커니즘만 영향. CIF 만 보면 두 효과 결합돼 모호.
활용: - 인과 메커니즘 식별. - 약물 표적 분석. - 부작용 분석.
5 Subdistribution Hazard (Fine-Gray)
\[h_k^{sd}(t) = \lim_{\Delta t \to 0} \frac{P(t \le T < t + \Delta t, \text{cause} = k \mid T \ge t \text{ or } (T < t \wedge \text{cause} \ne k))}{\Delta t}\]
분모: 원인 \(k\) 미발생자 + 다른 원인으로 사건 발생자. 즉 다른 원인 사망자도 분모에 포함.
모형: Fine-Gray subdistribution Cox.
\[h_k^{sd}(t \mid X) = h_{0k}^{sd}(t) \exp(\beta^T X)\]
5.1 직관 — Prediction Focus
- 추상 정의: “현재까지 원인 \(k\) 안 겪은 자 (다른 원인 사망자도 포함)” 의 즉각 사건 비율. 누적 발생 확률 (CIF) 의 직접 모형.
- 일상어 비유: 인구 단위 예측 — “다음 순간 폐암 발병할 비율” — 심혈관 사망자도 분모에 (그들도 잠재적 폐암 위험).
- 반사실 시나리오: 임상 의사가 환자에게 “5 년 안에 폐암 발생 위험” 예측 시 CIF 직접 모형 (Fine-Gray) 이 직관.
활용: - 환자 예측 (prognostic). - 의사 결정 도구. - Risk score (H-WOO13).
6 두 모형의 분업
| 측면 | Cause-specific Cox | Fine-Gray |
|---|---|---|
| 분모 | 모든 사건 미발생자 | 원인 \(k\) 미발생자 (다른 원인 사망자 포함) |
| HR 해석 | 즉각적 발생 비율 | 누적 발생 확률 변화율 |
| 활용 | Etiology (메커니즘) | Prediction (예측) |
| 다른 원인 | Censored 처리 | 분모 잔존 |
3 단계 직관:
- 추상 정의: 두 모형이 다른 질문에 답. Cause-specific = “왜 발생”, Fine-Gray = “언제 누적”.
- 일상어 비유: 두 의사 — 한 의사는 약 메커니즘 (etiology), 다른 의사는 환자 예후 (prognosis). 다른 도구.
- 반사실 시나리오: 한 모형만 보면 정보 손실. 두 모형 모두 보고가 표준.
7 Joint Modeling — 다중 결과의 동시 모형
Survival outcome + 종단 (longitudinal) outcome 동시 모형.
예시: 환자의 항암 치료 반응 (longitudinal CD4) + 사망 (survival).
구조: \[\text{Longitudinal: } Y_{ij} = \alpha + \beta T_{ij} + \epsilon_{ij}\] \[\text{Survival: } h(t) = h_0(t) \exp(\gamma X + \eta Y(t))\]
여기서 \(Y(t)\) 는 longitudinal 결과의 시간 \(t\) 추정값.
7.1 활용 사례
가설: HIV 치료군 vs 대조군의 CD4 변화 + 사망 시간.
단순 분석: CD4 회귀 + Cox 별도 → 두 결과의 의존성 무시.
Joint model: CD4 의 진성 (latent) 값을 사망 hazard 의 covariate 로 → CD4 와 사망의 진성 관계 분석.
3 단계 직관:
- 추상 정의: 두 결과의 latent process 공유 — 동시 추정으로 efficient.
- 일상어 비유: 학생의 학습 과정 + 졸업 — 두 결과가 진성 능력에 의존. 따로 분석하면 정보 손실.
- 반사실 시나리오: Joint 모형이 복잡하나 두 결과 모두 관심 시 표준. 한 결과만 관심이면 단순 모형 충분.
8 코드 예시 — CIF + Fine-Gray
import numpy as np
import pandas as pd
from lifelines import AalenJohansenFitter, KaplanMeierFitter
import matplotlib.pyplot as plt
np.random.seed(42)
n = 1000
# 가상: 두 원인 사망
df = pd.DataFrame({
"T": np.random.exponential(scale=5, size=n),
"cause": np.random.choice([1, 2], size=n, p=[0.4, 0.6]),
})
df.loc[df["T"] > 10, "cause"] = 0 # censored
df["T"] = np.minimum(df["T"], 10)
# CIF (Aalen-Johansen) for cause 1
ajf1 = AalenJohansenFitter()
ajf1.fit(durations=df["T"], event_observed=df["cause"], event_of_interest=1)
# Naive 1 - KM (treating cause 2 as censored)
event_cause1 = (df["cause"] == 1).astype(int)
kmf = KaplanMeierFitter()
kmf.fit(df["T"], event_cause1)
naive_cif = 1 - kmf.survival_function_
# 비교
fig, ax = plt.subplots(figsize=(10, 6))
ajf1.plot(ax=ax, label="CIF (Aalen-Johansen)")
naive_cif.plot(ax=ax, label="Naive 1 - KM (overestimate)")
ax.set_title("CIF vs Naive 1 - KM")
ax.set_xlabel("Time")
ax.set_ylabel("Cumulative incidence (cause 1)")
plt.legend()해석: 두 추정의 차이가 경쟁 사건의 영향 — naive 가 항상 ≥ CIF.
9 A/B 테스트의 경쟁 위험
A/B 테스트: - 관심 사건: 결제. - 경쟁 사건: 이탈 (이탈자는 결제 불가).
단순 분석: 이탈 = censoring → 결제 KM 분석. 과대 추정.
올바른 분석: - CIF (결제) — 이탈자 분모에 포함. - Cause-specific Cox: treatment 의 결제 hazard 효과. - Fine-Gray: treatment 의 결제 누적 확률 효과.
3 단계 직관:
- 추상 정의: A/B 의 결제 lift 가 cause-specific (결제 메커니즘) vs subdistribution (누적 결제율) 다를 수 있음.
- 일상어 비유: 약이 폐암 메커니즘 vs 누적 폐암 발생률 영향. 두 측도 다른 답.
- 반사실 시나리오: 단순 KM 만 보면 이탈자 자료의 부분 정보 손실. CIF 가 정직.
10 Multistate Models — Competing Risk 의 일반화
여러 상태 사이의 전이 hazard 모형.
예시: - Healthy → Disease → Death. - Active → Churned → Reactivated.
각 전이의 hazard \(h_{ij}(t)\) 별도 모형.
- 추상 정의: Competing risk 의 일반화. 상태 간 전이의 시간 분석.
- 일상어 비유: 학생의 상태 (재학 → 졸업 → 취업 → 이직) — 각 전이 별도 분석.
- 반사실 시나리오: 단일 hazard 만 보면 상태 변화 가림. Multistate 가 종합.
11 Q&A — 경쟁 위험 흔한 오해
A: 경쟁 사건 흔하면 (> 5%) CIF 권장.
3 단계 직관:
- 추상 정의: KM 의 1 - S 가 다른 사건 0 가정 — 가상 시나리오.
- 일상어 비유: 다른 코스 가는 등산객 무시 — 잘못된 도착률.
- 반사실 시나리오: 경쟁 흔하지 않으면 (< 1%) KM 가능. 흔하면 CIF.
A: 다른 정보 — 둘 다 보고 권장.
3 단계 직관:
- 추상 정의: Cause-specific = etiology, Fine-Gray = prediction.
- 일상어 비유: 약 메커니즘 vs 환자 예후.
- 반사실 시나리오: 한 결과만 보고 → 임상 의사 결정 부족.
12 결론
경쟁 위험은 KM 의 independent censoring 가정 위반. CIF (Aalen-Johansen) 가 진성 누적 발생률, Cause-specific Cox 가 메커니즘 분석, Fine-Gray 가 예측 도구. Multistate 모형이 경쟁 위험의 일반화. 임상·IT 분석에서 다중 사건이 흔할 때 표준 도구.
다음 글 (H-WOO11-8) 에서 Poisson regression 의 person-time 분석을 본다.
13 관련 주제
- Cox PH 와 Weibull PH
- 모형 진단
- 1111-11-11, 포아송 회귀
Phase B 크로스링크
Statistics 크로스링크