Klein § 4.1~4.2 — Kaplan-Meier · Nelson-Aalen Estimators

비모수 생존 추정의 출발점 d_i/Y_i · KM 식 4.2.1 product-limit · NA 식 4.2.3 cumulative hazard · Greenwood 식 4.2.2 분산 (delta method 도출) · Aalen 식 4.2.4 분산 · 5 가지 KM 유도 (reduced-sample · redistribute-to-the-right · self-consistency · counting process · NPMLE) · KM ↔︎ NA Taylor 1차 동치 · Klein Example 4.1 6-MP 21 명 + Example 4.2 BMT 137 명 손풀이 · 8 Practical Notes (Efron tail · Gill tail · Brown-Hollander-Kowar · Aalen-Johansen variance · 소표본 비교) · 9 Theoretical Notes (NPMLE · Gaussian convergence)

Klein & Moeschberger Ch.4 의 § 4.1 (Introduction) + § 4.2 (KM·NA Estimators) 를 정전 깊이로 풀어낸다. 본 편은 Ch.4 overview 의 핵심 내용 — Kaplan-Meier 와 Nelson-Aalen 추정량의 정의·유도·분산·예제·실무 주의점 — 을 통째로 확장한다. § 4.1 — 비모수 추정의 동기: 우측 censoring 데이터에서 empirical CDF 가 작동하지 않는 이유, \(D\) 시점·\(d_i\) 사건 수·\(Y_i\) 위험집합 표기, censoring 의 독립 가정, Type I·Type II·progressive·random 모두 적용 가능한 단일 framework. § 4.2 — Kaplan-Meier \(\widehat{S}(t) = \prod_{t_i \leq t} (1 - d_i/Y_i)\) (식 4.2.1): step function·점프 크기는 \(d_i/Y_i\) 에만 의존하지 않고 censoring 패턴에도 의존·왜 곱인가의 사슬 분해 직관. Greenwood 분산 (식 4.2.2): \(\widehat{S}^2 \sum d_i/[Y_i(Y_i-d_i)]\) 의 delta-method + Binomial \(d_i \sim B(Y_i, h_i)\) 도출. Nelson-Aalen \(\widetilde{H}(t) = \sum d_i/Y_i\) (식 4.2.3) + Aalen 분산 (식 4.2.4) \(\sum d_i/Y_i^2\). KM ↔︎ NA: 두 추정량의 점근적 동치성 (\(\widetilde{H}\)\(-\ln \widehat{S}\) 의 Taylor 1차) + 소표본 차이 (\(\widetilde{S} = \exp(-\widetilde{H}) \geq \widehat{S}\)). KM 의 5 가지 유도: (1) reduced-sample 이산 분포 + 조건부 사슬, (2) redistribute-to-the-right 알고리즘 (Efron 1967) — 10 개 데이터 손풀이로 단계별 시연, (3) self-consistency 식 4.2.7 의 fixed point — EM 알고리즘의 원형, (4) counting process \(\widehat{S}(t) = \prod_{u \leq t}(1 - dN(u)/Y(u))\) product integral (Andersen et al. 1993), (5) NPMLE — 모든 점프를 사건 시점에만 둔 분포족에서 likelihood 최대. Klein Example 4.1: Freireich 1963 의 6-MP 21 명 데이터 표 4.1A (KM 계산) + 표 4.1B (KM + SE 단계별) + 표 4.2 (NA 계산) — 모든 셀을 계산. Klein Example 4.2: 137 명 BMT 의 ALL/AML low/AML high 3 그룹 disease-free survival — 표 4.3 의 ALL 군 24 행 KM·NA 계산 + Figure 4.2/4.3 그래프 해석 + 3 년 DFS 비교 (0.3531·0.5470·0.2444). 8 Practical Notes: 독립 censoring 가정 위반 함정 · tail 처리 3 안 (Efron 0 · Gill constant · Brown-Hollander-Kowar exponential, Klein 1991 Gill 권장) · Aalen-Johansen 분산 (식 4.2.5)·Klein 1991 NA 분산 (식 4.2.6)·NA 로부터 survival 분산 도출·empirical 환원·SAS·SPSS·S-Plus 구현. 9 Theoretical Notes: reduced-sample 사슬 분해 증명 · redistribute-to-the-right 직관 · self-consistency Efron 1967 · counting process Aalen 1975 · NPMLE · 일관성 + 점근적 동치 · Taylor 1차 도출 · 소표본 (Guerts·Wellner·Klein) · Gaussian process weak convergence.

Statistics
Survival Analysis
Klein-Moeschberger
Kaplan-Meier
Nelson-Aalen
Greenwood-Variance
NPMLE
저자

Kwangmin Kim

공개

2026년 04월 28일

1 들어가며 — overview 의 § 4.1~4.2 를 정전 깊이로

Klein 시리즈 Ch.4 의 첫 번째 deep-dive. Overview 편에서 KM·NA 의 골격을 다뤘다면, 본 편은 그 골격의 모든 뼈와 인대 를 풀어낸다.

주제
Ch.4 Overview 7 개 절 조망 (KM·NA·CI·CB·평균·중앙·LT·CIF)
§ 4.1~4.2 (본 편) KM·NA estimator 의 정의·5 가지 유도·분산·예제·실무 주의점
§ 4.3 (예정) Pointwise CI — linear · log · arcsine 변환
§ 4.4 (예정) Confidence Bands — EP · Hall-Wellner
§ 4.5 (예정) Mean · Median (Brookmeyer-Crowley)
§ 4.6 (예정) Left-Truncation
§ 4.7 (예정) Competing Risks (1-KM · CIF · CP)
§ 4.1~4.2 의 한 줄 요약

“우측 censoring 데이터의 비모수 생존 추정은 두 단계로 이뤄진다 — (1) 사건 시점 직전 위험집합 \(Y_i\) 중 사건 수 \(d_i\) 의 비율 \(d_i/Y_i\) 를 사건 시점에서의 hazard 로 추정하고, (2) 이 비율을 곱하면 생존함수 KM, 합하면 누적위험 NA 가 된다. 두 추정량은 5 가지 다른 유도를 통해 동일하게 도출되며 — 이 다중 유도가 KM 의 robustness 의 근거 — 점근적으로 동치이지만 소표본에서 NA 가 약간 안정적이다.”

이 단순한 비율 \(d_i/Y_i\) 가 Ch.5~13 의 모든 비모수·반모수·모수 추정의 building block 이다.

2 § 4.1 — Introduction

2.1 왜 비모수 추정이 필요한가

직관 — empirical CDF 가 censoring 에서 작동 안 하는 이유

censoring 이 없는 데이터에서는 empirical survival 함수

