Klein § 2.4~2.5 — MRL, Median Life, and Parametric Models

평균잔여수명 m(x) = E[X - x | X > x] · ∫_x^∞ S(t)dt / S(x)·median life t_p (S(t_p)=1-p)·median residual life mdrl(x)·4 함수 통합 관계 / 9 parametric survival models — exponential (memoryless·constant hazard)·Weibull (αλx^(α-1) flexible monotone)·gamma (Erlangian special case)·log-normal (hump)·log-logistic (closed-form hump)·Gompertz (exponential aging mortality)·generalized gamma (super-family)·Pareto (heavy tail)·inverse Gaussian·exponential power (bathtub)

Klein & Moeschberger Ch.2 의 § 2.4~2.5 를 한 편으로 정독한다. § 2.2~2.3 에서 정의된 두 함수 (S, h) 에 더해 4 번째 기본 함수인 평균잔여수명 m(x) 의 정의·면적 해석·임상적 의미를 다루고, 9 가지 표준 parametric model 의 hazard 모양·모수 해석·적용 가이드를 제공한다. § 2.4 MRL/Median: m(x) = ∫_x^∞ S(t)dt / S(x), μ = m(0) = ∫_0^∞ S(t)dt, Var(X) = 2∫0^∞ tS(t)dt - μ^2, pth quantile x_p = inf{t : S(t) ≤ 1-p}, median life x(0.5), median residual life mdrl(x), 4 함수 통합 표기 (S↔︎f↔︎h↔︎m). § 2.5 Parametric: Exponential (memoryless 의 유일성), Weibull (shape α<1·=1·>1 → DFR·constant·IFR), gamma (Erlangian = 정수 β), log-normal (hump 이지만 tail 비현실성), log-logistic (hump 의 closed-form 근사), Gompertz (e^(αx) aging — 인구 mortality 의 정전), generalized gamma (Exp/Weibull/Gamma/Log-normal 모두 포함하는 super-family), Pareto (heavy tail 보험·금융), Inverse Gaussian (Brownian motion 첫 도달), Exponential power (bathtub). 분포 선택 의사결정 흐름 + Leukemia 데이터에 9 분포 R + Python 적합 + AIC 비교 + Weibull plot 진단.

Statistics
Survival Analysis
Klein-Moeschberger
Parametric-Models
Mean-Residual-Life
저자

Kwangmin Kim

공개

2026년 04월 27일

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 모양 을 만드는지가 핵심.
§ 2.4~2.5 의 한 줄 요약

\(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

정의: 평균잔여수명 (Mean Residual Life Function)

비음수 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} \]

적분-by-parts 의 의의

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

분포의 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} \]

왜 median 이 mean 보다 자주 보고되는가?

생존시간 분포는 거의 항상 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

4 함수 동등성 정리

연속 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\).
“no-aging” 의미

50 세 노인과 갓난아기의 추가 평균 생존시간이 같다? 명백히 비현실적.

따라서 exponential 은:

  • 현실적 적합 사례: 방사성 동위원소 붕괴, 일부 전자부품, 매우 짧은 기간의 임상시험.
  • 부적합 사례: 인간 수명, 노화 관련 사건, 수술 후 회복.
  • historical 의의: 너무 단순하지만 수리적 단순성으로 1950~70 년대 신뢰성 공학에 광범위 사용. 이후 Weibull, log-normal 로 대체.
Empirical 적합 진단

\(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}\).
왜 Weibull 이 표준이 되었나?
  1. 유연성: \(\alpha\) 조정으로 단조 증가·감소·일정 모든 hazard 모양 표현.

  2. 수리적 단순성: \(S, h, f\) 모두 closed form.

  3. AFT + PH 동시 만족: Weibull 만이 AFT 와 PH 두 framework 모두에서 닫혀있음 (Klein § 2.6 에서 다룸).

  4. 임상 해석: \(\alpha\)노화 가속도.

    • \(\alpha = 1\): 노화 없음 (memoryless).
    • \(\alpha = 2\): 시간이 길어질수록 위험이 선형으로 증가.
    • \(\alpha = 5\): 수명 끝 무렵 위험 급증 (전형적 wear-out).
Weibull plot — 적합 진단

\(\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 vs Gamma
측면 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\).
왜 hump-shaped 가 비현실적인가?

장기 (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}\).
Log-normal vs Log-logistic
  • 모양: 두 분포 모두 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} \]
왜 인간 mortality 의 정전이 되었나?
  • 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) 이 도입.
인구 mortality 의 정통 모델

미국 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

  1. \(m(x) = E[X-x \mid X > x] = \int_x^\infty S(t)dt / S(x)\).
  2. \(\mu = m(0) = \int_0^\infty S(t)dt\) — 생존곡선 면적.
  3. pth quantile \(S(x_p) = 1 - p\), median \(x_{0.5}\).
  4. Median residual life mdrl(x) — censoring 에 robust.

4 함수 동등성

  1. \(S = \exp(-H), f = hS, h = -d\ln S/dx, m = \int S/S\) — 전체 변환표 (Klein Theoretical Note 2).

9 Parametric Models

  1. Exponential — constant hazard, memoryless.
  2. Weibull — \(\alpha\) shape: <1 DFR, =1 Exp, >1 IFR.
  3. Gamma — \(\beta\) shape, hazard \(\to \lambda\).
  4. Log-normal — hump but tail-zero (비현실적 long-term).
  5. Log-logistic — hump closed-form, proportional odds.
  6. Gompertz — exponential aging, 인구 mortality.
  7. Generalized gamma — super-family, model selection 용.
  8. Pareto — heavy tail, 보험·금융.
  9. Inverse Gaussian — first passage time.
  10. Exponential power — bathtub.

적합 진단

  1. Exp: \(H(t)\) vs \(t\) 직선.
  2. Weibull: \(\ln H\) vs \(\ln t\) 직선 (slope \(\alpha\)).
  3. AIC + Q-Q + deviance residual 종합 판정.

8 관련 주제

Klein 시리즈

Ch.1 시리즈

관련 개념 (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.

Subscribe

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