1 들어가며 — Ch.3 likelihood 에서 Ch.4 추정량으로
Klein 시리즈 사다리:
| 편 | 주제 |
|---|---|
| Ch.1 시리즈 | 19 예제 catalog (5 censoring/truncation 형태) |
| Ch.2 시리즈 | 수학적 기초 (4 함수 + 9 분포 + PH/AFT + competing risks) |
| Ch.3 시리즈 | Censoring·truncation 의 likelihood 와 counting process |
| Ch.4 (본 편) | 비모수 추정 — KM · NA · CI · CB · 평균·중앙 · 좌절단 · CIF |
| Ch.5 (예정) | 다른 sampling scheme (interval cens · double cens · right trunc · life table) |
| … (Ch.6~13) | kernel hazard · log-rank · Cox · Aalen · AFT · 진단 |
“우측 중도절단 데이터에서, 사건 시점 \(t_i\) 직전 생존자 \(Y_i\) 중 사건 수 \(d_i\) 의 비율 \(d_i/Y_i\) 가 모든 비모수 추정의 출발점이다. 이 비율의 곱 \(\prod (1 - d_i/Y_i)\) 가 생존함수 KM, 합 \(\sum d_i/Y_i\) 가 누적위험 NA, 적분 \(\int \widehat{S} dt\) 가 평균, 좌표 역변환이 중앙값이다. Truncation 은 \(Y_i\) 의 정의를 바꿀 뿐 동일한 framework 으로 처리된다.”
이 단순한 quantity \(d_i/Y_i\) 가 Ch.5~13 의 모든 비모수·반모수 도구의 공통 building block 이다.
연속 분포에서 hazard 의 정의:
\[ h(t) = \lim_{\Delta \to 0} \frac{P(t \leq X < t+\Delta \mid X \geq t)}{\Delta} \]
즉 “지금까지 살아있는 사람 중에서 다음 순간 죽을 비율”. 이산 시점 \(t_i\) 에서는 \(\Delta\) 극한 없이 그대로:
\[ h(t_i) = P(X = t_i \mid X \geq t_i) \approx \frac{d_i}{Y_i} \]
- 분모 \(Y_i\) : “\(t_i\) 직전까지 살아있던 사람 수” (조건부 분모).
- 분자 \(d_i\) : “\(t_i\) 에 죽은 사람 수” (조건부 분자).
- 따라서 \(d_i/Y_i\) = \(t_i\) 에서의 hazard 추정.
이 hazard 추정으로부터 — survival, cumulative hazard, mean, median — 4 함수가 모두 자동 도출된다 (Ch.2 의 동등성).
1.1 Ch.4 의 7 절 조망
| 절 | 주제 | 핵심 |
|---|---|---|
| § 4.1 | Introduction | \(d_i/Y_i\) 의 의미·7 절 개관 |
| § 4.2 | KM · NA estimators | 비모수 MLE·5 가지 유도 |
| § 4.3 | Pointwise CI | linear · log · arcsine 3 종 |
| § 4.4 | Confidence Bands | EP · Hall-Wellner 두 형태 |
| § 4.5 | Mean · Median | restricted mean · Brookmeyer-Crowley |
| § 4.6 | Left-Truncation | \(Y_i\) 재정의·Channing 정전 |
| § 4.7 | Competing Risks | 1-KM · CIF · CP 3 곡선 |
2 § 4.1 Introduction — \(d_i/Y_i\) 의 의미
표기 (Ch.4 전체에서 사용):
| 기호 | 정의 |
|---|---|
| \(D\) | 서로 다른 사건 시점의 수 |
| \(t_1 < t_2 < \cdots < t_D\) | 사건 발생 시점 |
| \(d_i\) | \(t_i\) 에서의 사건 수 (tie 가능) |
| \(Y_i\) | \(t_i\) 직전의 위험집합 크기 (just before \(t_i\)) |
\(Y_i\) 는 시점 \(t_i\) 직전에 여전히 추적 중이고, 아직 사건을 경험하지 않은 개체의 수이다. 즉
\[ Y_i = \#\{j : T_j \geq t_i\} \]
여기서 \(T_j\) 는 개체 \(j\) 의 관측 시간 (사건 또는 censoring time 중 더 작은 것).
본 chapter 의 가정:
- 독립 (비정보적) censoring — censoring 시점이 사건 시점과 독립.
- Type I, Type II, progressive, random censoring 모두 적용 가능 (Ch.3.2).
가정 위반 시 (예: 예후 나쁜 환자만 선택적 censoring) 추정량이 다른 함수를 추정하게 되어 결론이 왜곡된다 (Klein & Moeschberger 1984).
3 § 4.2 — Kaplan-Meier · Nelson-Aalen
3.1 Kaplan-Meier (Product-Limit) Estimator
\[ \widehat{S}(t) = \begin{cases} 1 & \text{if } t < t_1 \\ \displaystyle\prod_{t_i \leq t} \left(1 - \frac{d_i}{Y_i}\right) & \text{if } t_1 \leq t \end{cases} \]
직관 — 왜 곱인가:
생존확률을 조건부 확률의 사슬로 분해한다.
\[ \begin{aligned} S(t_k) &= P(X > t_k) \\ &= P(X > t_k \mid X > t_{k-1}) \cdot P(X > t_{k-1} \mid X > t_{k-2}) \cdots P(X > t_1) \end{aligned} \]
각 조건부 확률 \(P(X > t_i \mid X > t_{i-1})\) 는 “\(t_{i-1}\) 까지 생존한 사람 중 \(t_i\) 까지도 생존할 비율” \(\approx (Y_i - d_i)/Y_i = 1 - d_i/Y_i\). 곱하면 KM.
KM 은 다섯 가지 다른 관점에서 동일한 추정량으로 도출된다 — 이것이 KM 이 “비모수 MLE” 로 불리는 이유.
- Reduced-sample: 이산 분포로 보고, 각 시점에서 조건부 확률을 곱.
- Redistribute-to-the-right (Efron 1967): censored observation 의 mass 를 그 이후 관측에 균등 재분배.
- Self-consistency (Efron 1967): \(\widehat{S}(t) = \frac{1}{n}[\sum_{T_i > t} 1 + \sum_{\delta_i=0, T_i \leq t} \widehat{S}(t)/\widehat{S}(T_i)]\) 의 fixed point — EM 의 원형.
- Counting process (Andersen et al. 1993): \(\widehat{S}(t) = \prod_{u \leq t}(1 - dN(u)/Y(u))\) 의 product integral.
- NPMLE: 모든 점프 위치를 사건 시점에만 둔 분포 가족 안에서의 최대 likelihood.
다섯 유도가 모두 동일한 추정량을 산출한다는 사실이 KM 의 robustness 의 근거다.
3.2 Greenwood 분산 공식
KM 추정량의 분산은 다음 식 4.2.2:
\[ \widehat{V}[\widehat{S}(t)] = \widehat{S}(t)^2 \sum_{t_i \leq t} \frac{d_i}{Y_i (Y_i - d_i)} \]
직관 — 왜 이 형태인가:
\(\log \widehat{S}(t) = \sum_{t_i \leq t} \log(1 - d_i/Y_i)\). 각 항을 \(-d_i/Y_i\) 로 근사하고, \(d_i \sim \text{Binomial}(Y_i, h_i)\) 의 분산 \(Y_i h_i (1-h_i) \approx d_i (Y_i - d_i)/Y_i\) 를 쓰면, \(\log \widehat{S}\) 의 분산이 \(\sum d_i / [Y_i(Y_i - d_i)]\). delta method 로 \(\widehat{S}^2\) 곱하면 식 4.2.2.
3.3 Nelson-Aalen Estimator
\[ \widetilde{H}(t) = \begin{cases} 0 & \text{if } t \leq t_1 \\ \displaystyle\sum_{t_i \leq t} \frac{d_i}{Y_i} & \text{if } t_1 \leq t \end{cases} \]
분산 (식 4.2.4): \(\sigma_H^2(t) = \displaystyle\sum_{t_i \leq t} \frac{d_i}{Y_i^2}\).
직관 — 왜 합인가:
\(H(t) = \int_0^t h(u) du\) 의 이산 근사. 각 시점에서 hazard 추정 \(d_i/Y_i\) 를 누적.
NA 로부터 survival 추정도 가능: \(\widetilde{S}(t) = \exp[-\widetilde{H}(t)]\).
| 측면 | Kaplan-Meier \(\widehat{S}\) | Nelson-Aalen \(\widetilde{S} = e^{-\widetilde{H}}\) |
|---|---|---|
| 자연성 | 생존함수 직접 | 누적위험 → 변환 |
| 점프 처리 | \(1 - d_i/Y_i\) (multiplicative) | \(-d_i/Y_i\) (additive log) |
| 소표본 | 음의 편향 (조금 더 작음) | \(\widehat{S}\) 보다 큼 |
| 큰 \(d_i/Y_i\) | \(\widetilde{S} > \widehat{S}\) (Taylor 1차) | |
| 점근적 | 동치 | 동치 |
| 모형 식별 | 약함 | \(\widetilde{H}\) vs \(t\) 직선이면 Exp |
| Hazard 추정 | 어려움 | 점프 크기가 \(h\) 의 거친 추정 |
관행: 생존곡선 보고는 KM, hazard 모양 진단은 NA, 분포 식별 plot 은 NA.
3.4 손풀이 예제 — 6-MP 백혈병 데이터 (Klein Example 4.1)
Freireich (1963) 6-MP 군 21 명의 관해 시간 (주 단위, \(+\) = censoring): 6, 6, 6, 6+, 7, 9+, 10, 10+, 11+, 13, 16, 17+, 19+, 20+, 22, 23, 25+, 32+, 32+, 34+, 35+.
KM 계산표 (Klein Table 4.1A 재구성):
| \(t_i\) | \(d_i\) | \(Y_i\) | \(1 - d_i/Y_i\) | \(\widehat{S}(t_i)\) | Greenwood term |
|---|---|---|---|---|---|
| 6 | 3 | 21 | 0.857 | 0.857 | \(3/(21 \cdot 18) = 0.0079\) |
| 7 | 1 | 17 | 0.941 | 0.807 | \(0.0079 + 1/(17 \cdot 16)\) |
| 10 | 1 | 15 | 0.933 | 0.753 | \(0.0116 + 1/(15 \cdot 14)\) |
| 13 | 1 | 12 | 0.917 | 0.690 | \(0.0164 + 1/(12 \cdot 11)\) |
| 16 | 1 | 11 | 0.909 | 0.628 | \(0.0240 + 1/(11 \cdot 10)\) |
| 22 | 1 | 7 | 0.857 | 0.538 | \(0.0330 + 1/(7 \cdot 6)\) |
| 23 | 1 | 6 | 0.833 | 0.448 | \(0.0569 + 1/(6 \cdot 5)\) |
해석:
- \(\widehat{S}(23) = 0.448\) 은 “23 주까지 무재발 생존할 확률 약 44.8%”.
- \(t > 35\) 부분은 정의되지 않는다 — 마지막 관측이 censoring 이므로 (Practical Note 2: Efron tail · Gill tail · Brown-Hollander-Kowar exponential tail 3 안 중 선택).
- \(Y_i\) 의 갑작스런 감소 (예: \(11 \to 7\)) 는 \(t_i = 16\) 과 \(t_i = 22\) 사이에 4 명이 censoring 되었기 때문.
NA 계산표 (Klein Table 4.2):
| \(t_i\) | \(d_i/Y_i\) | \(\widetilde{H}(t_i)\) | \(d_i/Y_i^2\) | \(\sigma_H^2\) |
|---|---|---|---|---|
| 6 | 0.143 | 0.143 | 0.0068 | 0.0068 |
| 7 | 0.059 | 0.202 | 0.0035 | 0.0103 |
| 10 | 0.067 | 0.268 | 0.0044 | 0.0147 |
| 13 | 0.083 | 0.352 | 0.0069 | 0.0217 |
| 16 | 0.091 | 0.443 | 0.0083 | 0.0299 |
| 22 | 0.143 | 0.585 | 0.0204 | 0.0503 |
| 23 | 0.167 | 0.752 | 0.0278 | 0.0781 |
해석: \(\widetilde{H}(t)\) 의 거의 직선적 증가 (0.143 → 0.752) → constant hazard ≈ exponential 분포 후보 (Ch.12 model identification).
마지막 관측이 censoring 일 때 \(\widehat{S}(t)\) 를 \(t_{\max}\) 너머로 어떻게 정의할까:
| 방법 | 가정 | \(\widehat{S}(t > t_{\max})\) |
|---|---|---|
| Efron (1967) | 마지막 censored 가 즉시 사건 | 0 |
| Gill (1980) | 마지막 censored 가 \(\infty\) 에서 사건 | \(\widehat{S}(t_{\max})\) (constant) |
| Brown-Hollander-Kowar (1974) | exponential tail | \(\exp\{t \ln[\widehat{S}(t_{\max})]/t_{\max}\}\) |
Klein (1991) 의 small-sample 실험 결과 Gill 안이 표준. Efron 은 음의 편향, BHK 는 모수적 가정 추가.
4 § 4.3 — Pointwise Confidence Intervals
특정 시점 \(t_o\) 에서의 \(S(t_o)\) 신뢰구간 3 종.
\[ \widehat{S}(t_o) \pm Z_{1-\alpha/2} \, \sigma_S(t_o) \, \widehat{S}(t_o) \]
여기서 \(\sigma_S^2(t) = \widehat{V}[\widehat{S}(t)] / \widehat{S}^2(t)\) — Greenwood 의 분산을 \(\widehat{S}^2\) 으로 나눈 것.
문제점: linear CI 는 \([0, 1]\) 을 벗어날 수 있다. 또 소표본에서 coverage probability 가 nominal level 보다 작다 (Borgan & Liestøl 1990).
4.1 Log-transformed CI (식 4.3.2)
\[ \left[\widehat{S}(t_o)^{1/\theta}, \widehat{S}(t_o)^{\theta}\right], \quad \theta = \exp\left\{\frac{Z_{1-\alpha/2} \sigma_S(t_o)}{\ln \widehat{S}(t_o)}\right\} \]
\(H(t) = -\ln S(t) > 0\). \(\ln H\) 의 분포가 정규에 더 가깝고, \(H\) 의 자연 도메인 \((0, \infty)\) 가 정규 공간 \((-\infty, \infty)\) 으로 일대일 매핑된다. 신뢰구간을 \(\ln H\) 공간에서 만든 후 \(S = \exp(-H) = \exp(-\exp(\ln H))\) 로 역변환하면, \(S\) 의 신뢰구간이 자연스럽게 \([0, 1]\) 안에 들어가고 비대칭성이 반영된다.
→ 이 변환을 “log-log transformation” 이라고도 부른다 (Theoretical Note 4): \(S\) → \(H = -\ln S\) → \(\ln H = \ln(-\ln S)\).
4.2 Arcsine-square-root CI (식 4.3.3, Nair 1984)
\[ \sin^2\left\{\arcsin\sqrt{\widehat{S}(t_o)} \pm \frac{1}{2} Z_{1-\alpha/2} \sigma_S(t_o) \sqrt{\frac{\widehat{S}(t_o)}{1 - \widehat{S}(t_o)}}\right\} \]
(상한·하한에 대해 \([0, \pi/2]\) 로 clip).
이항분포 \(p\) 에서 \(\arcsin\sqrt{p}\) 변환은 분산을 안정화한다 (variance stabilizing transformation). \(p \in [0, 1]\) → \(\arcsin\sqrt{p} \in [0, \pi/2]\) 의 일대일 매핑이 되고, 분산이 \(p\) 에 의존하지 않게 된다. 결과: 작은 \(\widehat{S}\) (예: 0.05) 와 큰 \(\widehat{S}\) (예: 0.95) 양 끝에서도 CI 가 도메인을 벗어나지 않고 coverage 가 유지된다.
| CI | 형태 | \([0, 1]\) 보장 | 소표본 coverage | 권장 |
|---|---|---|---|---|
| Linear | 대칭 \(\widehat{S} \pm Z\sigma_S\widehat{S}\) | X | nominal 보다 낮음 | 큰 표본만 |
| Log-transformed | 비대칭 | O | nominal 보다 약간 낮음 | 표준 |
| Arcsine-sqrt | 비대칭 | O | nominal 보다 약간 높음 (보수적) | 매우 작은 표본 |
관행: 대부분의 통계 패키지 default 는 linear (R survival::survfit 의 conf.type="plain"). \(n < 50\) 면 log 또는 arcsine 권장. R 의 survfit(..., conf.type="log-log") 가 식 4.3.2 의 변환.
4.3 6-MP 1 년 시점 신뢰구간 비교 (Klein Example 4.2 의 ALL 군)
ALL 환자 38 명의 1 년 (365 일) 무병생존확률 \(\widehat{S}(365) = 0.5492\), 표준오차 \(0.0812\), \(\sigma_s(365) = 0.1479\).
| 방법 | 95% CI |
|---|---|
| Linear | \((0.3900, 0.7084)\) |
| Log-transformed | \((0.3783, 0.6911)\) |
| Arcsine-sqrt | \((0.3903, 0.7032)\) |
세 CI 의 중심값과 폭이 거의 같지만, 변환된 두 CI 는 비대칭 (\(\widehat{S} = 0.5492\) 기준으로 위쪽이 더 넓음). 이는 sampling distribution 의 skewness 를 반영한다.
5 § 4.4 — Confidence Bands for the Survival Function
5.1 Pointwise CI 를 잇는 것이 왜 틀린가
각 \(t\) 에서 95% pointwise CI 의 의미:
“이 특정 \(t = t_o\) 에서, \(S(t_o)\) 가 CI 안에 들어갈 확률이 95%”
이를 모든 \(t\) 에 대해 plot 하고 “전체 곡선이 95% 확률로 band 안에 있다” 라고 말하는 것은 잘못. 각 점은 95% 이지만 동시(joint) 신뢰영역은 훨씬 좁다 — multiple comparison 의 본질.
→ 진짜 confidence band 가 필요: \(1 - \alpha = P[L(t) \leq S(t) \leq U(t), \forall t \in [t_L, t_U]]\).
5.2 EP (Equal Probability) Band — Nair (1984)
먼저 \(a_L, a_U\) 계산 (식 4.4.1):
\[ a_L = \frac{n \sigma_S^2(t_L)}{1 + n \sigma_S^2(t_L)}, \quad a_U = \frac{n \sigma_S^2(t_U)}{1 + n \sigma_S^2(t_U)} \]
조건: \(0 < a_L < a_U < 1\) (즉 $t_L > $ 첫 사건 시점).
Klein Appendix C.3 에서 \(c_\alpha(a_L, a_U)\) 를 찾고, pointwise CI 의 \(Z_{1-\alpha/2}\) 를 \(c_\alpha\) 로 교체:
- Linear band (식 4.4.2): \(\widehat{S}(t) \pm c_\alpha(a_L, a_U) \sigma_S(t) \widehat{S}(t)\).
- Log-transformed band (식 4.4.3) · Arcsine-sqrt band (식 4.4.4): pointwise 와 동일한 변환에 \(c_\alpha\) 사용.
직관: EP band 는 pointwise CI 를 단순히 더 넓게 (그러나 비례적으로) 확대한 것. “equal precision” — 모든 \(t\) 에서 같은 standardized 차이로 확대.
5.3 Hall-Wellner (HW) Band — Hall & Wellner (1980)
Klein Appendix C.4 에서 \(k_\alpha(a_L, a_U)\) 를 찾고:
Linear (식 4.4.5): \[ \widehat{S}(t) \pm \frac{k_\alpha(a_L, a_U) \, [1 + n \sigma_S^2(t)]}{n^{1/2}} \widehat{S}(t) \]
EP 와 달리 HW 는 \(t_L = 0\) 허용 (즉 시작 시점부터의 band 가능).
EP vs HW 비교:
| 측면 | EP (Nair) | Hall-Wellner |
|---|---|---|
| 근거 | \(W^\circ(x)/\sqrt{x(1-x)}\) 의 sup | Brownian bridge \(W^\circ(x)\) 의 sup |
| \(t_L = 0\) | 허용 안 함 (\(a_L > 0\) 필요) | 허용 |
| 폭 | 이른 시점에서 좁음 | 이른 시점에서 넓음 |
| 작은 위험집합 | 불안정 가능 | 안정 |
| 권장 | 데이터 풍부한 중간 구간 | 시작점 포함 시 |
KM 의 \(\widehat{S}(t) - S(t)\) 를 표준화하면 \(n \to \infty\) 에서 Brownian bridge \(W^\circ(\sigma^2)\) 로 수렴 (Klein Theoretical Note 1). Brownian bridge 는 양 끝 (0, 1) 에서 0 으로 고정된 process — HW band 가 양 끝에서 자연스럽게 좁아지는 이유.
EP 의 변환 \(q(x) = [x(1-x)]^{-1/2}\) 는 Brownian bridge 를 “대각선 표준화” 하여 모든 \(x \in (0, 1)\) 에서 같은 분산을 갖게 만든다 — 그래서 “equal precision”.
| Band × 변환 | 소표본 coverage | 권장 |
|---|---|---|
| EP linear | 매우 낮음 (n < 200) | X |
| EP log | 적정 | O (n ≥ 20 사건) |
| EP arcsine-sqrt | 적정 (약간 보수적) | 표준 권장 |
| HW linear | 적정 | O (n ≥ 20 사건) |
| HW log | 적정 | O |
| HW arcsine-sqrt | 적정 | O |
결론: EP arcsine-sqrt 또는 HW arcsine-sqrt 가 권장. R km.ci package 또는 직접 구현 (Klein Appendix C.3, C.4 의 critical value table 사용).
6 § 4.5 — Mean and Median Survival Time
6.1 Restricted Mean Survival Time (RMST)
\[ \widehat{\mu}_\tau = \int_0^\tau \widehat{S}(t) dt \]
분산: \[ \widehat{V}[\widehat{\mu}_\tau] = \sum_{i=1}^D \left[\int_{t_i}^\tau \widehat{S}(t) dt\right]^2 \frac{d_i}{Y_i (Y_i - d_i)} \]
\(\tau\) 는 (a) 마지막 사건 시점, (b) 사전 지정된 임상적으로 의미 있는 시점. 95% CI: \(\widehat{\mu}_\tau \pm 1.96 \sqrt{\widehat{V}[\widehat{\mu}_\tau]}\).
\(X \geq 0\) 의 평균:
\[ \mu = E[X] = \int_0^\infty t f(t) dt = \int_0^\infty S(t) dt \]
(부분적분: \(tf(t) = -tS'(t)\), \(\int_0^\infty -tS'(t)dt = [-tS(t)]_0^\infty + \int_0^\infty S(t)dt = \int_0^\infty S(t)dt\)).
→ survival 곡선 아래 면적이 평균 수명. KM 이 \(t_{\max}\) 에서 끝나면 면적도 \(\tau = t_{\max}\) 까지로 제한. 이것이 RMST.
왜 RMST 가 임상에서 주목 받는가 (최근 trend):
- PH 가정 위반 시 hazard ratio 의 해석이 불명확해진다.
- RMST 는 “\(\tau\) 시점까지의 평균 생존 일수” 라는 절대 척도로 직접 해석.
- 두 군의 RMST 차이 = “평균적으로 며칠 더 살았는가” — 임상 의사결정에 직관적.
6.2 6-MP 군 RMST 계산 (Klein Example 4.1)
마지막 관측이 censoring (35+ 주) 이므로 \(\tau = 35\) 로 제한:
\[ \widehat{\mu}_{35} = 1 \cdot 6 + 0.857 \cdot 1 + 0.807 \cdot 3 + 0.753 \cdot 3 + 0.690 \cdot 3 + 0.628 \cdot 6 + 0.538 \cdot 1 + 0.448 \cdot 12 = 23.286 \text{ 주} \]
표준오차: \(\sqrt{7.993} = 2.827\) 주. 즉 6-MP 군의 평균 무재발 시간은 23.3 주 (35 주 한정), SE 2.8 주.
6.3 Median Survival — Brookmeyer-Crowley (1982a) CI
중앙값 추정은 단순: \(\widehat{x}_{0.5} = \inf\{t : \widehat{S}(t) \leq 0.5\}\) (KM 곡선이 0.5 에 도달하는 가장 빠른 시점).
신뢰구간은 트릭이 필요. 일반적으로 quantile 의 분산은 density \(f(\widehat{x}_p)\) 를 추정해야 하는데 비모수에서는 어려움.
100(1-α)% CI 는 다음을 만족하는 모든 \(t\) 의 집합:
Linear: \[ -Z_{1-\alpha/2} \leq \frac{\widehat{S}(t) - 0.5}{\widehat{V}^{1/2}[\widehat{S}(t)]} \leq Z_{1-\alpha/2} \]
(log·arcsine 변환 형태도 식 4.5.5, 4.5.6).
핵심 아이디어: \(S(x_p) = 1 - p\) 와 \(\widehat{S}(\widehat{x}_p) \approx 1 - p\) 의 관계.
- 시간축에서의 신뢰구간 (\(\widehat{x}_p\) 의 분산) 은 직접 구하기 어렵다.
- 그러나 생존확률축에서 \(\widehat{S}(t)\) 의 신뢰구간은 안다.
- “특정 \(t\) 가 95% CI 안에 있다” \(\Leftrightarrow\) “그 \(t\) 의 \(\widehat{S}(t)\) 가 \(0.5\) 의 95% 신뢰구간에 있다”.
→ 시간 → 생존 → 다시 시간으로 역변환. density 추정 불필요.
7 § 4.6 — Left-Truncated Data
7.1 좌절단 데이터의 위험집합 재정의
좌절단: 개체 \(i\) 가 \(L_i\) (entry time) 이전에 사건 발생 시 표본에서 제외 (Ch.3.4 의 Channing house 정전 예제). 관측 데이터: \((L_i, T_i, \delta_i)\) 단 \(T_i \geq L_i\).
\[ Y_i = \#\{j : L_j \leq t_i \leq T_j\} \]
즉 \(t_i\) 직전에 이미 entry 했고, 아직 사건이나 censoring 이 발생하지 않은 개체. 우측 censoring 만의 경우 \(L_j = 0\) 이므로 \(\#\{j : T_j \geq t_i\}\) 와 일치.
이 \(Y_i\) 를 식 4.2.1 (KM) 과 식 4.2.3 (NA) 에 그대로 대입하면 left-truncated 데이터의 비모수 추정.
7.2 추정하는 양의 의미
좌절단 데이터에서 KM 은 무조건부 \(S(t) = P(X > t)\) 가 아닌, 조건부
\[ S(t \mid X > L_{\min}) = P(X > t \mid X > L_{\min}) \]
을 추정한다. 즉 “표본에 포함된다는 조건 하의 생존함수”.
- \(L_{\min}\) = 표본 내 최소 entry time.
- 일반적으로 \(t < L_{\min}\) 영역에서는 \(Y_i\) 가 매우 작거나 0 이라 추정 불가.
- Channing house 예: 60 세 이전은 입소 자체가 없어 추정 불가.
7.3 Channing House 정전 예제
Hyde (1980) 의 462 명 retirement community 데이터 (Klein § 1.16).
- \(L_i\) = 입소 연령 (개월).
- \(T_i\) = 사망 연령 또는 1975 년 7 월 1 일 시점 연령.
- 좌절단 처리 무시 시 → 입소 후 짧은 기간 내 사망자만 비중이 커져 사망률 과대 추정.
- 좌절단 처리 (식 4.6.1 의 \(Y_i\) 재정의) 시 → 진정한 conditional survival 추정.
요양원 입소자 중 “오래 산 사람” 일수록 수집 시점에 만나기 쉽다 (length-biased sampling). 좌절단 보정 = “각 개체가 표본에 포함된 사실을 분모에 반영” — entry time 이전의 데이터는 사용 불가.
실무적 함의: 의료기록 retrospective study 에서 “diagnosis 이후 추적” 자료는 본질적으로 좌절단. entry time = diagnosis time 으로 정의하고 식 4.6.1 적용.
좌절단 + 우측 censoring 시, \(t\) 의 양 끝에서 \(Y_i\) 가 작아지면 KM 의 분산이 폭증. 해결: 작은 \(Y_i\) 의 사건을 무시.
\[ \widetilde{S}(t) = \prod_{t_i \leq t} \left\{1 - \frac{d_i}{Y_i} I[Y_i \geq c n^\alpha]\right\} \]
\(c > 0\), \(0 < \alpha < 1\). 점근적으로 KM 과 동치이지만 finite sample 에서 안정.
8 § 4.7 — Summary Curves for Competing Risks
8.1 3 가지 다른 곡선이 등장하는 이유
각 곡선이 답하는 질문이 명확히 다르다:
| 곡선 | 답하는 질문 | 가정 세계 |
|---|---|---|
| 1-KM (complement of KM) | “다른 위험이 없었다면 시점 \(t\) 까지 사건 K 가 일어날 확률” | 경쟁 위험 제거된 가상 세계 |
| CIF (cumulative incidence) | “현실 세계에서 시점 \(t\) 까지 사건 K 가 일어날 확률” | 모든 위험이 작동하는 실제 세계 |
| CP (conditional probability) | “다른 사건이 안 일어난 사람 중에서, 시점 \(t\) 까지 사건 K 가 일어날 확률” | 생존자 한정 조건부 |
세 곡선 중 무엇을 보고할지는 분석 목적에 따라 다르며, 잘못 선택하면 결과 해석이 정반대로 갈 수 있다.
8.2 1-KM (Complement of KM) — Klein 비추천
다른 사건을 censoring 처리하고 KM 적용 후 1 - \(\widehat{S}_K(t)\) 계산.
문제: 다른 사건이 “독립” 이라는 가정이 필요한데, 실제로는 거의 항상 위반. 또 해석이 “hypothetical world” — 임상적으로 의미가 모호.
8.3 CIF (Cumulative Incidence Function)
\(t_1 < t_2 < \cdots < t_K\) 가 사건 (어느 종류든) 발생 시점, \(r_i\) = \(t_i\) 에서 관심 사건 수, \(d_i\) = \(t_i\) 에서 다른 사건 수, \(Y_i\) = 위험집합. 그러면
\[ \text{CI}(t) = \sum_{t_i \leq t} \widehat{S}(t_i^-) \frac{r_i}{Y_i} \]
여기서 \(\widehat{S}\) 는 모든 사건을 사건으로 간주한 KM (overall survival).
\(t_i\) 에서의 관심 사건 K 의 발생 확률 = (그 시점까지 어떤 사건도 안 일어날 확률) × (그 시점에서 K 가 일어날 조건부 확률)
- \(\widehat{S}(t_i^-)\) : “\(t_i\) 직전까지 어떤 사건도 안 일어남” — 모든 risk 작동하는 현실의 생존.
- \(r_i/Y_i\) : “\(t_i\) 에서 K 가 일어남” — K 의 cause-specific hazard.
곱하면 K 의 marginal contribution. 누적합 = \(t\) 까지의 K 발생률.
핵심 성질: \(\sum_{K} \text{CI}_K(t) = 1 - \widehat{S}(t)\) — 모든 risk 의 CIF 합이 전체 사건 발생 확률과 일치.
8.4 CP (Conditional Probability)
\[ \text{CP}_K(t) = \frac{\text{CI}_K(t)}{1 - \text{CI}_{K^c}(t)} \]
여기서 \(K^c\) = K 가 아닌 모든 다른 위험. 분모: \(t\) 까지 다른 사건이 안 일어났을 확률.
“다른 사망 원인이 발생하지 않은 사람들 중에서, \(t\) 까지 K 가 일어날 확률”.
임상 예: BMT 환자에서 relapse CP = “감염·GVHD 등 다른 원인으로 안 죽은 사람 중에서 재발할 확률”. 환자 상담 시점에서 “당신이 다른 합병증을 잘 넘기면 재발 위험은…” 이라는 문맥에 적합.
8.5 1-KM ≠ CIF — 정전 함정
100 명 1 년 후: 10 명 재발, 30 명 무재발 사망. censoring 없음.
CIF for 재발: \(10/100 = 0.10\) (현실).
CIF for 무재발 사망: \(30/100 = 0.30\).
CIF 합: \(0.40 = 1 - \widehat{S}(1\text{년})\) ✓.
1-KM for 재발 (무재발 사망을 censoring 처리): KM 곡선이 30 명 censoring 으로 인해 인공적으로 더 천천히 떨어진다 → 1-KM > CIF. 흔히 25%~40% 과대 추정.
→ 경쟁 위험이 흔한 의료 데이터에서 반드시 CIF 를 보고. 1-KM 은 “다른 원인 사망이 모두 0 인 가상 세계의 재발률” 이라는 비현실적 의미.
9 응용 분야
| 분야 | 활용 | 구체적 예시 |
|---|---|---|
| 임상 시험 | 일차 종점의 생존곡선 | 신약군 vs 위약군의 PFS KM 비교 |
| 종양학 | 무진행 생존 (PFS) | Kaplan-Meier 5 년 PFS = 65% (95% CI 58~72) |
| 신뢰성 공학 | MTBF 추정 | 부품의 평균 고장 시간 RMST |
| 보험·금융 | 잔존 채무 | 부도 시점까지의 NA 누적 위험 |
| 인구 통계 | Cohort 사망률 | 좌절단 보정 후 retirement community 생명표 |
| 골수이식 (BMT) | competing risks | relapse CIF vs TRM CIF — 1-KM 함정 회피 |
| HIV 역학 | 잠복기 분포 | 우절단 데이터의 reverse-time KM (Ch.5) |
10 코드 예시
10.1 Step 1: 순수 NumPy 로 KM·NA 직접 구현
원리 이해를 위해 product-limit·Nelson-Aalen 을 직접 코드.
import numpy as np
# 6-MP 데이터 (Freireich 1963)
times = np.array([6, 6, 6, 6, 7, 9, 10, 10, 11, 13, 16, 17, 19, 20, 22, 23, 25, 32, 32, 34, 35])
events = np.array([1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0])
def kaplan_meier(times, events):
order = np.argsort(times)
t_sorted = times[order]
e_sorted = events[order]
unique_times = np.unique(t_sorted[e_sorted == 1])
S = 1.0
H = 0.0
var_S_term = 0.0
var_H = 0.0
results = []
for ti in unique_times:
Y = np.sum(t_sorted >= ti)
d = np.sum((t_sorted == ti) & (e_sorted == 1))
S *= (1 - d / Y) # KM (식 4.2.1)
H += d / Y # NA (식 4.2.3)
var_S_term += d / (Y * (Y - d)) # Greenwood (식 4.2.2)
var_H += d / (Y ** 2) # Aalen (식 4.2.4)
var_S = (S ** 2) * var_S_term
results.append((ti, Y, d, S, np.sqrt(var_S), H, np.sqrt(var_H)))
return results
for ti, Y, d, S, se_S, H, se_H in kaplan_meier(times, events):
print(f"t={ti:3d} Y={Y:2d} d={d} S={S:.3f} (SE {se_S:.3f}) H={H:.3f} (SE {se_H:.3f})")출력 결과는 Klein Table 4.1B + Table 4.2 와 일치.
10.2 Step 2: lifelines 로 실무 코드
import pandas as pd
from lifelines import KaplanMeierFitter, NelsonAalenFitter
import matplotlib.pyplot as plt
df = pd.DataFrame({"t": times, "event": events})
kmf = KaplanMeierFitter().fit(df["t"], df["event"], label="6-MP")
naf = NelsonAalenFitter().fit(df["t"], df["event"], label="6-MP")
# 점별 신뢰구간 — log-log 변환
print(kmf.confidence_interval_.tail())
print(f"중앙값: {kmf.median_survival_time_}") # NaN 이면 50% 도달 안 함
print(f"RMST(35): {kmf.survival_function_.loc[:35].sum()}") # 거친 RMST
fig, axes = plt.subplots(1, 2, figsize=(12, 4))
kmf.plot_survival_function(ax=axes[0])
axes[0].set_title("Kaplan-Meier")
naf.plot_cumulative_hazard(ax=axes[1])
axes[1].set_title("Nelson-Aalen")
plt.tight_layout()10.3 Step 3: R survival 로 confidence band + competing risks
library(survival)
library(km.ci)
library(cmprsk)
# 6-MP KM + log-log pointwise CI
fit <- survfit(Surv(time, status) ~ 1, data = sixmp,
conf.type = "log-log")
summary(fit)
# Hall-Wellner band
ci_hw <- km.ci(fit, conf.level = 0.95, method = "hall-wellner")
plot(ci_hw)
# Restricted Mean Survival Time
print(fit, rmean = 35) # tau = 35
# Competing risks — CIF
ci_fit <- cuminc(ftime = bmt$time, fstatus = bmt$event,
group = bmt$group, cencode = 0)
plot(ci_fit, curvlab = c("ALL relapse", "AML relapse",
"ALL TRM", "AML TRM"))| 기능 | R | Python |
|---|---|---|
| KM | survival::survfit |
lifelines.KaplanMeierFitter |
| NA | survival::survfit(..., type="fh") |
lifelines.NelsonAalenFitter |
| log-log CI | conf.type="log-log" |
KaplanMeierFitter(...).confidence_interval_ |
| HW band | km.ci::km.ci(..., method="hall-wellner") |
직접 구현 (lifelines 미지원) |
| EP band | km.ci::km.ci(..., method="epband") |
직접 구현 |
| RMST | survival::print(..., rmean=tau) 또는 survRM2::rmst2 |
lifelines.utils.restricted_mean_survival_time |
| Median CI | survival::survfit 의 median 행 |
lifelines.utils.median_survival_times |
| 좌절단 | Surv(start, stop, event) |
KaplanMeierFitter.fit_left_censoring (다른 truncation 형태는 직접) |
| CIF | cmprsk::cuminc 또는 survival::survfit(... ~ 1, etype=...) |
lifelines.aalen_johansen.AalenJohansenFitter |
소표본 confidence band 가 필요하면 R 의 km.ci 가 표준. Python 에서는 직접 구현 필요 (Klein Appendix C 의 critical value 표 활용).
11 핵심 takeaway
- \(d_i/Y_i\) 가 모든 비모수 추정의 building block — KM 은 곱, NA 는 합, RMST 는 KM 적분, median 은 KM 역변환, 좌절단은 \(Y_i\) 재정의, competing risks 는 cause-specific 분리. 도구가 7 개로 보이지만 실은 한 가지 양의 변형.
- 소표본에서는 변환된 CI/CB 가 표준 — linear 는 큰 표본만, log-transformed/arcsine 이 finite sample 에서 nominal coverage 보장 (Borgan-Liestøl 1990).
- Pointwise CI 를 그대로 잇지 말 것 — joint coverage 가 보장되지 않는다. EP 또는 Hall-Wellner band 사용.
- 좌절단은 \(Y_i\) 정의만 바꾸면 끝 — 식 자체는 동일. 단 추정 대상이 conditional survival \(S(t \mid X > L_{\min})\) 임을 잊지 말 것 (Channing 함정).
- Competing risks 에서는 CIF, 1-KM 아님 — 1-KM 은 “다른 원인 없는 가상 세계”, CIF 는 “현실 세계”. BMT 류 의료 데이터에서 1-KM 사용 시 25%~40% 과대추정 발생 가능.
12 관련 주제
선행 지식
- Klein Ch.2 — Basic Quantities and Models (4 함수의 동등성)
- Klein Ch.3 — Censoring and Truncation (likelihood + counting process)
- § 1.16 Channing House (left truncation 정전)
후속 주제
- Ch.5 — Other Sampling Schemes (interval cens · double cens · right trunc · life table)
- Ch.6 — Topics in Univariate Estimation (kernel hazard · excess mortality · Bayesian NPMLE)
- Ch.7 — Hypothesis Testing (log-rank, Wilcoxon, Tarone-Ware, stratified)
- Ch.8 — Cox Proportional Hazards Model
관련 개념