\[ \widehat{S}_{\text{emp}}(t) = \frac{\#\{i : X_i > t\}}{n} \]

가 자명한 비모수 추정량이다 — 분자는 \(t\) 까지 살아남은 사람 수, 분모는 전체.

문제: censoring 시 분자가 모호. 환자 \(i\) 의 censoring time \(T_i = 8\) 인데 \(t = 10\) 의 생존 여부를 묻는다면? 8 시점까지는 살았지만, 10 시점에서는 죽었는지 살았는지 모른다. “죽었다” 로 처리하면 생존을 과소 추정, “살았다” 로 처리하면 과대 추정.

→ censoring 정보를 likelihood 에 정확히 반영하는 추정량이 필요. KM 이 그 답.

만약 모수 모형 (Exponential, Weibull 등) 을 가정하면 Ch.3 의 likelihood (식 3.5.1) 로 MLE 가 가능하지만 — 분포 가정이 틀리면 결론이 무너진다. 비모수 추정은 분포 가정 없이 데이터의 자연스러운 step function 형태로 \(S\) 를 추정한다.

2.2 표기

Ch.4 전체에서 사용되는 표기를 정리한다.

기호 정의 비고
\(X_i\) 개체 \(i\) 의 (잠재적) 사건 시점 관측 안 될 수 있음
\(C_{r,i}\) 개체 \(i\) 의 (잠재적) censoring 시점 관측 안 될 수 있음
\(T_i = \min(X_i, C_{r,i})\) 관측된 시간 study time
\(\delta_i = I(X_i \leq C_{r,i})\) 사건 indicator \(\delta_i = 1\) 사건, \(\delta_i = 0\) censored
\(D\) 서로 다른 사건 시점의 수 \(D \leq n\)
\(t_1 < t_2 < \cdots < t_D\) 서로 다른 사건 시점 (정렬) 오름차순
\(d_i\) \(t_i\) 에서의 사건 수 tie 가능 (\(d_i \geq 1\))
\(Y_i\) \(t_i\) 직전 위험집합 크기 “just prior to \(t_i\)
정의: 위험집합 \(Y_i\)

\(Y_i\) 는 시점 \(t_i\) 직전에 여전히 추적 중이고, 아직 사건을 경험하지 않은 개체의 수:

\[ Y_i = \#\{j : T_j \geq t_i\} \]

직관: “\(t_i\) 라는 사건이 일어날 수 있는 후보자 수”. \(t_i\) 시점의 hazard 를 추정할 때 분모가 된다.

직관 — 왜 “just prior to \(t_i\)” 인가

\(Y_i\)\(t_i\) 직전 의 사람 수, 즉 \(T_j \geq t_i\) 인 사람 수 (강한 부등호 \(>\) 가 아니라 \(\geq\)).

이유: \(t_i\) 에 사망한 사람도 “\(t_i\) 직전 살아있던 사람” 에 포함되어야 한다. \(d_i\)\(Y_i\) 의 부분집합 (\(d_i \leq Y_i\)).

\(d_i / Y_i\) 의 의미는 따라서:

\(t_i\) 직전까지 살아있던 사람 중에서, \(t_i\) 에 사건을 겪은 비율”

= \(P(T = t_i \mid T \geq t_i) \approx h(t_i) \cdot dt\)

2.3 핵심 가정 — 독립 (비정보적) censoring

가정 — 사건 시점과 censoring 시점의 독립성

본 chapter 의 모든 추정량은 다음 가정에 의존한다:

\[ X_i \perp C_{r,i} \]

또는 약화된 형태: \(C_{r,i}\) 의 분포가 \(X_i\) 의 분포 모수와 무관 (non-informative censoring, Ch.3.2).

가정 위반 시 발생하는 일:

  • 예후 나쁜 환자만 선택적 dropout (예: 부작용으로 약 끊은 환자) → KM 이 사망률을 과소 추정 (살아남는 비율이 인위적으로 높음).
  • 좋은 환자 (회복) 만 추적 종료 → KM 이 사망률을 과대 추정.

Klein & Moeschberger (1984) 는 이런 informative censoring 시 추정량이 어떤 다른 함수를 추정하게 되는지를 보여준다.

2.4 어떤 censoring 형태에 적용 가능한가

본 § 4.2 의 추정량은 Ch.3.2 의 다음 형태에 모두 적용된다:

Censoring 형태 KM·NA 적용
Type I (사전 종료 시점) O
Type II (첫 r 사건까지) O
Progressive (다단계 sacrifice) O
Generalized Type I (개체별 입학 시점) O
Random (개체별 censoring time) O
Left censoring X (Ch.5)
Interval censoring X (Ch.5 Turnbull)
Left truncation O (식 4.6.1 의 \(Y_i\) 재정의)
Right truncation X (Ch.5 reverse-time KM)

핵심 — 우측 censoring 의 모든 형태가 동일한 KM·NA 식으로 처리됨. censoring 형태별로 다른 추정량이 필요하지 않다.

3 § 4.2 — Kaplan-Meier (Product-Limit) Estimator

3.1 정의

정의: Kaplan-Meier (Product-Limit) 추정량 (식 4.2.1)

\[ \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} \]

Kaplan & Meier (1958) 가 도입했고, “product-limit estimator” 라는 이름은 곱 형태 + 이산 분포의 극한이라는 도출 방식에서 유래.

3.2 왜 곱인가 — 사슬 분해 직관

직관 — KM 식의 곱 형태가 어디서 나오는가

\(t_k\) 까지의 생존을 조건부 확률의 사슬로 분해:

\[ \begin{aligned} S(t_k) &= P(X > t_k) \\ &= \underbrace{P(X > t_k \mid X > t_{k-1})}_{\text{step } k} \cdot \underbrace{P(X > t_{k-1} \mid X > t_{k-2})}_{\text{step } k-1} \cdots \underbrace{P(X > t_1)}_{\text{step } 1} \end{aligned} \]

(이 분해는 이산 분포에서만 정확. 연속 분포에서는 \(S(t_k) = \exp(-H(t_k))\) 의 적분 형태가 자연. 그러나 KM 은 데이터를 이산 분포로 본다 — 점프가 사건 시점에만 있음).

각 조건부 확률을 추정:

\[ \widehat{P}(X > t_i \mid X > t_{i-1}) = \frac{Y_i - d_i}{Y_i} = 1 - \frac{d_i}{Y_i} \]

  • 분모 \(Y_i\) : \(t_{i-1}\) 까지 살아있던 후보 수 (이 중 일부는 \(t_i\) 직전에 censoring 으로 사라짐).
  • 분자 \(Y_i - d_i\) : \(t_i\) 에 사건 안 겪고 넘어간 사람 수.

이를 \(i = 1, \ldots, k\) 에 대해 곱하면 KM. 따라서 KM 의 곱은 “조건부 생존확률의 사슬” 의 자연스러운 표현이다.

직관 — 점프 크기는 \(d_i/Y_i\) 에만 의존하지 않는다

KM 은 step function 으로, 사건 시점 \(t_i\) 에서만 점프한다. 점프 크기:

\[ \widehat{S}(t_i^-) - \widehat{S}(t_i) = \widehat{S}(t_i^-) \cdot \frac{d_i}{Y_i} \]

즉 점프의 절대 크기는 이전까지의 KM 값 \(\widehat{S}(t_i^-)\)현재 비율 \(d_i/Y_i\) 모두에 의존한다.

\(Y_i\) 자체는 \(t_i\) 직전까지의 censoring 패턴에 의해 결정된다. 따라서 동일한 \(d_i\) 라도 censoring 이 많이 발생한 시기 (Y_i 가 작음) 의 사건은 KM 을 더 크게 낮춘다.

→ 한 번의 사건이 곡선에 미치는 영향은 “그 시점에서 위험집합이 얼마나 작았는가” 에 따라 결정. 후반부의 적은 표본에서 발생한 사건이 KM 을 급격히 떨어뜨리는 이유.

3.3 Greenwood 분산 공식

정의: Greenwood 의 분산 공식 (식 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)} \]

표준오차: \(\sqrt{\widehat{V}[\widehat{S}(t)]}\).

3.4 Greenwood 도출 — 단계별 (delta method)

직관 — 왜 이 형태인가, 어떻게 도출되는가

Step 1 — log 변환:

\[ \log \widehat{S}(t) = \sum_{t_i \leq t} \log\left(1 - \frac{d_i}{Y_i}\right) \]

각 항이 독립이라고 가정 (실제로는 근사적으로 — counting process 이론에서 정확히 보임).

Step 2 — 각 항의 분산:

\(d_i \sim \text{Binomial}(Y_i, h_i)\) 라고 보면 (위험집합 \(Y_i\) 명 중 \(h_i\) 의 확률로 사건 발생):

\[ \text{Var}(d_i) = Y_i h_i (1 - h_i) \approx Y_i \cdot \frac{d_i}{Y_i} \cdot \frac{Y_i - d_i}{Y_i} = \frac{d_i (Y_i - d_i)}{Y_i} \]

