1 4 가지 비모수 추정의 분업
| 방법 | 가정 | 출력 | 시각 |
|---|---|---|---|
| Kaplan-Meier hazard | 사건 시점 사이 hazard 일정 | 사건별 step | Spiky |
| Person-time | 구간 내 hazard 일정 | 구간별 평균 | Smooth |
| Actuarial | 균등 censoring | 구간별 (life table) | Routine 자료 |
| Nelson-Aalen (NA) | (없음) | 누적 \(\hat H(t)\) | Smooth (누적) |
(Woodward, 2014, Ch.11.3).
1.1 분업의 직관
- 추상 정의: KM 은 사건 시점 단위, Person-time 은 구간 단위, Actuarial 은 life table 구간 단위 (with censoring 보정), NA 는 누적 형태.
- 일상어 비유: 도시 인구 변화 측정 — 매일 (KM), 매월 (Person-time), 분기 (Actuarial), 누적 인구 변화 (NA). 같은 정보, 다른 시각화.
- 반사실 시나리오: 자료 자세하면 KM 이 정밀, 구간 자료만 있으면 Actuarial. 모형 진단이 목적이면 NA. 하나의 답이 아닌 도구 선택.
2 11.3.1 Kaplan-Meier Hazard
각 사건 시점 \(t\) 에서:
\[\hat h_t = \frac{e_t}{n_t \cdot u_t}\]
- \(e_t\): 시점 \(t\) 의 사건 수 (보통 1, 동률 사건 시 ↑).
- \(n_t\): 시점 \(t\) 직전의 위험 인구.
- \(u_t\): 다음 사건 시점까지의 시간 간격.
가정: hazard 가 사건 시점 사이 일정.
2.1 직관 — KM Hazard 의 spiky 패턴
- 추상 정의: \(u_t\) 가 분모 — 사건 사이 간격이 작으면 (사건 빈번) hazard ↑, 크면 (사건 드문 구간) hazard ↓. 결과: 양 극단을 오가는 패턴.
- 일상어 비유: 매일 강수량 측정 — 비 안 오는 날 0, 폭우 날 ↑. 평균보다 극단을 보여줌.
- 반사실 시나리오: 자료가 적으면 (예: 27 명 중 27 사건) noise 큼 — 진성 패턴 가림. 큰 표본 (수천 사건) 에서는 KM hazard 가 더 안정.
Glioblastoma 사례 (Example 11.1, Table 11.1):
| \(t\) | \(n_t\) | \(e_t\) | \(u_t\) | \(\hat h_t\) |
|---|---|---|---|---|
| 10 | 27 | 1 | 2 | 0.0185 |
| 12 | 26 | 1 | 1 | 0.0385 |
| 13 | 25 | 1 | 2 | 0.0200 |
| 15 | 24 | 1 | 1 | 0.0417 |
| 16 | 23 | 1 | 4 | 0.0109 |
| 20 | 22 | 2 | 4 | 0.0227 |
| 24 | 20 | 2 | 2 | 0.0500 |
| 26 | 18 | 2 | 1 | 0.1111 |
| … | … | … | … | … |
| 60 | 8 | 1 | 1 | 0.1250 |
| 61 | 7 | 1 | 1 | 0.1429 |
후반부 (60+ 주) 에서 \(n_t\) 작아져 \(\hat h_t\) 매우 변동.
2.2 KM Hazard 의 한계
가설: Glioblastoma 자료의 hazard plot 이 60~70 주에서 ↑ 보임 — 진성 hazard 패턴인가, noise 인가?
문제: - 후반부 표본 작음 → 분산 ↑. - 단일 사건이 hazard 폭증 시킴.
3 단계 직관:
- 추상 정의: KM hazard 의 분산 \(\propto e_t/n_t^2\) — \(n_t\) 작으면 noise.
- 일상어 비유: 마지막 5 명의 학생 평균 점수 변동성 ↑. 진성 추세 vs noise 구분 어려움.
- 반사실 시나리오: Smoothing (kernel, person-time) 으로 noise 감소. 또는 신뢰구간 시각화로 noise 영역 표시.
3 11.3.2 Person-time Estimation
시간을 구간 (예: 10 주) 으로 분할 후 각 구간의 person-time event rate:
\[\hat h_{\text{interval}} = \frac{e_{\text{interval}}}{\sum_i (\text{person-time}_i)}\]
분모: 구간 내 모든 person-time 합산.
3.1 직관 — 구간 평균의 안정성
- 추상 정의: 구간 내 사건들의 person-time 가중 평균 — KM hazard 의 평균. 분모 ↑ → 분산 ↓.
- 일상어 비유: 일별 매출의 7 일 이동 평균 — 일별 변동 줄고 추세 명확.
- 반사실 시나리오: 구간이 너무 크면 시간 변화 못 보고 (under-smooth), 너무 작으면 KM 과 비슷한 noise (over-smooth). Bias-variance trade-off — 구간 폭 선택이 핵심.
3.2 Glioblastoma 사례 — Example 11.2
[10, 20) 구간: - 사건 수 \(e = 5\) (10, 12, 13, 15, 16 주). - 사망자 person-weeks: \(0 + 2 + 3 + 5 + 6 = 16\). - 생존자 (20 주까지 무사) person-weeks: \(22 \times 10 = 220\). - 합 person-weeks: \(236\).
\[\hat h_{[10,20)} = \frac{5}{236} = 0.0212\]
같은 구간의 KM hazard 5 개 (0.0185, 0.0385, 0.0200, 0.0417, 0.0109) 의 평균 ≈ 0.026 — 약간 다름 (가중 방식 차이).
3 단계 직관:
- 추상 정의: KM 이 사건 시점 단위, person-time 이 person-time 가중 합.
- 일상어 비유: 매일 비 측정 vs 한 달 강수량 평균 — 둘 다 매월 강우 양 추정, 다른 정밀도.
- 반사실 시나리오: Person-time 이 일반적으로 시각화에 우월. 단, 사건 시점의 정확한 타이밍 분석 (예: 즉각적 약 효과) 시 KM 우월.
3.3 구간 폭 선택
- 너무 좁음 (예: 1 일): KM 과 거의 동일 — noisy.
- 너무 넓음 (예: 1 년): 시간 변화 못 봄 — under-smooth.
- 권장: 자료의 사건 빈도 기반 — 평균 사건 사이 간격의 5~10 배.
3 단계 직관:
- 추상 정의: 구간이 사건 빈도와 비례하지 않으면 정보 손실.
- 일상어 비유: 사진 셔터 속도 — 너무 빠르면 흐림, 너무 느리면 motion blur.
- 반사실 시나리오: Cross-validation 또는 AIC 로 자료 기반 구간 폭 선택 가능.
4 11.3.3 Actuarial Estimation (Life Table)
Life table 의 actuarial 근사 활용:
\[\hat h_t = \frac{e_t}{(n_t^* - \frac{1}{2} e_t) u_t}\]
- \(n_t^*\): 구간 시작 위험 인구.
- \(e_t\): 구간 내 사건 수.
- \(u_t\): 구간 폭.
- \(\frac{1}{2} e_t\): 평균적으로 사건 발생자가 구간 중간에 사건 발생 가정 → 분모 보정.
4.1 직관 — Half-event 보정
- 추상 정의: 구간 내 사건 발생자가 평균적으로 구간 중간에 사건 발생 → 평균 person-time 기여 = 절반. 분모에서 \(\frac{1}{2} e_t\) 차감.
- 일상어 비유: 한 해 동안 직장을 떠난 사람들의 평균 근속 기간을 6 개월로 가정 (균등 분포 가정).
- 반사실 시나리오: 만약 사건이 구간 초반에 몰려 있으면 \(\frac{1}{2}\) 보정이 과대 → KM 이 더 정확. Actuarial 은 균등 가정 충족 시 우월.
4.2 SHHS 사례 — Example 11.3
스코티시 심장 건강 연구 (SHHS) 의 4398.5 명 baseline → 17 명 첫 1 년 사망.
\[\hat h_0 = \frac{17}{(4398.5 - 17/2)(365)} = 0.00001061 \text{ / day}\]
또는 \(u_0 = 1\) year: \[\hat h_0 = \frac{17}{4390} = 0.0039 \text{ / year}\]
해석: 첫 1 년 hazard 약 0.4% / yr. 모든 365 일에 동일 가정.
3 단계 직관:
- 추상 정의: 큰 표본 + 짧은 추적 + 정확한 사건 시점 부재 — actuarial 이 적합.
- 일상어 비유: 인구 통계의 매년 사망률 — 정확한 시점 없이 연 단위 사건 수 / 연 인구.
- 반사실 시나리오: 자세한 사건 시점이 있으면 KM 이 더 정확. Actuarial 은 routine 자료 (매월 보고, 매년 통계) 에서 표준.
4.3 Woodward 의 권장
Woodward 가 Ch.11 의 나머지에서 actuarial 을 다루지 않는다고 명시:
“We shall not consider actuarial methods in the remainder of this chapter because these are inferior when we have complete survival information.”
3 단계 직관:
- 추상 정의: 자세한 사건 시점이 있으면 KM 이 actuarial 을 dominate.
- 일상어 비유: 정밀 GPS vs 도시 단위 위치 보고 — GPS 가 더 정확하면 도시 보고 비효율.
- 반사실 시나리오: Routine epidemiology (인구 통계) 에서는 actuarial 이 표준 — 자세한 자료 없음. 반대로 임상 연구는 KM.
5 11.3.4 Nelson-Aalen (NA) Cumulative Hazard
\[\hat H(t) = \sum_{t_i \le t} \frac{e_i}{n_i}\]
각 사건 시점의 conditional event rate \(e_i/n_i\) 를 누적 합산.
5.1 KM 과 NA 의 관계
- 추상 정의: \(H(t) = -\log S(t)\). NA 의 \(\hat H(t)\) 와 KM 의 \(-\log \hat S(t)\) 는 거의 동등 (작은 표본 + 큰 사건수에서 약간 차이).
- 일상어 비유: 같은 정보의 두 표현 — “남은 사람의 비율” 과 “잃은 위험의 누적”.
- 반사실 시나리오: 표본이 작으면 두 추정 노이즈 ↑. 큰 표본에서 거의 일치.
Glioblastoma 사례:
NA at \(t = 10\): \(1/27 = 0.0370\). NA at \(t = 12\): \(0.0370 + 1/26 = 0.0755\). NA at \(t = 13\): \(0.0755 + 1/25 = 0.1155\).
KM-derived \(-\log \hat S(t = 13) = -\log(0.8889) = 0.1178\) — NA 와 매우 비슷.
5.2 NA 의 모형 진단 활용
NA 의 가장 큰 가치 — Weibull 적합 검증.
만약 진성 분포가 Weibull 이면: \[h(t) = \lambda \gamma t^{\gamma-1}\] \[H(t) = \lambda t^\gamma\] \[\log H(t) = \log \lambda + \gamma \log t\]
→ \(\log H(t)\) vs \(\log t\) plot 이 직선 (기울기 \(\gamma\)).
3 단계 직관:
- 추상 정의: Weibull 가정이 맞으면 log-log plot 직선. 곡선이면 Weibull 부적합.
- 일상어 비유: 함수 형태의 시각 검증 — 산점도가 직선이면 가정 OK.
- 반사실 시나리오: 곡선 형태 보이면 Weibull 외 모형 (Gompertz, log-logistic, 또는 Cox) 고려.
5.3 NA vs KM 의 후반부 차이
표본 후반부 (작은 \(n_t\)) 에서:
- KM \(\hat S(t)\) 가 0 으로 가까이 → \(-\log \hat S(t)\) 가 ↑↑ (대각선처럼 발산).
- NA 가 더 안정 — 후반부 noise 가 누적에 흡수.
3 단계 직관:
- 추상 정의: KM 의 곱 형식 vs NA 의 합 형식 — 합 형식이 outlier 에 robust.
- 일상어 비유: 평균 vs 누적 합 — 마지막 큰 값의 영향이 평균 (% 변화) 에 더 큼.
- 반사실 시나리오: 후반부 분석이 중요하면 NA 우선 — 모형 진단·외삽.
6 Cumulative Hazard 의 활용
| 활용 | 도구 |
|---|---|
| 모형 진단 | \(\log \hat H(t)\) vs \(\log t\) plot (Weibull 검증) |
| 복합 사건 (recurrent) | NA 가 자연 처리 |
| 시간 의존 공변량 모형 | NA 가 모형의 출발점 |
| 외삽 | NA 의 trend 가 미래 예측 |
7 코드 예시 — 4 방법 비교
import numpy as np
import pandas as pd
from lifelines import KaplanMeierFitter, NelsonAalenFitter
import matplotlib.pyplot as plt
# Glioblastoma 자료
times = np.array([10, 12, 13, 15, 16, 20, 20, 24, 24, 26, 26, 27,
39, 42, 45, 45, 48, 52, 58, 60, 61, 62, 73, 75, 77, 104, 120])
events = np.ones_like(times)
# 1. KM Hazard (사건 사이 간격 일정 가정)
unique_times = np.unique(times)
n_t = []
e_t = []
u_t = []
for i, t in enumerate(unique_times):
n_t.append((times >= t).sum())
e_t.append(((times == t) & (events == 1)).sum())
if i < len(unique_times) - 1:
u_t.append(unique_times[i+1] - t)
else:
u_t.append(1) # arbitrary
n_t = np.array(n_t)
e_t = np.array(e_t)
u_t = np.array(u_t)
km_hazard = e_t / (n_t * u_t)
# 2. Person-time Hazard (10 주 구간)
intervals = [(0, 10), (10, 20), (20, 30), (30, 40), (40, 50),
(50, 60), (60, 70), (70, 80), (80, 100), (100, 130)]
pt_hazards = []
pt_centers = []
for lo, hi in intervals:
in_interval = (times >= lo) & (times < hi)
e = in_interval.sum()
# Person-time: 사건자 + 생존자 (구간 끝까지)
deaths_pt = (times[in_interval] - lo).sum()
survivors_pt = (times >= hi).sum() * (hi - lo)
pt = deaths_pt + survivors_pt
if pt > 0:
pt_hazards.append(e / pt)
pt_centers.append((lo + hi) / 2)
# 3. NA cumulative
naf = NelsonAalenFitter()
naf.fit(times, events)
# 시각화
fig, axes = plt.subplots(1, 3, figsize=(15, 4))
# KM hazard (spiky)
axes[0].step(unique_times, km_hazard, where="post")
axes[0].set_title("KM hazard (spiky)")
axes[0].set_xlabel("Time (weeks)")
# Person-time hazard (smooth)
axes[1].plot(pt_centers, pt_hazards, marker="o")
axes[1].set_title("Person-time hazard (smooth)")
axes[1].set_xlabel("Time (weeks)")
# NA cumulative
naf.plot_cumulative_hazard(ax=axes[2])
axes[2].set_title("NA cumulative hazard")
axes[2].set_xlabel("Time (weeks)")
plt.tight_layout()해석: 같은 자료의 3 가지 시각. KM 가 spiky, person-time 가 smooth, NA 가 누적 형태. 진성 패턴 (시간에 따른 hazard ↑) 이 person-time 과 NA 에서 명확.
8 A/B 테스트의 4 방법 활용
| 도구 | A/B 테스트 활용 |
|---|---|
| KM hazard | 일별 사용자 churn rate (자세한 자료) |
| Person-time | 주별 또는 월별 churn rate (smooth) |
| Actuarial | 분기 보고 (인구 단위) |
| NA cumulative | 누적 churn 의 retention curve |
- 추상 정의: A/B 의 자세한 자료 (각 사용자의 마지막 활동 일시) 가 있다면 KM 또는 person-time. Routine 분석은 NA cumulative.
- 일상어 비유: 사용자의 일별 행동 분석 = KM. 주별 retention 보고 = person-time. 누적 retention curve = NA.
- 반사실 시나리오: 짧은 추적 + 작은 표본이면 KM noisy. Person-time 이 의사 결정용 시각화에 유리.
9 결론
4 가지 hazard 추정 방법이 자료 구조와 분석 목적에 따라 분업. KM 이 사건 시점 정밀도 우선, Person-time 이 시각화 매끄러움, Actuarial 이 routine 자료, NA 가 모형 진단·외삽. 후반부의 noise 처리에서 NA 가 robust.
다음 글 (H-WOO11-3) 에서 모수적 분포 (Exponential, Weibull, Log-logistic, Gompertz) 의 적합 검증을 본다.
10 관련 주제
- Survival·Cox 회귀 개관
- 생존 함수와 위험 함수
- 1111-11-11, 모수적 모형 (Exp/Weibull)
Phase B 크로스링크
Statistics 크로스링크