1 들어가며 — 4 번째 함수와 9 분포의 카탈로그
Ch.2 의 마지막 두 절은 두 가지 일을 한다.
- § 2.4 — § 2.2~2.3 의 두 함수 \((S, h)\) 위에 4 번째 함수 평균잔여수명 \(m(x)\) 와 분위수 (median life) 를 추가하고, 네 함수의 동등성 표를 완성한다.
- § 2.5 — 그 함수들을 분석적으로 명시한 9 가지 parametric model 을 카탈로그화한다. Exponential 부터 generalized gamma 까지 — 각 분포가 어떤 hazard 모양 을 만드는지가 핵심.
“\(m(x)\) 는 \(x\) 까지 살아남은 환자가 앞으로 평균 얼마나 더 살까 의 답이다. parametric model 은 \(S \cdot h \cdot f \cdot m\) 네 함수에 명시적 식을 부여한다 — hazard 모양 (단조·hump·bathtub) 이 분포 선택의 안내자다.”
| 항목 | \(S(x)\) | \(h(x)\) | \(f(x)\) | \(m(x)\) |
|---|---|---|---|---|
| 시점 | 누적 | 순간 | 순간 (절대) | 미래 평균 |
| 차원 | 확률 [0,1] | 비율 [/시간] | 밀도 [/시간] | 시간 |
| 임상 질문 | “얼마나 살았는가?” | “지금 죽을 강도?” | “분포 모양?” | “앞으로 평균 얼마?” |
| 해석 | KM curve | hazard plot | 확률밀도 | “기대 잔여 수명” |
본 편은 4 함수 의 마지막 한 함수 (\(m\)) 을 정의한 뒤, parametric model 카탈로그로 넘어간다.
2 § 2.4 — 평균잔여수명과 Median Life
2.1 정의 — Mean Residual Life
비음수 random variable \(X\) 와 시점 \(x\) 에 대하여,
\[ m(x) = E(X - x \mid X > x) \]
는 시점 \(x\) 까지 살아남은 개체의 남은 수명의 기댓값 이다. Klein 표기 \(\text{mrl}(x)\).
연속 random variable 에 대한 적분 형태:
\[ m(x) = \frac{\int_x^\infty (t-x) f(t)\, dt}{S(x)} = \frac{\int_x^\infty S(t)\, dt}{S(x)} \tag{2.4.1} \]
오른쪽 등식은 부분적분 (integration by parts) 로 유도된다. 직관적으로 — 분자는 생존곡선의 \(x\) 오른쪽 면적 이고, 분모는 시점 \(x\) 까지 살아남은 비율. 따라서
\(m(x)\) = (생존곡선이 \(x\) 이후로 그려내는 면적) / (시점 \(x\) 의 생존확률)
그림으로:
- \(x = 0\): 전체 면적 / 1 = 평균 수명 \(\mu\).
- \(x = \mu\) 부근: 살아남은 개체에게 남은 평균 = 잔여 수명.
“남은 면적 ÷ 살아있는 비율” — 평균 잔여 수명의 본질.
2.2 Mean lifetime 와 Variance
\(x = 0\) 일 때 \(m(0)\) 이 분포의 평균:
\[ \mu = E(X) = m(0) = \int_0^\infty t\, f(t)\, dt = \int_0^\infty S(t)\, dt \tag{2.4.2} \]
\[ \int_0^\infty t f(t)\, dt = \int_0^\infty S(t)\, dt \]
좌변은 PDF 가중 평균, 우변은 생존곡선 아래 면적. KM curve 의 면적이 평균 수명의 비모수 추정량 (RMST, Restricted Mean Survival Time, Klein Ch.4) 인 이유.
분산도 생존함수로 표현:
\[ \text{Var}(X) = 2 \int_0^\infty t S(t)\, dt - \left[\int_0^\infty S(t)\, dt\right]^2 \tag{2.4.3} \]
2.3 pth Quantile 와 Median Life
분포의 pth quantile (또는 100p-percentile) 은
\[ x_p = \inf\{t : S(t) \leq 1-p\} \tag{2.4.4} \]
연속 변수에서는 \(S(x_p) = 1 - p\) 의 해. 특히 \(p = 0.5\) 인 median lifetime:
\[ S(x_{0.5}) = 0.5 \tag{2.4.5} \]
생존시간 분포는 거의 항상 right-skewed (long tail). 일부 환자가 매우 오래 살면 mean 은 그쪽으로 끌려가지만, median 은 안정적.
- mean: 평균에 민감 — censoring 이 있으면 추정 자체가 어렵다 (꼬리를 모르므로).
- median: KM curve 가 0.5 와 만나는 시점 — censoring 이 있어도 상당히 안정적으로 추정 가능.
이것이 임상 보고에서 “median survival time = X months” 가 표준이 된 이유.
2.4 Klein 예제 — 미국 1989 흑인 남성 mortality
생존표 (life table) 보간으로 median 을 구한다.
- \(S(68) = 0.51679 > 0.5\)
- \(S(69) = 0.49520 < 0.5\)
- 선형 보간:
\[ x_{0.5} = 68 + \frac{S(68) - 0.5}{S(68) - S(69)} = 68 + \frac{0.01679}{0.02159} = 68.78\ \text{years} \]
- 80-percentile: \(x_{0.8} = 81.81\) years.
흑인 남성의 1989 년 출생 코호트는 약 69 세에 절반이 사망, 82 세까지 20% 가 생존. 이것이 “공중보건 정책의 표적” 이 되는 숫자.
2.5 Median Residual Life
평균이 분포의 꼬리에 민감하므로, 더 robust 한 잔여수명 척도 — median residual lifetime:
\[ \text{mdrl}(x) = \text{median of } (X - x \mid X > x) \]
- \(\text{mdrl}(0) = x_{0.5}\) — 무조건부 median.
- 임상: “이 약을 처방받고 5 년 살아남은 환자의 50% 가 추가로 살 시간” — 환자 상담에 매우 유용.
2.6 4 함수 통합 — Klein Theoretical Note 2
연속 random variable \(X\) 에 대하여 \(S, f, h, m\) 의 모든 변환:
\(S(x)\) —
\[ \begin{aligned} S(x) &= \int_x^\infty f(t)\, dt \\ &= \exp\!\left[-\int_0^x h(u)\, du\right] = \exp[-H(x)] \\ &= \frac{m(0)}{m(x)} \exp\!\left[-\int_0^x \frac{du}{m(u)}\right] \end{aligned} \]
\(f(x)\) —
\[ \begin{aligned} f(x) &= -\frac{dS(x)}{dx} \\ &= h(x) S(x) \\ &= \left(\frac{dm(x)}{dx} + 1\right) \frac{m(0)}{m(x)^2} \exp\!\left[-\int_0^x \frac{du}{m(u)}\right] \end{aligned} \]
\(h(x)\) —
\[ \begin{aligned} h(x) &= -\frac{d \ln S(x)}{dx} = \frac{f(x)}{S(x)} \\ &= \frac{1}{m(x)}\left(\frac{dm(x)}{dx} + 1\right) \end{aligned} \]
\(m(x)\) —
\[ m(x) = \frac{\int_x^\infty S(u)\, du}{S(x)} = \frac{\int_x^\infty (u-x) f(u)\, du}{S(x)} \]
핵심 메시지: \(\{S, f, h, m\}\) 중 어느 하나만 알면 나머지 셋이 결정된다. 어떤 함수로 “모델링” 하느냐는 편의성 + 임상적 직관성 의 문제.
| 모델 | 모델링 함수 | 이유 |
|---|---|---|
| Cox PH | \(h(t \mid Z) = h_0(t) e^{\beta'Z}\) | 효과의 곱셈성·생물학적 해석 자연 |
| AFT | \(S(t \mid Z) = S_0(t e^{-\beta'Z})\) | 시간 가속/감속 해석 |
| Bayesian non-parametric | \(S(t)\) | Dirichlet process prior 가 자연 |
| Frailty model | \(h(t \mid u) = u h_0(t)\) | 개체 무관측 이질성 |
분포의 본질은 같고, 표현이 다를 뿐.
3 § 2.5 — 9 Parametric Models
표 (Klein Table 2.2) 가 9 분포의 \(h, S, f, E[X]\) 를 모두 정리. 본 절은 각 분포를 — 임상 의미·hazard 모양·모수 해석 차원에서 — 풀어쓴다.
3.1 Exponential — 가장 단순하고 강력한 출발점
\[ S(x) = e^{-\lambda x}, \quad h(x) = \lambda, \quad f(x) = \lambda e^{-\lambda x}, \quad \lambda > 0 \]
핵심 성질 —
- Memoryless property (식 2.5.1): \[ P(X \geq x + z \mid X \geq x) = P(X \geq z) \]
- 연속 분포 중 유일 하게 memoryless. 미래는 과거에 무관.
- \(E(X) = \text{Var}(X)^{1/2} = 1/\lambda\) (CV = 1).
- \(m(x) = 1/\lambda\) — 시점 무관 일정한 잔여수명.
- Median: \(x_{0.5} = \ln 2 / \lambda \approx 0.693/\lambda\).
50 세 노인과 갓난아기의 추가 평균 생존시간이 같다? 명백히 비현실적.
따라서 exponential 은:
- 현실적 적합 사례: 방사성 동위원소 붕괴, 일부 전자부품, 매우 짧은 기간의 임상시험.
- 부적합 사례: 인간 수명, 노화 관련 사건, 수술 후 회복.
- historical 의의: 너무 단순하지만 수리적 단순성으로 1950~70 년대 신뢰성 공학에 광범위 사용. 이후 Weibull, log-normal 로 대체.
\(H(x) = -\ln S(x) = \lambda x\) — 따라서 \(\hat{H}(x)\) vs \(x\) 가 원점 통과 직선 이면 exponential 이 적합. Nelson-Aalen plot 으로 즉시 진단.
3.2 Weibull — 가장 인기 있는 parametric
\[ S(x) = \exp(-\lambda x^\alpha), \quad h(x) = \alpha \lambda x^{\alpha-1}, \quad \alpha, \lambda > 0 \]
- \(\alpha\) = shape parameter, \(\lambda\) = scale parameter.
- \(\alpha = 1\) → Exponential (특수 경우).
- \(\alpha < 1\) → DFR (Decreasing Failure Rate), \(h(0) = \infty\).
- \(\alpha > 1\) → IFR (Increasing Failure Rate), \(h(0) = 0\).
- Mean: \(\Gamma(1 + 1/\alpha) / \lambda^{1/\alpha}\).
- Median: \(x_{0.5} = (\ln 2 / \lambda)^{1/\alpha}\).
- pth quantile: \(x_p = \{-\ln(1-p) / \lambda\}^{1/\alpha}\).
유연성: \(\alpha\) 조정으로 단조 증가·감소·일정 모든 hazard 모양 표현.
수리적 단순성: \(S, h, f\) 모두 closed form.
AFT + PH 동시 만족: Weibull 만이 AFT 와 PH 두 framework 모두에서 닫혀있음 (Klein § 2.6 에서 다룸).
임상 해석: \(\alpha\) 가 노화 가속도.
- \(\alpha = 1\): 노화 없음 (memoryless).
- \(\alpha = 2\): 시간이 길어질수록 위험이 선형으로 증가.
- \(\alpha = 5\): 수명 끝 무렵 위험 급증 (전형적 wear-out).
\(\ln H(x) = \ln \lambda + \alpha \ln x\) — 따라서 \(\ln \hat{H}(x)\) vs \(\ln x\) 이 직선이면 Weibull 적합.
- slope = \(\alpha\) (shape)
- intercept = \(\ln \lambda\) (scale 의 함수)
Klein Ch.12 에서 정식 추정·검정.
Log linear form (식 2.5.3):
\(Y = \ln X\) 가 standard extreme value distribution 따라:
\[ Y = \mu + \sigma \epsilon, \quad \mu = -\ln \lambda / \alpha, \quad \sigma = 1/\alpha \]
이 표현이 AFT 회귀 (Klein Ch.12) 의 자연스러운 출발점.
3.3 Gamma — Weibull 의 사촌
\[ f(x) = \frac{\lambda^\beta x^{\beta-1} e^{-\lambda x}}{\Gamma(\beta)}, \quad S(x) = 1 - I(\lambda x, \beta) \]
여기서 \(I(t, \beta) = \int_0^t u^{\beta-1} e^{-u}\, du / \Gamma(\beta)\) 가 incomplete gamma function.
- \(\beta\) = shape, \(\lambda\) = scale.
- \(\beta = 1\) → Exponential.
- \(\beta > 1\) → 단조 증가 hazard (\(h(0) = 0\), \(h(\infty) = \lambda\)).
- \(\beta < 1\) → 단조 감소 hazard (\(h(0) = \infty\), \(h(\infty) = \lambda\)).
- Mean: \(\beta / \lambda\), Variance: \(\beta / \lambda^2\).
| 측면 | Weibull | Gamma |
|---|---|---|
| Hazard | \(\alpha \lambda x^{\alpha-1}\) — closed form | \(f/S\) — incomplete gamma 필요 |
| 극한 hazard | \(\to \infty\) (\(\alpha > 1\)), \(\to 0\) (\(\alpha < 1\)) | 항상 \(\to \lambda\) (수렴) |
| Mathematical tractability | 우수 | 약함 (수치 적분 필요) |
| 응용 | 표준 (재료·임상) | 보험 (자기보험 풀), 대기 시간 |
Gamma 의 hazard 가 \(\lambda\) 로 수렴하는 성질은 장기 위험이 안정화 된다는 의미 — 일부 만성 질환이나 장기적 신뢰성 문제에 적합.
Erlangian (정수 \(\beta = n\)): 단순화된 표현.
\[ S(x) = e^{-\lambda x} \sum_{k=0}^{n-1} \frac{(\lambda x)^k}{k!} \]
대기 시간 (Poisson process 의 \(n\) 번째 도착시간) 으로 해석 가능.
3.4 Log-normal — Hump-shaped hazard
\(Y = \ln X\) 가 정규분포.
\[ f(x) = \frac{\phi\!\left(\frac{\ln x - \mu}{\sigma}\right)}{x}, \quad S(x) = 1 - \Phi\!\left(\frac{\ln x - \mu}{\sigma}\right) \]
- Mean: \(e^{\mu + \sigma^2/2}\), Variance: \((e^{\sigma^2} - 1) e^{2\mu + \sigma^2}\).
- pth quantile: \(x_p = e^{\mu + \sigma z_p}\).
- Hazard 모양: hump-shaped — \(h(0) = 0\), 최대값 후 감소하여 \(h(\infty) = 0\).
장기 (large \(x\)) 에서 hazard 가 0 으로 가면 — “오래 살아남은 사람일수록 안전하다” 는 의미. 노화 모델에는 부적합.
적합 사례:
- 짧은 기간 임상시험에서 사건 발생 시점이 “어떤 잠복기” 이후 집중되는 경우.
- 발병 시점 분포 (incubation time of disease).
부적합 사례: 장기 mortality.
3.5 Log-logistic — Closed-form hump
\(Y = \ln X\) 가 logistic 분포.
\[ S(x) = \frac{1}{1 + \lambda x^\alpha}, \quad h(x) = \frac{\alpha \lambda x^{\alpha-1}}{1 + \lambda x^\alpha} \]
- \(\alpha \leq 1\) → 단조 감소.
- \(\alpha > 1\) → hump-shaped, max at \(x^* = [(\alpha-1)/\lambda]^{1/\alpha}\).
- pth quantile: \(x_p = \{p / [\lambda(1-p)]\}^{1/\alpha}\).
- 모양: 두 분포 모두 hump-shaped.
- Tail: log-logistic 의 꼬리가 더 두꺼움 (heavier tail).
- Closed form: log-logistic 은 \(S, h, f\) 모두 closed form — 계산·적합·해석 모두 단순.
- Odds form: \(S(x) / [1 - S(x)] = 1 / (\lambda x^\alpha)\) — log odds 가 log time 의 선형 함수. Proportional odds 모델의 자연 출발점.
⇒ log-normal 적합도 차이 가 큰 데이터가 아니면 log-logistic 을 선호.
3.6 Gompertz — 노화의 정전 분포
\[ h(x) = \theta e^{\alpha x}, \quad S(x) = \exp\!\left[\frac{\theta}{\alpha}(1 - e^{\alpha x})\right] \]
- \(\theta > 0\) = 초기 hazard, \(\alpha > 0\) = 노화 가속도.
- Hazard 가 지수적으로 증가 — 노화의 가장 직관적 모델.
- Gompertz (1825) 가 사망률 데이터에서 발견. Makeham (1860) 이 baseline 항 추가 → Gompertz-Makeham law: \[ h(x) = \mu + \theta e^{\alpha x} \]
- 30~80 세 인구 mortality 가 지수적 증가: 매 8 년마다 약 2 배.
- 이 “8 년 더블링” 이 Gompertz law 의 핵심.
- 영아 사망 (DFR 부분) 까지 포함하려면 piecewise 또는 generalized gamma 가 필요.
3.7 Generalized Gamma — Super-family
\[ f(x) = \frac{\alpha \lambda^\beta x^{\alpha\beta - 1} e^{-\lambda x^\alpha}}{\Gamma(\beta)}, \quad S(x) = 1 - I(\lambda x^\alpha, \beta) \]
3 모수 — \(\alpha, \beta, \lambda\). 다른 분포가 모두 특수 경우:
| 제약 | 결과 |
|---|---|
| \(\alpha = \beta = 1\) | Exponential |
| \(\beta = 1\) | Weibull |
| \(\alpha = 1\) | Gamma |
| \(\beta \to \infty\) | Log-normal (limit) |
Generalized gamma 적합 → 모수 추정 → 신뢰구간으로 어느 특수 경우인지 판정 → 더 단순한 모델로 reduce.
- \(\hat{\beta} = 1\) in CI → Weibull 사용
- \(\hat{\alpha} = 1\) in CI → Gamma 사용
- 둘 다 1 → Exponential 사용
이 절차가 Klein Ch.12 의 표준 모형 선택 프로토콜.
3.8 Pareto — Heavy tail
\[ S(x) = \left(\frac{\lambda}{x}\right)^\theta, \quad h(x) = \frac{\theta}{x}, \quad x \geq \lambda \]
- $= $ shape (heavy tail 정도, 작을수록 두꺼움).
- $= $ minimum value (threshold).
- Hazard 가 \(1/x\) — 단조 감소.
- Mean: \(\theta \lambda / (\theta - 1)\) (단 \(\theta > 1\), 그 외에는 무한대).
- 보험 손실: 큰 손실의 빈도가 power law (전형적 heavy tail).
- 자산 분포: 80-20 법칙 (Pareto principle 의 출발).
- 소득 분포: 상위층의 두꺼운 꼬리.
- 생존 분석: 잘 안 쓰임 — 임상 자료의 hazard 가 \(1/x\) 모양인 경우 거의 없음.
3.9 Inverse Gaussian — Brownian motion 첫 도달
\[ f(x) = \left(\frac{\lambda}{2\pi x^3}\right)^{1/2} \exp\!\left[-\frac{\lambda(x - \mu)^2}{2\mu^2 x}\right] \]
- drift \(\nu\) 인 Brownian motion 이 처음 어느 임계점에 도달하는 시간의 분포.
- 물리적 해석: 손상 누적 모델 (cumulative damage) — 손상이 무작위로 누적되어 임계 수준에 도달하면 사망.
- 응용: 일부 신경 발화 시간, 입자 첫 도달 시간.
3.10 Exponential Power — Bathtub
\[ h(x) = \alpha \lambda^\alpha x^{\alpha-1} \exp[(\lambda x)^\alpha] \]
- \(\alpha < 1\): bathtub-shaped — 영아 사망 + 안정 + 노화 모두 표현.
- Smith-Bain (1975) 이 도입.
미국 1989 인구 hazard (Klein Figure 2.6) 처럼:
- 영아·유아: 높은 hazard (감염병)
- 5~30 세: 매우 낮은 안정 hazard
- 30~80 세: 노화로 인한 증가
이 bathtub 모양이 exponential power \(\alpha < 1\) 또는 generalized gamma 일부 영역에서 표현됨. piecewise exponential 또는 Klein Ch.6 의 nonparametric kernel hazard 가 더 자주 사용됨.
3.11 Threshold (Guarantee Time) Modifier
표준 분포에 threshold parameter \(\phi\) 추가 — \(S(x) < 1\) only for \(x > \phi\):
\[ S(x) = \exp[-\lambda(x - \phi)^\alpha], \quad x > \phi \]
- 신뢰성: “guarantee time” — 절대 고장나지 않는 보증기간.
- 임상: minimum induction period — 어떤 노출 후 발병까지 최소 잠복기.
4 분포 선택 의사결정
데이터 → KM curve + Nelson-Aalen 그림
↓
hazard 모양 평가 (smoothing 또는 H 의 미분)
↓
┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ constant│ IFR │ DFR │ bathtub │ hump │
└─────────┴─────────┴─────────┴─────────┴─────────┘
↓ ↓ ↓ ↓ ↓
Exp Weibull Weibull Exp Power Log-normal
Pareto α>1 α<1 Generalized log-logistic
Gompertz Gamma gamma
Gamma β>1 β<1
↓
Generalized gamma 로 super-fit 후 sub-model 환원 (Klein Ch.12)
↓
AIC/BIC 비교, Q-Q plot, deviance residual 진단
↓
최종 모델 → AFT 또는 PH regression 으로 covariate 도입 (Klein Ch.12)
| 데이터 특성 | 1 차 후보 |
|---|---|
| 매우 적은 모수 가정 가능 | Exponential |
| 단조 증가 hazard | Weibull (\(\alpha > 1\)) |
| 단조 감소 hazard | Weibull (\(\alpha < 1\)) |
| 노화 + exponential | Gompertz |
| Bathtub (인구) | Generalized gamma 또는 piecewise |
| Hump (수술 직후) | Log-logistic (closed form 우선) |
| Heavy tail (보험) | Pareto |
| 첫 도달 시간 (물리적) | Inverse Gaussian |
| 모형 선택 자체 | Generalized gamma 로 시작 |
5 R + Python — Leukemia 데이터에 9 분포 적합
§ 1.2 Freireich 1963 6-MP vs placebo 데이터로 9 분포를 적합·비교.
5.1 R — flexsurv + survival
library(survival)
library(flexsurv)
library(ggplot2)
# Klein Table 1.1: Leukemia data
leukemia <- data.frame(
time = c(1, 22, 3, 12, 8, 17, 2, 11, 8, 12, 2, 5, 4, 15, 8, 23, 5, 11, 4, 1, 8,
10, 7, 32, 23, 22, 6, 16, 34, 32, 25, 11, 20, 19, 6, 17, 35, 6, 13, 9, 6, 10),
status = c(rep(1, 21), 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0),
group = factor(c(rep("placebo", 21), rep("6-MP", 21)),
levels = c("placebo", "6-MP"))
)
# 6-MP 그룹만 (censoring 있어 더 흥미)
sub <- subset(leukemia, group == "6-MP")
S <- Surv(sub$time, sub$status)
# 9 분포 적합
fits <- list(
exp = flexsurvreg(S ~ 1, data = sub, dist = "exp"),
weibull = flexsurvreg(S ~ 1, data = sub, dist = "weibull"),
gamma = flexsurvreg(S ~ 1, data = sub, dist = "gamma"),
lnorm = flexsurvreg(S ~ 1, data = sub, dist = "lnorm"),
llogis = flexsurvreg(S ~ 1, data = sub, dist = "llogis"),
gompertz= flexsurvreg(S ~ 1, data = sub, dist = "gompertz"),
gengamma= flexsurvreg(S ~ 1, data = sub, dist = "gengamma")
)
# AIC 비교
aic_table <- data.frame(
dist = names(fits),
AIC = sapply(fits, AIC),
loglik = sapply(fits, function(x) x$loglik)
)
print(aic_table[order(aic_table$AIC), ])
# 적합도 시각화 — KM + 9 분포 곡선
plot(survfit(S ~ 1), lwd = 2, col = "black", conf.int = FALSE,
xlab = "Time (weeks)", ylab = "S(t)",
main = "Klein Leukemia 6-MP — KM vs parametric fits")
cols <- c("red", "blue", "green", "purple", "orange", "darkgreen", "brown")
for (i in seq_along(fits)) {
lines(fits[[i]], col = cols[i], lwd = 1.5, est = TRUE, ci = FALSE)
}
legend("topright", legend = c("KM", names(fits)),
col = c("black", cols), lwd = c(2, rep(1.5, 7)))
# Weibull plot — exponential vs Weibull 진단
H <- -log(summary(survfit(S ~ 1))$surv)
t <- summary(survfit(S ~ 1))$time
par(mfrow = c(1, 2))
plot(t, H, type = "b", main = "Exp check: H(t) vs t",
xlab = "t", ylab = "H(t) = -log S(t)")
plot(log(t), log(H), type = "b", main = "Weibull check: log H vs log t",
xlab = "log t", ylab = "log H(t)")5.2 Python — lifelines + scipy
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from lifelines import (
KaplanMeierFitter, ExponentialFitter, WeibullFitter,
LogNormalFitter, LogLogisticFitter, GeneralizedGammaFitter
)
# Klein Table 1.1
leukemia = pd.DataFrame({
"time": [1, 22, 3, 12, 8, 17, 2, 11, 8, 12, 2, 5, 4, 15, 8, 23, 5, 11, 4, 1, 8,
10, 7, 32, 23, 22, 6, 16, 34, 32, 25, 11, 20, 19, 6, 17, 35, 6, 13, 9, 6, 10],
"status": [1]*21 + [1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0],
"group": ["placebo"]*21 + ["6-MP"]*21,
})
sub = leukemia[leukemia["group"] == "6-MP"]
# 6 분포 적합
fitters = {
"Exponential": ExponentialFitter(),
"Weibull": WeibullFitter(),
"LogNormal": LogNormalFitter(),
"LogLogistic": LogLogisticFitter(),
"GenGamma": GeneralizedGammaFitter(),
}
results = []
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
kmf = KaplanMeierFitter().fit(sub["time"], sub["status"], label="KM")
kmf.plot_survival_function(ax=axes[0], color="black", lw=2)
for name, fitter in fitters.items():
fitter.fit(sub["time"], sub["status"], label=name)
fitter.plot_survival_function(ax=axes[0], ci_show=False)
results.append({
"dist": name,
"AIC": fitter.AIC_,
"loglik": fitter.log_likelihood_,
"n_params": len(fitter._fitted_parameter_names),
})
axes[0].set_title("Survival fits — Klein Leukemia 6-MP")
axes[0].set_xlabel("Time (weeks)")
axes[0].set_ylabel("S(t)")
# Weibull plot 진단
from lifelines import NelsonAalenFitter
naf = NelsonAalenFitter().fit(sub["time"], sub["status"])
H_t = naf.cumulative_hazard_
times = H_t.index.values
H_vals = H_t.values.flatten()
mask = H_vals > 0
axes[1].plot(np.log(times[mask]), np.log(H_vals[mask]), 'bo-')
axes[1].set_xlabel("log t")
axes[1].set_ylabel("log H(t)")
axes[1].set_title("Weibull plot — should be linear")
plt.tight_layout()
plt.savefig("klein_2_4_5_parametric.png", dpi=100)
print(pd.DataFrame(results).sort_values("AIC").to_string(index=False))- AIC 가 가장 낮은 분포 → 데이터를 가장 잘 설명.
- Leukemia 6-MP 데이터에서는 보통 Weibull 또는 log-logistic 이 가장 좋게 나옴.
- Weibull plot (\(\ln H\) vs \(\ln t\)) 의 직선성 → Weibull 적합 시각적 확인.
- 만약 Generalized gamma 가 다른 모델과 AIC 차이가 < 2 이면 — 더 단순한 sub-model (Weibull 등) 사용 권장.
6 직관 통합 — 4 함수와 9 분포의 통합 그림
§ 2.4 (4 함수 통합):
- 4 함수 \(S, h, f, m\) 은 서로를 유일하게 결정한다 — Klein Theoretical Note 2 의 변환표.
- 어느 함수로 모델링할지는 편의성·해석성의 문제 (PH 는 \(h\), AFT 는 \(S\), frailty 는 \(h\), BNP 는 \(S\)).
- Median life 가 mean 보다 자주 보고되는 이유 — robust to censoring + skewed distribution.
§ 2.5 (9 분포 카탈로그):
| Hazard 모양 | 분포 | 임상 |
|---|---|---|
| Constant | Exponential | 방사능 붕괴, no-aging |
| 단조 증가 (IFR) | Weibull (α>1), Gompertz, Gamma (β>1) | 노화, 마모 |
| 단조 감소 (DFR) | Weibull (α<1), Gamma (β<1), Pareto | post-transplant, burn-in |
| Hump | Log-normal, Log-logistic (α>1) | 수술 후, 발병 시점 |
| Bathtub | Exp Power, Generalized gamma | 인구 mortality |
핵심: 분포 선택은 hazard 모양 결정 → AIC 로 fine-tune.
Generalized gamma 로 시작 → sub-model 환원이 가장 안전.
7 실전 체크리스트 — § 2.4~2.5
MRL & Median Life
- \(m(x) = E[X-x \mid X > x] = \int_x^\infty S(t)dt / S(x)\).
- \(\mu = m(0) = \int_0^\infty S(t)dt\) — 생존곡선 면적.
- pth quantile \(S(x_p) = 1 - p\), median \(x_{0.5}\).
- Median residual life mdrl(x) — censoring 에 robust.
4 함수 동등성
- \(S = \exp(-H), f = hS, h = -d\ln S/dx, m = \int S/S\) — 전체 변환표 (Klein Theoretical Note 2).
9 Parametric Models
- Exponential — constant hazard, memoryless.
- Weibull — \(\alpha\) shape: <1 DFR, =1 Exp, >1 IFR.
- Gamma — \(\beta\) shape, hazard \(\to \lambda\).
- Log-normal — hump but tail-zero (비현실적 long-term).
- Log-logistic — hump closed-form, proportional odds.
- Gompertz — exponential aging, 인구 mortality.
- Generalized gamma — super-family, model selection 용.
- Pareto — heavy tail, 보험·금융.
- Inverse Gaussian — first passage time.
- Exponential power — bathtub.
적합 진단
- Exp: \(H(t)\) vs \(t\) 직선.
- Weibull: \(\ln H\) vs \(\ln t\) 직선 (slope \(\alpha\)).
- AIC + Q-Q + deviance residual 종합 판정.
8 관련 주제
Klein 시리즈
- (이전) Ch.2 overview — 7 절 조망
- (이전) § 2.2~2.3 심화 — Survival + Hazard
- (다음) § 2.6~2.7 심화 — Regression + Competing Risks (예정)
Ch.1 시리즈
- Ch.1 overview — 19 데이터 catalog
- § 1.2 Leukemia (본 편 데이터 출처)
관련 개념 (cross-category)
9 참고문헌
- Klein, J. P., & Moeschberger, M. L. (2003). Survival Analysis: Techniques for Censored and Truncated Data (2nd ed.), Ch.2 § 2.4~2.5, pp. 32-44. Springer.
- Gompertz, B. (1825). On the Nature of the Function Expressive of the Law of Human Mortality. Philosophical Transactions of the Royal Society of London, 115, 513-583.
- Weibull, W. (1951). A Statistical Distribution Function of Wide Applicability. Journal of Applied Mechanics, 18, 293-297.
- Smith, R. M., & Bain, L. J. (1975). An Exponential Power Life-Testing Distribution. Communications in Statistics, 4, 469-481.
- Stacy, E. W. (1962). A Generalization of the Gamma Distribution. Annals of Mathematical Statistics, 33, 1187-1192.
- Cox, D. R., & Oakes, D. (1984). Analysis of Survival Data. Chapman & Hall.
- Lawless, J. F. (2003). Statistical Models and Methods for Lifetime Data, 2nd ed. Wiley.
- Kalbfleisch, J. D., & Prentice, R. L. (2002). The Statistical Analysis of Failure Time Data, 2nd ed. Wiley.
- Jackson, C. H. (2016). flexsurv: A Platform for Parametric Survival Modeling in R. Journal of Statistical Software, 70(8), 1-33.
- Davidson-Pilon, C. (2019). lifelines. JOSS, 4(40), 1317.