Step 3 — log-항의 분산 (delta method):

\(f(d) = \log(1 - d/Y_i)\), \(f'(d) = -1/(Y_i - d)\). delta method:

\[ \text{Var}\left[\log\left(1 - \frac{d_i}{Y_i}\right)\right] \approx \left(\frac{1}{Y_i - d_i}\right)^2 \cdot \frac{d_i (Y_i - d_i)}{Y_i} = \frac{d_i}{Y_i (Y_i - d_i)} \]

Step 4 — 합과 변환:

\[ \text{Var}[\log \widehat{S}(t)] \approx \sum_{t_i \leq t} \frac{d_i}{Y_i (Y_i - d_i)} \]

Step 5 — \(\widehat{S}\) 분산 (delta method 다시): \(g(\log S) = e^{\log S} = S\), \(g' = S\).

\[ \text{Var}[\widehat{S}(t)] \approx \widehat{S}(t)^2 \cdot \text{Var}[\log \widehat{S}(t)] = \widehat{S}(t)^2 \sum_{t_i \leq t} \frac{d_i}{Y_i (Y_i - d_i)} \]

이것이 Greenwood. → delta method 두 번 + Binomial 분산 = Greenwood. 각 단계가 자연스럽다.

3.5 Nelson-Aalen Estimator

정의: Nelson-Aalen 추정량 (식 4.2.3)

\[ \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} \]

Nelson (1972) 가 신뢰성 공학에서 처음 제안하고, Aalen (1978b) 가 counting process 이론으로 재발견. NA 로부터 survival 추정도 가능: \(\widetilde{S}(t) = \exp[-\widetilde{H}(t)]\).

분산 (식 4.2.4): \[ \sigma_H^2(t) = \sum_{t_i \leq t} \frac{d_i}{Y_i^2} \]

3.6 NA 분산 도출

직관 — Aalen 분산이 단순한 이유

NA 는 합. Counting process 이론에서 \(d_i \sim \text{Poisson}\) 으로 근사하면 \(\text{Var}(d_i) \approx d_i\) (Poisson 의 평균 = 분산). 따라서

\[ \text{Var}\left[\frac{d_i}{Y_i}\right] = \frac{\text{Var}(d_i)}{Y_i^2} \approx \frac{d_i}{Y_i^2} \]

각 항이 독립이라고 가정하면 (counting process martingale 에서 정확히 보임):

\[ \text{Var}[\widetilde{H}(t)] \approx \sum_{t_i \leq t} \frac{d_i}{Y_i^2} \]

NA 분산은 Greenwood 보다 훨씬 단순. 이유: NA 는 합 (delta method 한 번 불필요), Poisson 근사가 자연. 이것이 소표본에서 NA 가 KM 보다 안정적인 이유 중 하나.

3.7 KM 의 5 가지 유도 — Why 다섯 길이 모두 KM 으로 모이는가

KM 은 다섯 가지 다른 출발점에서 동일한 추정량으로 도출된다. 이 다중 유도가 KM 의 robustness 의 수학적 근거.

3.7.1 유도 1 — Reduced-Sample (조건부 사슬 분해)

이산 분포 \(S(t)\) 의 점프가 사건 시점에만 있다고 가정 (정보가 없는 censoring 시점에서 점프할 이유 없음).

\[ S(t_i) = \prod_{j \leq i} \frac{S(t_j)}{S(t_{j-1})} = \prod_{j \leq i} P(X > t_j \mid X \geq t_j) \]

(이산 분포에서 \(S(t_{j-1}) = P(X > t_{j-1}) = P(X \geq t_j)\)).

각 조건부 확률을 \(\widehat{P}(X > t_j \mid X \geq t_j) = (Y_j - d_j)/Y_j\) 로 추정. 곱하면 KM. → § 들어가며 의 사슬 분해와 같은 도출이지만 더 명시적.

3.7.2 유도 2 — Redistribute-to-the-Right (Efron 1967)

직관 — censoring 의 mass 를 우측으로 분배

핵심 아이디어: censoring 이 없으면 각 관측에 mass \(1/n\) 을 주어 empirical CDF 를 구한다. censoring 이 있으면 그 mass 를 “그 이후 시점들에 균등 분배” 한다.

알고리즘:

  1. 시작: 각 관측에 mass \(1/n\).
  2. 가장 작은 censoring 시점부터 시작.
  3. 그 mass 를 더 큰 모든 관측 (사건 + censoring) 에 균등 재분배.
  4. 다음 censoring 시점에서 반복.

예제 — 10 명 데이터: 3, 4, 5+, 6, 6+, 8+, 11, 14, 15, 16+ (+ = censoring).

데이터 Step 0 Step 1 (5+) Step 2 (8+) Step 3 (16+) \(\widehat{S}\)
3 0.100 0.100 0.100 0.100 0.900
4 0.100 0.100 0.100 0.100 0.800
5+ 0.100 0.000 0.800
6 0.100 0.114 0.114 0.114 0.686
6+ 0.100 0.114 0.000 0.686
8+ 0.100 0.114 0.000 0.686
11 0.100 0.114 0.137 0.171 0.515
14 0.100 0.114 0.137 0.171 0.343
15 0.100 0.114 0.137 0.171 0.171
16+ 0.100 0.114 0.137 0.171 0.000*

(*Efron 의 tail 처리 — 마지막 mass 를 그 점에 두면 곡선이 0 으로 떨어짐).

Step 1 (5+ 처리): 5+ 의 mass 0.100 을 더 큰 7 개 관측 (6, 6+, 8+, 11, 14, 15, 16+) 에 균등 분배: 각각 \(0.100/7 = 0.0143\) 추가. → 새로운 mass \(0.100 + 0.0143 = 0.1143 \approx 0.114\).

Step 2 (6+ 와 8+ 처리): 6+ 의 mass 와 8+ 의 mass 를 더 큰 5 개 관측 (11, 14, 15, 16+ 그리고 8+ 의 경우 자기 이후) 에 분배. 결과 0.137.

Step 3 (16+ 처리): Efron 안에서는 mass 를 그 자리에 두므로 \(\widehat{S}(16+) = 0\). Gill 안에서는 \(\widehat{S}(t > 16) = \widehat{S}(15) = 0.171\) 유지.

→ Efron (1967) 은 이 알고리즘의 결과가 KM 식 4.2.1 과 동일함을 증명. 직관적으로 매우 깔끔한 유도.

3.7.3 유도 3 — Self-Consistency (Efron 1967)

정의: Self-consistent estimator (식 4.2.7)

추정량 \(\widehat{S}\) 가 다음 fixed-point 방정식을 만족하면 self-consistent:

\[ \widehat{S}(t) = \frac{1}{n}\left[\sum_{T_i > t} \phi(T_i) + \sum_{\delta_i = 0, T_i \leq t} \frac{\widehat{S}(t)}{\widehat{S}(T_i)}\right] \]

여기서 \(\phi(y) = I(y > t)\).

직관 — self-consistency 의 의미

Censoring 이 없다면 \(\widehat{S}(t) = \frac{1}{n} \sum_i I(X_i > t)\) — empirical survival 함수.

Censoring 이 있을 때:

  • \(T_i > t\) 인 관측 (사건 또는 censored): 100% 가 \(t\) 보다 큼이 확실 → 1 로 카운트.
  • \(T_i \leq t\) 이고 \(\delta_i = 1\) (사건): 0% 가 \(t\) 보다 큼 → 0 으로 카운트.
  • \(T_i \leq t\) 이고 \(\delta_i = 0\) (censored, 즉 \(T_i\) 시점에 살아있었지만 그 이후 추적 끊김): 이 사람의 진짜 사건 시점 \(X_i > t\) 일 확률을 추정해야 함. 그 확률이 바로 \(S(t)/S(T_i)\).
    • 이유: \(X_i > T_i\) 임은 알고 (censoring 시점 이후도 살아있었음을 의미하므로 \(X_i > T_i\)), \(X_i > t\) 일 조건부 확률 = \(P(X > t \mid X > T_i) = S(t)/S(T_i)\).
  • 모르는 \(S\)\(\widehat{S}\) 로 대체 → fixed-point 방정식.

→ “추정량이 자기 자신을 일관되게 사용” 한다는 의미에서 self-consistent.

EM 알고리즘과의 관계: 식 4.2.7 은 EM 의 원형. censored 관측의 missing event time 을 conditional expectation 으로 대체하는 E-step + 새 추정량으로 업데이트하는 M-step 의 반복. Efron (1967) 은 이 반복이 KM 으로 수렴함을 증명. → KM 은 EM 의 자명한 비모수 적용.

3.7.4 유도 4 — Counting Process (Aalen 1975, Andersen et al. 1993)

Ch.3.6 에서 다룬 counting process 이론. \(N(t)\) = 사건 카운트, \(Y(t)\) = at-risk indicator. KM 의 product integral 표현:

\[ \widehat{S}(t) = \prod_{u \leq t} \left(1 - \frac{dN(u)}{Y(u)}\right) \]

이산 점프에서는 \(dN(u) = d_i\), \(Y(u) = Y_i\), 곱은 식 4.2.1 과 일치. Andersen-Borgan-Gill-Keiding (1993) 은 martingale 이론으로 KM 의 점근 정규성·일관성·신뢰대를 통일적으로 도출.

직관 — Product Integral 의 의미

연속 분포에서 \(S(t) = \exp(-\int_0^t h(u) du)\). Hazard 의 무한소 기여 \(h(u) du\) 가 누적된 형태.

이산 점프에서는 \(h\) 가 atom 으로 변환: \(h(u) du \to dN(u)/Y(u)\). 무한소 기여의 곱 \(\prod_{u \leq t}(1 - h(u)du) \to \exp(-\int h du)\) (Riemann product → exponential).

→ KM 은 hazard 의 product integral. counting process language 에서는 이게 가장 자연스러운 표현.

3.7.5 유도 5 — Nonparametric MLE (NPMLE)

직관 — KM 이 비모수 MLE 인 이유

분포 가족: 점프가 사건 시점 \(t_1 < \cdots < t_D\) 에만 있는 모든 이산 분포.

각 시점에서의 hazard \(h_i = P(X = t_i \mid X \geq t_i)\) 를 자유 모수로. likelihood (Ch.3 식 3.5.1):

\[ L(h_1, \ldots, h_D) \propto \prod_{i=1}^D h_i^{d_i} (1 - h_i)^{Y_i - d_i} \]

이는 각 \(h_i\) 에 대한 독립 Binomial likelihood. 각 항을 최대화:

\[ \widehat{h}_i = \frac{d_i}{Y_i} \]

\(S(t) = \prod_{t_i \leq t}(1 - h_i)\) 의 MLE (invariance):

\[ \widehat{S}(t) = \prod_{t_i \leq t}\left(1 - \frac{d_i}{Y_i}\right) \]

→ KM. Nelson-Aalen 도 비슷하게 NPMLE (Klein Theoretical Note 5).

왜 5 가지 유도가 모두 같은 결과인가: 다섯 가지 모두 “censoring 의 정보를 likelihood 에 정확히 반영” 하는 다른 표현일 뿐. 본질적으로 KM 의 robustness 가 매우 깊다는 의미.

3.8 KM ↔︎ NA 의 관계 — Taylor 1차

직관 — NA 는 -log KM 의 Taylor 1차

\(\log(1 - x) = -x - x^2/2 - x^3/3 - \cdots\). \(x = d_i/Y_i\) 가 작으면 (즉 위험집합이 충분히 큼):

\[ -\log(1 - d_i/Y_i) \approx d_i/Y_i \]

따라서

\[ -\log \widehat{S}(t) = -\sum_{t_i \leq t} \log\left(1 - \frac{d_i}{Y_i}\right) \approx \sum_{t_i \leq t} \frac{d_i}{Y_i} = \widetilde{H}(t) \]

NA 는 \(-\log\) KM 의 Taylor 1차 근사 (Klein Theoretical Note 7).

따라서 \(\widetilde{S}(t) = \exp[-\widetilde{H}(t)] \approx \exp[\log \widehat{S}(t)] = \widehat{S}(t)\).

차이의 부호: \(-\log(1-x) > x\) for \(x \in (0, 1)\)\(\widetilde{H} > -\log \widehat{S}\)\(\widetilde{S} > \widehat{S}\). 즉 NA-기반 survival 이 KM 보다 약간 큼.

큰 위험집합 \(Y_i\) 에서는 차이가 무시할 수 있고, 작은 \(Y_i\) 에서는 차이가 두드러진다.

3.9 KM vs NA 비교표

측면 Kaplan-Meier \(\widehat{S}\) Nelson-Aalen \(\widetilde{S} = e^{-\widetilde{H}}\)
자연성 생존함수 직접 누적위험 → 변환
점프 처리 \(1 - d_i/Y_i\) (multiplicative) \(-d_i/Y_i\) (additive log)
분산 식 Greenwood (delta method 두 번) Aalen (Poisson 근사 한 번)
분산 형태 \(\widehat{S}^2 \sum d_i / [Y_i(Y_i - d_i)]\) \(\sum d_i / Y_i^2\)
소표본 음의 편향 \(\widehat{S}\) 보다 큼
점근적 동치 동치
모형 식별 약함 \(\widetilde{H}\) vs \(t\) 직선이면 Exp 분포
Hazard 추정 어려움 (점프 크기 비균일) 점프 크기 \(d_i/Y_i\)\(h\) 의 거친 추정
실무 관행
  • 생존곡선 보고: KM (의학·임상시험에서 표준).
  • 분포 식별 plot: NA — \(\widetilde{H}(t)\) vs \(t\) 가 직선이면 Exponential, \(\log \widetilde{H}\) vs \(\log t\) 가 직선이면 Weibull (Ch.12).
  • Hazard 모양 진단: NA 의 점프 크기 \(d_i/Y_i\) 를 시간으로 평활 (kernel smoothing — Ch.6).
  • 소표본 (n < 30 사건): NA 가 약간 더 안정적 (Klein 1991).

4 Klein Example 4.1 — 6-MP 21 명 손풀이

4.1 데이터 설명

Freireich (1963) 의 6-MP 군 21 명 (Klein § 1.2 의 Leukemia 임상시험 처치군). 단위 = 주.

관측 데이터 (\(+\) = censoring): 6, 6, 6, 6+, 7, 9+, 10, 10+, 11+, 13, 16, 17+, 19+, 20+, 22, 23, 25+, 32+, 32+, 34+, 35+.

  • 사건 (재발) 9 건, censoring 12 건.
  • 서로 다른 사건 시점 \(D = 7\): \(t_1=6, t_2=7, t_3=10, t_4=13, t_5=16, t_6=22, t_7=23\).
  • \(t_1 = 6\) 에서 tie 3 건.

4.2 KM 계산표 (Klein Table 4.1A·4.1B 재구성)

\(i\) \(t_i\) \(d_i\) \(Y_i\) \(1 - d_i/Y_i\) \(\widehat{S}(t_i)\) \(\dfrac{d_i}{Y_i(Y_i-d_i)}\) \(\sum\) \(\widehat{V}[\widehat{S}]\) \(\text{SE}\)
1 6 3 21 0.857 0.857 \(\dfrac{3}{21 \cdot 18} = 0.00794\) 0.00794 \(0.857^2 \cdot 0.00794 = 0.00583\) 0.076
2 7 1 17 0.941 0.807 \(\dfrac{1}{17 \cdot 16} = 0.00368\) 0.01162 \(0.807^2 \cdot 0.01162 = 0.00756\) 0.087
3 10 1 15 0.933 0.753 \(\dfrac{1}{15 \cdot 14} = 0.00476\) 0.01638 \(0.00929\) 0.096
4 13 1 12 0.917 0.690 \(\dfrac{1}{12 \cdot 11} = 0.00758\) 0.02396 \(0.01140\) 0.107
5 16 1 11 0.909 0.628 \(\dfrac{1}{11 \cdot 10} = 0.00909\) 0.03305 \(0.01303\) 0.114
6 22 1 7 0.857 0.538 \(\dfrac{1}{7 \cdot 6} = 0.02381\) 0.05687 \(0.01643\) 0.128
7 23 1 6 0.833 0.448 \(\dfrac{1}{6 \cdot 5} = 0.03333\) 0.09020 \(0.01807\) 0.135
표 읽는 법 — 손으로 한 행씩 따라가기

\(i = 1\) 행 (시점 \(t_1 = 6\) 주):

  • \(Y_1 = 21\) — 시작 시점에서 21 명 모두 위험집합.
  • \(d_1 = 3\) — 6 주에 3 명 재발.
  • \(1 - d_1/Y_1 = 1 - 3/21 = 18/21 = 0.857\).
  • \(\widehat{S}(6) = 1 \cdot 0.857 = 0.857\).
  • Greenwood term: \(3/(21 \cdot 18) = 0.00794\).
  • \(\widehat{V}[\widehat{S}(6)] = 0.857^2 \cdot 0.00794 = 0.00583\).
  • SE \(= \sqrt{0.00583} = 0.076\).

\(i = 2\) 행 (시점 \(t_2 = 7\) 주):

  • \(Y_2 = 17\) — 21 명 중 사라진 사람은: 6 주 사망 3 명 + 6+ censoring 1 명 = 4 명. 남은 17 명.
  • \(d_2 = 1\) — 7 주에 1 명 재발.
  • \(\widehat{S}(7) = \widehat{S}(6) \cdot (1 - 1/17) = 0.857 \cdot 0.941 = 0.807\).
  • Greenwood: 누적 0.01162.

\(i = 3\) 행 (시점 \(t_3 = 10\) 주):

  • \(Y_3 = 15\) — 7 주 후 censoring (9+) 1 명 → 17 - 1 - 1 = 15.
  • 그렇다. \(\widehat{S}(10) = 0.807 \cdot 14/15 = 0.753\).

\(i = 4\) 행 (시점 \(t_4 = 13\) 주):

  • \(Y_4 = 12\) — 10 주 후 censoring (10+, 11+) 2 명 → 15 - 1 - 2 = 12.

\(i = 5\) 행 (시점 \(t_5 = 16\) 주):

  • \(Y_5 = 11\) — 13 주 후 censoring 0 명 → 12 - 1 = 11.

\(i = 6\) 행 (시점 \(t_6 = 22\) 주):

  • \(Y_6 = 7\) — 16 주 후 censoring (17+, 19+, 20+) 3 명 → 11 - 1 - 3 = 7. \(Y\) 의 갑작스러운 감소 — censoring 이 많이 발생.

\(i = 7\) 행 (시점 \(t_7 = 23\) 주):

  • \(Y_7 = 6\) — 22 주 후 censoring 0 명 → 7 - 1 = 6.

\(t > 35\) 영역: 마지막 관측 35+ 가 censoring 이므로 KM 정의 범위 외 (Practical Note 2 의 tail 처리 필요).

4.3 NA 계산표 (Klein Table 4.2 재구성)

\(i\) \(t_i\) \(d_i\) \(Y_i\) \(d_i/Y_i\) \(\widetilde{H}(t_i)\) \(d_i/Y_i^2\) \(\sigma_H^2\) \(\sigma_H\)
1 6 3 21 0.1428 0.1428 \(3/441 = 0.0068\) 0.0068 0.0825
2 7 1 17 0.0588 0.2017 \(1/289 = 0.0035\) 0.0103 0.1015
3 10 1 15 0.0667 0.2683 \(1/225 = 0.0044\) 0.0147 0.1212
4 13 1 12 0.0833 0.3517 \(1/144 = 0.0069\) 0.0217 0.1473
5 16 1 11 0.0909 0.4426 \(1/121 = 0.0083\) 0.0299 0.1729
6 22 1 7 0.1429 0.5854 \(1/49 = 0.0204\) 0.0503 0.2243
7 23 1 6 0.1667 0.7521 \(1/36 = 0.0278\) 0.0781 0.2795
NA 곡선 해석 — 분포 식별

\(\widetilde{H}\) 의 값: * 0 → 0.143 → 0.202 → 0.268 → 0.352 → 0.443 → 0.585 → 0.752.

차이 (점프 크기): 0.143, 0.059, 0.067, 0.083, 0.091, 0.143, 0.167.

  • 시점 6 의 점프 0.143 은 tie 3 건 때문 (이 한 시점에서만 사건 3 건).
  • 그 외 점프는 0.06~0.17 범위, 점진적으로 증가.
  • \(\widetilde{H}(t)\) vs \(t\) plot 의 기울기가 거의 일정 → constant hazard 의심 → Exponential 분포 후보.

기울기로부터 hazard 의 거친 추정: \(\widetilde{H}(23) - \widetilde{H}(6) = 0.752 - 0.143 = 0.609\). \(23 - 6 = 17\) 주. → \(\widehat{h} \approx 0.609/17 = 0.036\) /week.

(Ch.3 Ex 3.4 의 Exponential MLE \(\widehat{\lambda} = r/S_T = 9/359 = 0.025\) /week 와 같은 자릿수, 완벽히 일치하지는 않음 — KM 은 사건 시점 사이의 censoring 정보만 사용, MLE 는 모든 person-time 사용.)

4.4 KM ↔︎ NA 비교 (Klein Figure 4.1A·4.1B)

\(t\) KM \(\widehat{S}\) NA \(\widetilde{S} = e^{-\widetilde{H}}\) 차이
6 0.857 \(e^{-0.143} = 0.867\) 0.010
10 0.753 \(e^{-0.268} = 0.765\) 0.012
16 0.628 \(e^{-0.443} = 0.642\) 0.014
22 0.538 \(e^{-0.585} = 0.557\) 0.019
23 0.448 \(e^{-0.752} = 0.471\) 0.023

→ NA 추정 survival 이 KM 보다 일관되게 크다 (Taylor 1차의 부호와 일치). 차이는 시간이 갈수록 커지는데, 이는 위험집합이 작아져 \(d_i/Y_i\) 가 커지기 때문 (Taylor 근사의 오차가 커짐).

5 Klein Example 4.2 — BMT 137 명

5.1 데이터 설명

Copelan (1991) 의 137 명 골수이식 (BMT) 데이터 (Klein § 1.3). 3 개 disease group:

Group \(n\) 가장 긴 관측 (일) 사건 정의
ALL (Acute Lymphoblastic Leukemia) 38 2081 재발 또는 사망 (whichever first)
AML low risk 54 2569 동일
AML high risk 45 2640 동일

Disease-free survival = “재발도 사망도 안 함”. \(\delta_3 = \max(\delta_1, \delta_2)\) (\(\delta_1\) 재발, \(\delta_2\) 사망).

5.2 ALL 군 24 행 KM·NA 계산 (Klein Table 4.3 발췌)

\(t_i\) \(d_i\) \(Y_i\) \(\widehat{S}(t_i)\) \(\sqrt{\widehat{V}[\widehat{S}]}\) \(\widetilde{H}(t_i)\) \(\sigma_H\)
1 1 38 0.9737 0.0260 0.0263 0.0263
55 1 37 0.9474 0.0362 0.0533 0.0377
74 1 36 0.9211 0.0437 0.0811 0.0468
86 1 35 0.8947 0.0498 0.1097 0.0549
104 1 34 0.8684 0.0548 0.1391 0.0623
107 1 33 0.8421 0.0592 0.1694 0.0692
109 1 32 0.8158 0.0629 0.2007 0.0760
110 1 31 0.7895 0.0661 0.2329 0.0825
122 2 30 0.7368 0.0714 0.2996 0.0950
129 1 28 0.7105 0.0736 0.3353 0.1015
172 1 27 0.6842 0.0754 0.3723 0.1081
192 1 26 0.6579 0.0770 0.4108 0.1147
194 1 25 0.6316 0.0783 0.4508 0.1215
230 1 23 0.6041 0.0795 0.4943 0.1290
276 1 22 0.5767 0.0805 0.5397 0.1368
332 1 21 0.5492 0.0812 0.5873 0.1449
383 1 20 0.5217 0.0817 0.6373 0.1532
418 1 19 0.4943 0.0819 0.6900 0.1620
466 1 18 0.4668 0.0818 0.7455 0.1713
487 1 17 0.4394 0.0815 0.8044 0.1811
526 1 16 0.4119 0.0809 0.8669 0.1916
609 1 14 0.3825 0.0803 0.9383 0.2045
662 1 13 0.3531 0.0793 1.0152 0.2185
2081 0 1 0.3531 0.0793 1.0152 0.2185

5.3 3 년 (1095 일) DFS 비교

마지막 사건 시점 662 일을 지나 1095 일까지는 사건이 없으므로 \(\widehat{S}\) 가 0.3531 그대로 유지. 따라서

Group \(\widehat{S}(1095)\) SE 95% linear CI
ALL 0.3531 0.0793 (0.198, 0.508)
AML low risk 0.5470 0.0691 (0.412, 0.682)
AML high risk 0.2444 0.0641 (0.119, 0.370)
임상적 해석
  • AML low risk 가 가장 좋은 예후 — 3 년 DFS 약 55%.
  • AML high risk 가 가장 나쁨 — 3 년 DFS 약 24%.
  • ALL 은 중간 — 3 년 DFS 약 35%.

CI 가 겹치는지 확인: ALL 과 AML high 의 CI 가 약간 겹침 (0.198~0.508 vs 0.119~0.370). AML low 와 다른 두 군은 명확히 분리. → 공식적인 비교는 log-rank 검정 (Ch.7) 으로 확정 필요.

5.4 NA 누적위험의 직선성 (Klein Figure 4.3)

ALL 군의 \(\widetilde{H}\): * \(t = 100\): 0.110. * \(t = 700\): 1.015.

기울기 \(\approx 0.0014\) /day = 0.043 /month → “ALL 환자의 hazard 는 첫 2 년간 약 4.3% /month 정도 일정”.

AML low 의 \(\widetilde{H}\) 기울기 \(\approx 0.020\) /month, AML high 의 기울기 \(\approx 0.060\) /month. 모두 거의 직선 → constant hazard 가정 (Exponential) 이 첫 2 년간 합리적.

6 Practical Notes (8 개)

Practical Note 1 — 독립 censoring 가정 (재강조)

KM·NA 의 모든 결과는 censoring 의 비정보성에 의존. 실무 점검:

  • 임상시험 dropout: 부작용으로 약 끊은 환자가 나쁜 예후를 의미하면 비정보성 위반.
  • 의료기록 retrospective: 의료시설 변경으로 추적 끊김은 보통 비정보성 (랜덤).
  • 품질 관리: 시험 종료 시점이 부품 상태와 무관하면 비정보성.

위반 의심 시 sensitivity analysis: dropout 환자를 모두 사건 발생 / 모두 사건 안 발생 으로 가정하고 KM 양 끝을 비교 (Klein 2003 Ch.4).

Practical Note 2~3 — Tail 처리 3 안

마지막 관측이 censoring 일 때 \(\widehat{S}(t)\)\(t_{\max}\) 너머로 정의하는 방법:

방법 가정 \(\widehat{S}(t > t_{\max})\) 편향
Efron (1967) 마지막 censored = 즉시 사건 0 음 (under)
Gill (1980) 마지막 censored = \(\infty\) \(\widehat{S}(t_{\max})\) (constant) 양 (over)
Brown-Hollander-Kowar (BHK 1974) exponential tail \(\exp\{t \ln[\widehat{S}(t_{\max})]/t_{\max}\}\) 모수 가정 추가

Klein (1991) 의 small-sample 실험 결과: Gill 안이 표준. 이유: Efron 은 “마지막 사람이 즉시 죽음” 이라는 비현실적 가정, BHK 는 exponential 모수 가정 추가.

BMT ALL 군 BHK tail: \(t_{\max} = 2081\) 에서 \(\widehat{S} = 0.3531\)\(\widehat{S}(t > 2081) = \exp(-0.0005 t)\).

Moeschberger-Klein (1985) 는 BHK 를 Weibull 분포로 확장 (더 유연한 tail).

Practical Note 4 — Aalen-Johansen 분산 (식 4.2.5)

Greenwood 외에 또 다른 분산 추정량 (Aalen & Johansen 1978):

\[ \widetilde{V}[\widehat{S}(t)] = \widehat{S}(t)^2 \sum_{t_i \leq t} \frac{d_i}{Y_i^2} \]

(Greenwood 의 \(Y_i(Y_i - d_i)\)\(Y_i^2\) 로 대체).

Klein (1991) 비교:

  • 두 추정량 모두 소표본에서 진짜 분산을 과소 추정.
  • Greenwood 가 평균적으로 진짜 값에 더 가까움.
  • \(Y_1\) 이 매우 작으면 Aalen-Johansen 이 더 작은 분산.

관행: Greenwood 를 default 로. R survival::survfiterror="greenwood".

Practical Note 5 — Klein 1991 의 NA 분산 대안 (식 4.2.6)

NA 의 Aalen 분산 (식 4.2.4) 외 대안:

\[ \widehat{V}[\widetilde{H}(t)] = \sum_{t_i \leq t} \frac{(Y_i - d_i) d_i}{Y_i^3} \]

이 추정량은 진짜 분산을 과소 추정, 식 4.2.4 는 과대 추정.

Klein (1991): 식 4.2.4 가 편향이 더 작음 → 4.2.4 권장.

직관: 식 4.2.6 은 finite-population correction 적용 (Binomial 의 hypergeometric 보정). 그러나 점근적으로 4.2.4 가 더 robust.

Practical Note 6 — NA 로부터 survival 분산

\(\widetilde{S} = \exp(-\widetilde{H})\) 의 분산은 식 4.2.2 또는 4.2.5 에서 \(\widehat{S}\)\(\widetilde{S}\) 로 대체. Delta method:

\[ \text{Var}[\widetilde{S}] = \widetilde{S}^2 \cdot \text{Var}[\widetilde{H}] \]

(왜냐하면 \(\frac{d \exp(-H)}{d H} = -\exp(-H) = -\widetilde{S}\)).

Practical Note 7 — censoring 없으면 KM = empirical

모든 \(\delta_i = 1\) 이면 \(Y_i = n - i + 1\), \(d_i = 1\) (각 시점에 1 건). KM:

\[ \widehat{S}(t) = \prod_{t_i \leq t}\left(1 - \frac{1}{n-i+1}\right) = \frac{n - i}{n} \]

이는 empirical survival \(1 - i/n\). → censoring 없는 한계에서 KM 이 empirical CDF 로 환원. 이 일관성이 KM 의 자명한 성질.

Practical Note 8 — 통계 패키지 구현
패키지 KM NA
R survival survfit(Surv(time, status) ~ 1) survfit(..., type="fh") (Fleming-Harrington)
R KMsurv KM 계산 헬퍼
Python lifelines KaplanMeierFitter NelsonAalenFitter
Python scikit-survival kaplan_meier_estimator nelson_aalen_estimator
SAS PROC LIFETEST PROC LIFETEST METHOD=NA
SPSS Survival > Kaplan-Meier (수동)
Stata sts list, survival sts list, na

R survival 의 default 분산은 Greenwood. survfit(..., error="tsiatis") 는 Tsiatis 분산 (Aalen-Johansen 변형).

7 Theoretical Notes (9 개)

Theoretical Note 1 — Reduced-Sample 도출 (재요약)

이산 분포 + 사건 시점에만 점프 가정. 조건부 확률 사슬 분해:

\[ S(t_i) = \prod_{j \leq i} P(X > t_j \mid X \geq t_j) \]

\(\widehat{P}(X > t_j \mid X \geq t_j) = (Y_j - d_j)/Y_j\). 곱하면 KM. 출발점이 가장 자명한 유도.

Theoretical Note 2 — Redistribute-to-the-Right (Efron 1967)

각 censoring mass 를 우측 관측에 균등 분배. 알고리즘이 KM 으로 수렴함을 Efron (1967) 가 증명.

의의: KM 을 “censoring 정보를 어떻게 분배할지” 라는 직관적 알고리즘으로 도출 — 비통계학자도 이해 가능.

Theoretical Note 3 — Self-Consistency (Efron 1967)

식 4.2.7 의 fixed-point 방정식. 임의 초기값에서 시작하여 반복 → KM 으로 수렴.

EM 알고리즘과의 관계: censored 관측의 missing event time 의 conditional expectation 을 사용. → 비모수 EM 의 원형. Dempster-Laird-Rubin (1977) 의 EM 일반화 이전에 이미 KM 의 도출에 등장.

현대적 의의: interval censoring 의 Turnbull (Ch.5), 좌절단의 Andersen et al., 일반 missing data 모형의 EM — 모두 self-consistency 의 변형.

Theoretical Note 4 — Counting Process 도출

Andersen-Borgan-Gill-Keiding (1993) 의 통일 framework (Ch.3.6 참조). KM = \(\prod(1 - dN/Y)\) product integral, NA = \(\int J/Y \, dN\) stochastic integral.

의의: 점근 정규성·신뢰대·log-rank 등 모든 추론을 martingale CLT 로 일관되게 도출. Cox model (Ch.8), Aalen additive model (Ch.10), Schoenfeld residuals (Ch.11) 의 수학적 토대.

Theoretical Note 5 — KM·NA 가 NPMLE

regularity 조건 하에서 KM·NA 는 nonparametric MLE.

증명 스케치 (위의 유도 5):

  • 점프가 사건 시점에만 있는 분포족.
  • likelihood 가 각 \(h_i\) 의 Binomial 로 분해.
  • \(\widehat{h}_i = d_i/Y_i\)\(\widehat{S}, \widetilde{H}\).

왜 중요한가: NPMLE 라는 사실이 KM 의 robustness 의 깊은 이유. 분포 가족을 어떻게 잡든 (사건 시점에 점프 가능한 모든 이산 분포), likelihood 의 최대값은 KM.

Theoretical Note 6 — 일관성과 점근적 동치

regularity 조건 하에서:

  • \(\widehat{S}(t) \to S(t)\) (in probability) as \(n \to \infty\).
  • \(\widetilde{S}(t) \to S(t)\) (in probability).
  • \(\widehat{S}(t) - \widetilde{S}(t) = O_p(1/n)\) (점근적 동치).

→ 큰 표본에서 KM 과 NA 중 어느 것을 써도 같은 결론.

Theoretical Note 7 — NA = -log KM 의 Taylor 1차

\(\log(1-x) = -x - x^2/2 - \cdots\):

\[ -\log \widehat{S}(t) = \sum -\log(1 - d_i/Y_i) = \sum (d_i/Y_i + (d_i/Y_i)^2/2 + \cdots) \]

1차 항 = \(\widetilde{H}\), 2차 이상은 \(O(1/Y_i)\). \(Y_i \to \infty\) 면 차이 사라짐.

소표본 함의: 작은 \(Y_i\) 에서 \(-\log \widehat{S} \neq \widetilde{H}\), 즉 KM 과 NA 가 실질적으로 다름. 후반부 (위험집합 작음) 에서 둘의 차이 두드러짐.

Theoretical Note 8 — 소표본 성질
  • Guerts (1987): KM 의 소표본 성질 — 음의 편향, 표본 크기 증가에 따른 수렴 속도.
  • Wellner (1985): KM 의 점근적 분포 + 신뢰대.
  • Klein (1991): KM·NA 분산 추정량의 비교 — Greenwood 가 평균적으로 가장 가까움, 식 4.2.4 가 NA 분산으로 권장.

실무 함의: \(n < 30\) 사건에서는 KM·NA 의 차이를 의식적으로 보고 (둘 다 plot), 분산은 Greenwood 사용.

Theoretical Note 9 — Gaussian Process Weak Convergence

regularity 조건 하에서:

\[ \sqrt{n}(\widehat{S}(t) - S(t)) \xrightarrow{d} W^*(t) \]

where \(W^*\) is a mean-zero Gaussian process with covariance \(\sigma^2(s, t) = S(s)S(t) \int_0^{\min(s,t)} dF/[(1-F)^2 G^{-1}]\).

의의:

  1. 점별 정규성: 고정 \(t\) 에서 \(\widehat{S}(t) \approx N(S(t), \widehat{V}[\widehat{S}(t)])\) — § 4.3 의 신뢰구간의 기반.
  2. 신뢰대: process 자체의 sup 분포로 § 4.4 의 confidence band 도출.
  3. Brownian bridge 표현: 표준화 후 Brownian bridge 로 수렴 — Hall-Wellner band 의 기반.

→ § 4.3·4.4 의 모든 신뢰구간/대 가 본 정리 위에서 작동.

8 응용 분야

분야 활용 구체적 예시
임상시험 일차 종점 KM 신약 vs 위약의 OS·PFS 비교
종양학 5 년 생존률 KM 5-년 OS = 65% (95% CI 58~72)
신뢰성 공학 제품 수명 NA 기울기로 Weibull/Exp 식별
HIV 역학 잠복기 분포 reverse-time KM (Ch.5) 이전의 우측 censoring
보험·금융 부도 시점 분포 채무자 default 곡선
인구 통계 Cohort 사망률 좌절단 보정 KM (§ 4.6)
재발 모형 첫 재발 시점 KM 의 사건 정의를 재발로

9 코드 예시

9.1 Step 1 — 순수 NumPy 로 KM·NA 직접 구현

import numpy as np

# Klein Example 4.1: 6-MP 21 명
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 km_na(times, events):
    """Kaplan-Meier + Nelson-Aalen + Greenwood + Aalen variance"""
    order = np.argsort(times)
    t_sorted = times[order]
    e_sorted = events[order]
    unique_event_times = np.unique(t_sorted[e_sorted == 1])

    S = 1.0           # KM
    H = 0.0           # NA
    var_S_term = 0.0  # Greenwood 누적합
    var_H = 0.0       # Aalen 누적합
    rows = []

    for ti in unique_event_times:
        Y = int(np.sum(t_sorted >= ti))               # 위험집합
        d = int(np.sum((t_sorted == ti) & (e_sorted == 1)))  # 사건 수

        # KM (식 4.2.1)
        S *= (1 - d / Y)
        # NA (식 4.2.3)
        H += d / Y
        # Greenwood (식 4.2.2): 누적 후 S^2 곱
        var_S_term += d / (Y * (Y - d)) if (Y - d) > 0 else 0
        var_S = (S ** 2) * var_S_term
        # Aalen (식 4.2.4)
        var_H += d / (Y ** 2)

        rows.append((ti, Y, d, S, np.sqrt(var_S),
                     H, np.sqrt(var_H)))
    return rows

print(f"{'t':>3}  {'Y':>3}  {'d':>2}  {'S':>6}  {'SE_S':>6}  "
      f"{'H':>6}  {'SE_H':>6}")
for ti, Y, d, S, se_S, H, se_H in km_na(times, events):
    print(f"{ti:>3}  {Y:>3}  {d:>2}  {S:.3f}  {se_S:.3f}  "
          f"{H:.3f}  {se_H:.3f}")

출력 (Klein Table 4.1B + Table 4.2 와 일치):

  t    Y   d       S    SE_S       H    SE_H
  6   21   3   0.857   0.076   0.143   0.082
  7   17   1   0.807   0.087   0.202   0.102
 10   15   1   0.753   0.096   0.268   0.121
 13   12   1   0.690   0.107   0.352   0.147
 16   11   1   0.628   0.114   0.443   0.173
 22    7   1   0.538   0.128   0.585   0.224
 23    6   1   0.448   0.135   0.752   0.280

9.2 Step 2 — Self-consistency 알고리즘 직접 구현

식 4.2.7 의 fixed-point 반복으로 KM 도출.

def self_consistent_km(times, events, max_iter=100, tol=1e-8):
    """Efron (1967) self-consistency 알고리즘"""
    n = len(times)
    grid = np.unique(times)

    # 초기값: empirical (censored 무시)
    S = np.array([(times > t).mean() for t in grid])

    for iteration in range(max_iter):
        S_new = np.zeros_like(S)
        for k, t in enumerate(grid):
            term1 = np.sum(times > t) / n
            mask = (events == 0) & (times <= t)
            term2 = 0.0
            for i in np.where(mask)[0]:
                idx_Ti = np.searchsorted(grid, times[i])
                if S[idx_Ti] > 0:
                    term2 += S[k] / S[idx_Ti] / n
            S_new[k] = term1 + term2
        if np.max(np.abs(S_new - S)) < tol:
            print(f"수렴: iteration {iteration}")
            break
        S = S_new
    return grid, S

grid, S_self = self_consistent_km(times, events)
# KM 결과와 동일함을 확인

9.3 Step 3 — lifelines 로 실무 코드

import pandas as pd
from lifelines import KaplanMeierFitter, NelsonAalenFitter

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")

# 핵심 출력
print(kmf.survival_function_)         # KM 곡선
print(kmf.confidence_interval_)       # 점별 95% CI (default)
print(naf.cumulative_hazard_)         # NA 곡선

# 두 추정량 비교
import matplotlib.pyplot as plt
fig, axes = plt.subplots(1, 2, figsize=(12, 4))
kmf.plot_survival_function(ax=axes[0], label="KM")
S_from_NA = np.exp(-naf.cumulative_hazard_)
S_from_NA.plot(ax=axes[0], label="exp(-NA)", linestyle="--")
axes[0].set_title("KM vs exp(-NA)")
axes[0].legend()

naf.plot_cumulative_hazard(ax=axes[1])
H_from_KM = -np.log(kmf.survival_function_)
H_from_KM.plot(ax=axes[1], label="-log(KM)", linestyle="--")
axes[1].set_title("NA vs -log(KM)")
axes[1].legend()

9.4 Step 4 — R survival 패키지

library(survival)
library(KMsurv)

# 6-MP 데이터
sixmp <- data.frame(
  time = c(6, 6, 6, 6, 7, 9, 10, 10, 11, 13, 16,
           17, 19, 20, 22, 23, 25, 32, 32, 34, 35),
  status = c(1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1,
             0, 0, 0, 1, 1, 0, 0, 0, 0, 0)
)

# KM (default Greenwood variance)
km_fit <- survfit(Surv(time, status) ~ 1, data = sixmp)
summary(km_fit)
# Time   N   Events   Survival   StdErr   Lower 95% CI   Upper 95% CI
#    6  21        3      0.857   0.0764         0.7194         1.0000
#    7  17        1      0.807   0.0869         0.6531         0.9971
#   10  15        1      0.753   0.0963         0.5859         0.9669
#   ...

# NA (Fleming-Harrington type = NA-based survival)
na_fit <- survfit(Surv(time, status) ~ 1, data = sixmp, type = "fh")
summary(na_fit)

# Aalen-Johansen variance (식 4.2.5)
km_aj <- survfit(Surv(time, status) ~ 1, data = sixmp,
                 error = "tsiatis")
summary(km_aj)

# 시각화
plot(km_fit, conf.int = TRUE,
     xlab = "Weeks", ylab = "Survival Probability",
     main = "Kaplan-Meier — 6-MP Group (Klein Ex 4.1)")

9.5 Step 5 — BMT 137 명 그룹별 비교

from lifelines.datasets import load_bmt
df = load_bmt()  # patients with bone marrow transplants

# disease group 별 KM
fig, ax = plt.subplots(figsize=(10, 6))
for group, label in zip([1, 2, 3], ["ALL", "AML low", "AML high"]):
    mask = df["group"] == group
    kmf = KaplanMeierFitter().fit(df.loc[mask, "T"],
                                   df.loc[mask, "event"],
                                   label=label)
    kmf.plot_survival_function(ax=ax, ci_show=True)
ax.set_title("BMT — Disease-Free Survival by Group")
ax.set_xlabel("Days Post Transplant")
ax.set_ylabel("DFS Probability")

# 3 년 (1095 일) 시점 출력
for group, label in zip([1, 2, 3], ["ALL", "AML low", "AML high"]):
    mask = df["group"] == group
    kmf = KaplanMeierFitter().fit(df.loc[mask, "T"],
                                   df.loc[mask, "event"])
    print(f"{label}: S(1095) = {kmf.predict(1095):.4f}")

10 핵심 takeaway

§ 4.1~4.2 의 6 가지 교훈
  1. \(d_i/Y_i\) 가 모든 비모수 추정의 building block — 이 한 가지 비율의 곱이 KM, 합이 NA, 적분이 RMST, 역변환이 median, 재정의가 left-truncated KM, 분리가 cause-specific hazard. 도구 7 개가 한 가지 양의 변형이다.

  2. 5 가지 유도가 모두 같은 결과 — reduced-sample, redistribute-to-the-right, self-consistency, counting process, NPMLE 가 모두 KM 으로 모인다. 이 다중성이 KM 의 robustness 의 수학적 깊이.

  3. Greenwood 분산은 delta method 두 번 — log 변환 후 분산 합산, 다시 exp 변환. Aalen 분산은 Poisson 근사 한 번. 두 도출이 서로 다른 가정에서 출발하지만 점근적으로 동치.

  4. KM 과 NA 는 점근적으로 동치이지만 소표본에서 다르다 — NA = -log KM 의 Taylor 1차. 작은 \(Y_i\) 에서 \(\widetilde{S} > \widehat{S}\). Hazard 모양 진단은 NA, 생존곡선 보고는 KM.

  5. Tail 처리는 가정에 의존 — Efron (immediate death), Gill (immortal), BHK (exponential decay). Klein (1991) 의 small-sample 비교 결과 Gill 권장. 분석 보고에 어떤 안을 썼는지 명시.

  6. 독립 censoring 가정 위반은 추정 대상을 바꾼다 — informative dropout 시 KM 이 다른 함수를 추정. sensitivity analysis (worst-case bounds) 로 점검 필수.

11 관련 주제

선행 지식

후속 주제

  • § 4.3 — Pointwise Confidence Intervals (linear · log · arcsine)
  • § 4.4 — Confidence Bands (EP · Hall-Wellner)
  • § 4.5 — Mean (RMST) · Median (Brookmeyer-Crowley)
  • § 4.6 — Left-Truncation 의 \(Y_i\) 재정의
  • Ch.6 — Kernel Hazard Smoothing (NA 점프의 평활)
  • Ch.7 — Log-rank, Wilcoxon, Tarone-Ware (KM 의 두 곡선 비교)
  • Ch.12 — Parametric Model Identification (NA plot 으로 분포 식별)

관련 개념

Subscribe

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