1 도입 — Ch.9의 도구들을 하나로 엮다
§9.2–9.4에서 개별적으로 학습한 세 도구를 정리하면:
| 도구 | 역할 |
|---|---|
| 시간의존 공변량 (§9.2) | 공변량 값이 시간에 따라 변하는 효과를 모형화한다 |
| 층화 (§9.3) | PH 위반 변수에 대해 별도의 기저 위험을 허용한다 |
| 좌절단 (§9.4) | 중간 사건 이후의 하위 집단만 분석한다 |
§9.5는 이 도구들을 통합(synthesis) 하여, 환자의 시간에 따른 이력(history) 이 예후 예측에 어떻게 반영되는지를 보여준다. 핵심 질문:
“현재까지 환자에게 일어난 모든 일을 알고 있을 때, 미래에 사건이 발생할 확률은 얼마인가?”
이것이 예측 과정(prediction process) \(\pi[s \mid H(t)]\) 이다 (Klein & Moeschberger, 2003, Ch.9).
2 이력 과정 (History Process)
2.1 정의
환자의 이력(history) \(H(t)\) 는 시점 \(t\) 까지 수집된 모든 정보를 의미한다:
- 고정 공변량: \(\mathbf{Z} = (Z_1, Z_2, \ldots)\) — 이식 시 측정된 변수
- 시간의존 공변량의 경로: \(\{Z_k(u),\; 0 \le u \le t\}\)
- 현재 상태: 생존 여부, 중간 사건 발생 여부
2.2 BMT 예시에서의 두 가지 이력
혈소판 회복을 고려할 때, 시점 \(t\) 에서 환자가 가질 수 있는 이력은 두 가지이다:
\[ H_1(t) = \{\mathbf{Z},\; T_P > t,\; X > t\} \quad \text{— 혈소판 아직 미회복, 생존 중} \]
\[ H_2(t) = \{\mathbf{Z},\; T_P \le t,\; X > t\} \quad \text{— 혈소판 이미 회복, 생존 중} \]
여기서 \(T_P\) 는 혈소판 회복 시점, \(X\) 는 사망/재발 시점이다.
이력은 단순한 현재 상태가 아니라, 그 상태에 도달하기까지의 경로 전체를 포함한다. 같은 “혈소판 회복” 상태라도, 2주 만에 회복한 환자와 10주 만에 회복한 환자의 예후는 다를 수 있다.
이력 과정 \(H = [H(t),\; 0 \le t < \infty]\) 은 환자의 상태가 시간에 따라 진화하는 확률 과정이다.
3 다상태 구조와 전이 위험률
3.1 상태 공간
BMT 예시의 다상태 구조:
h_P(t)
[이식 완료] ──────────────→ [혈소판 회복]
│ │
│ h₁(t) │ h₂(t)
│ │
▼ ▼
[사망/재발] [사망/재발]
세 가지 전이 위험률(transition hazard rate) :
| 위험률 | 의미 | 전이 |
|---|---|---|
| \(h_P(t)\) | 혈소판 회복 위험률 | 이식 → 회복 |
| \(h_1(t)\) | 회복 전 사망/재발 위험률 | 이식 → 사망 (회복 없이) |
| \(h_2(t)\) | 회복 후 사망/재발 위험률 | 회복 → 사망 |
이식 후 환자는 두 “출구” 중 하나로 먼저 나간다: 혈소판 회복( \(h_P\) ) 또는 회복 없이 사망( \(h_1\) ). 회복이 먼저 오면 새로운 상태에 진입하고, 이후 \(h_2\) 의 위험 아래 놓인다.
이것은 §2의 경쟁 위험(competing risks) 의 확장이다 — 다만 흡수 상태(사망)뿐 아니라 일시 상태(transient state, 혈소판 회복) 도 존재한다.
4 예측 과정 (Prediction Process)
4.1 정의 — \(\pi[s \mid H(t)]\)
\[ \pi[s \mid H(t)] = P(X \le s \mid H(t)) \]
이것은 “시점 \(t\) 에서의 이력 \(H(t)\) 가 주어졌을 때, 시점 \(s\) ( \(s > t\) )까지 사건이 발생할 확률”이다.
예측 과정은 세 가지 축에 따라 달라진다:
| 고정 | 변화 | 해석 |
|---|---|---|
| \(t\) , \(s\) | \(H\) (이력) | 서로 다른 이력을 가진 환자의 예후 비교 |
| \(H\) , \(s\) | \(t\) (관찰 시점) | 시간이 지나면서 예측이 어떻게 갱신되는지 |
| \(H\) , \(t\) | \(s\) (예측 지평) | 생존함수의 아날로그 — 사건 발생 분포 |
4.2 이력 \(H_2\) (회복 후) — 식 (9.5.1)
혈소판이 이미 회복된 환자의 예측 확률:
\[ \pi_2(s; t) = P(t < X \le s \mid T_P \le t, X > t) = \int_t^s h_2(r)\, \exp\!\left[-\int_t^r h_2(u)\, du\right] dr \]
\(\exp[-\int_t^r h_2(u)\, du]\) : 시점 \(t\) 부터 \(r\) 까지 사건 없이 생존할 확률.
\(h_2(r)\) : 시점 \(r\) 에서의 순간 사건 확률.
이 둘의 곱을 \(t\) 부터 \(s\) 까지 적분하면 = “생존하다가 정확히 시점 \(r\) 에서 사건이 발생” 하는 확률을 모든 가능한 \(r\) 에 대해 합산한 것이다. 이는 조건부 CDF \(F(s) - F(t) \mid\) survival to \(t\) 와 동일하다.
4.3 이력 \(H_1\) (미회복) — 식 (9.5.2)
혈소판이 아직 회복되지 않은 환자의 예측 확률:
\[ \pi_1(s; t) = \int_t^s \exp\!\left[-\int_t^r h_1(u)\, du - \int_t^r h_P(u)\, du\right] \bigl[h_1(r) + h_P(r)\, \pi_2(s, r)\bigr]\, dr \]
이 식은 환자가 시점 \(r\) 에서 어떤 일이 “처음” 발생하는 두 경로를 합산한다:
경로 A: 시점 \(r\) 에서 회복 없이 직접 사건 발생 → \(h_1(r)\)
경로 B: 시점 \(r\) 에서 혈소판 회복 → 이후 \(r\) 부터 \(s\) 사이에 사건 발생 → \(h_P(r) \cdot \pi_2(s, r)\)
지수 항 \(\exp[-\int_t^r (h_1 + h_P)\, du]\) 는 시점 \(t\) 부터 \(r\) 까지 아무 일도 일어나지 않을 확률이다 — 사건도, 회복도 일어나지 않아야 시점 \(r\) 에서 “처음” 전이가 가능하다.
이 구조는 전형적인 Chapman-Kolmogorov 방정식의 생존 분석 버전으로, 다상태 모형의 전이 확률을 재귀적으로 구성한다.
5 추정 — 두 가지 접근법
세 위험률 \(h_P\) , \(h_1\) , \(h_2\) 를 추정해야 \(\pi_1\) , \(\pi_2\) 를 계산할 수 있다.
5.1 공통: \(h_P\) 추정
혈소판 회복을 사건으로, 회복 전 사망/재발/연구 종료를 중도절단으로 처리하여 Cox 모형을 적합한다.
Table 9.10의 결과:
| 공변량 | \(b\) | SE\((b)\) | \(p\) |
|---|---|---|---|
| 환자 연령$-$28 | \(+0.036\) | 0.016 | 0.027 |
| 공여자 연령$-$28 | \(-0.026\) | 0.015 | 0.077 |
| 환자 \(\times\) 공여자 연령 | \(-0.003\) | 0.001 | 0.005 |
| MTX 사용 | \(-1.042\) | 0.223 | <0.0001 |
MTX 사용 시 혈소판 회복률이 \(e^{-1.042} = 0.35\) 배로 감소한다 — MTX의 골수 억제 효과를 반영한다.
Breslow 추정으로 누적 기저 위험 \(\hat{H}_{0P}(t)\) 를 구한다.
5.2 접근법 I: 시간의존 공변량 (비례위험 가정)
\(h_1\) 과 \(h_2\) 가 공통 기저 위험 \(h_0(t)\) 를 공유한다고 가정한다:
\[ h(t \mid \mathbf{Z}(u), 0 \le u \le t) = h_0(t) \exp\!\left[\sum_{j=1}^{12} \beta_j Z_j(t)\right] \]
12개의 시간의존 공변량 — 혈소판 회복 전( \(Z_1\)–\(Z_6\) )과 후( \(Z_7\)–\(Z_{12}\) )에 각각 활성화:
\[ = \begin{cases} h_0(t)\, \exp\!\left[\sum_{j=1}^6 \beta_j Z_j(t)\right] & t < T_P \\[6pt] h_0(t)\, \exp\!\left[\sum_{j=7}^{12} \beta_j Z_j(t)\right] & t \ge T_P \end{cases} \]
누적 위험 추정:
\[ \hat{H}_1(t) = \hat{H}_0(t) \exp\!\left[\sum_{j=1}^6 b_j Z_j\right], \quad \hat{H}_2(t) = \hat{H}_0(t) \exp\!\left[\sum_{j=7}^{12} b_j Z_j\right] \]
비례위험 가정 하에서 \(h_1\) 과 \(h_2\) 의 차이는 회귀 계수의 차이로만 설명된다. 단일 \(h_0(t)\) 를 추정하므로 통계적 정밀도(precision)가 높다 — 전체 사건을 모두 활용하기 때문이다.
단점: \(h_1\) 과 \(h_2\) 의 형태가 근본적으로 다를 때(비비례) 이 가정이 부적합할 수 있다.
5.3 접근법 II: 좌절단 (별도 기저 위험)
\(h_1\) 과 \(h_2\) 에 별도의 기저 위험 \(h_{01}(t)\) , \(h_{02}(t)\) 를 허용한다:
\(h_1\) 추정: 혈소판 회복 전 사망/재발을 사건, 회복 시점에서 중도절단
\[ h_1(t \mid \mathbf{Z}) = h_{01}(t) \exp(\boldsymbol{\beta}^\top \mathbf{Z}) \]
\(h_2\) 추정: 혈소판 회복 환자만 대상, 좌절단 편우도 (진입 시점 = \(T_P\) )
\[ h_2(t \mid \mathbf{Z}) = h_{02}(t) \exp(\boldsymbol{\alpha}^\top \mathbf{Z}), \quad t > T_P \]
회복 전후의 사망 메커니즘이 질적으로 다를 수 있다 — 초기에는 이식편 거부, 후기에는 재발이 주된 원인이다. 별도의 \(h_{01}\) , \(h_{02}\) 는 이런 이질성을 흡수한다.
단점: 각 구간의 사건 수가 적으면 추정 정밀도가 떨어진다.
5.4 두 접근법의 결과 비교 (Table 9.11)
| 효과 | 모형 I (비례위험) | 모형 II (좌절단) |
|---|---|---|
| 회복 전 — AML low-risk | \(1.54\) (p=0.016) | \(1.47\) (p=0.110) |
| 회복 전 — 환자 연령 | \(-0.160\) (p=0.003) | \(-0.162\) (p=0.009) |
| 회복 후 — AML low-risk | \(-1.76\) (p<0.0001) | \(-1.72\) (p<0.0001) |
| 회복 후 — FAB Grade 4/5 | \(1.22\) (p<0.0001) | \(1.21\) (p=0.0002) |
두 모형의 결과가 매우 유사하다 — 비례위험 가정이 합리적임을 시사한다. Figure 9.2에서도 기저 누적 위험의 형태가 거의 일치한다.
선택: 모형 I이 단일 기저 위험으로 더 높은 정밀도를 제공하므로 기본 선택으로 권장된다.
6 예측 과정의 이산 추정 — 식 (9.5.5)–(9.5.6)
실제 계산에서는 적분을 점프(jump) 합으로 대체한다:
\[ \hat{\pi}_2(s, t) = \sum_{i:\, t < r_i \le s} \exp\!\bigl\{-[\hat{H}_2(r_i) - \hat{H}_2(t)]\bigr\}\, \Delta\hat{H}_2(r_i) \]
\[ \hat{\pi}_1(s, t) = \sum_{i:\, t < r_i \le s} \exp\!\bigl\{-[\hat{H}_1(r_i) - \hat{H}_1(t)] - [\hat{H}_P(r_i) - \hat{H}_P(t)]\bigr\} \bigl[\Delta\hat{H}_1(r_i) + \Delta\hat{H}_P(r_i)\, \hat{\pi}_2(s, r_i)\bigr] \]
여기서 \(r_i\) 는 사건(사망, 재발, 회복) 시점, \(\Delta\hat{H}(r_i)\) 는 누적 위험의 점프 크기이다.
- \(\hat{\pi}_2\) 를 먼저 모든 격자점에서 계산한다 (오직 \(\hat{H}_2\) 만 필요).
- \(\hat{\pi}_1\) 을 계산할 때 \(\hat{\pi}_2(s, r_i)\) 를 호출한다 — 재귀적 구조.
- 결과적으로 “회복 후 사망 확률”이 “미회복 환자의 예측”에 내장된다.
7 임상적 해석 — BMT 데이터
7.1 혈소판 회복의 효과 (Figures 9.3–9.5)
\(\pi_1(2\text{yr}, t)\) vs \(\pi_2(2\text{yr}, t)\) 를 관찰 시점 \(t\) 의 함수로 비교한다:
| 질병 유형 | 회복의 영향 |
|---|---|
| ALL | 혈소판 회복 지연의 효과가 상대적으로 작다 |
| AML low-risk | 4주 이후 회복 지연 시 사망/재발 확률이 급격히 증가한다 |
| AML high-risk | 10–11주까지 회복 없으면 예후가 매우 불량하다 — 치료적 개입이 필요하다 |
7.2 동적 생존 예측 (Figures 9.6–9.8)
관찰 시점을 \(t_0 = 3, 7, 10\) 주로 고정하고, \(1 - \pi(s, t_0)\) 를 \(s\) 에 대해 그리면 “조건부 생존함수”가 된다:
- 3주 시점: 회복 여부에 따른 차이가 작다
- 7주 시점: MTX 투여 + 미회복 환자의 예후가 분리되기 시작한다
- 10주 시점: 미회복 환자(MTX 여부 무관)의 예후가 극적으로 나빠진다
이 분석은 실시간 의사결정 도구로 활용 가능하다: “이 환자의 현재 이력을 고려할 때, 향후 2년 내 사건 확률이 얼마인가?” → 임계값을 넘으면 추가 치료(second transplant, DLI 등)를 고려한다.
전통적 생존 분석이 “시점 0에서의 예후”만 제공하는 반면, 예측 과정은 환자의 경과에 따라 예후를 동적으로 갱신한다.
8 코드 예시
8.1 Step 1: 순수 Python으로 예측 과정 계산
import numpy as np
def compute_pi2(s, t, H2_times, H2_jumps, H2_cumulative):
"""
이력 H2 (혈소판 회복 후)의 예측 확률을 계산한다.
Parameters
----------
s : float - 예측 지평
t : float - 현재 시점 (이력 관찰 시점)
H2_times : array - 사건 시점들
H2_jumps : array - 각 시점에서의 H2 점프 크기
H2_cumulative : array - 누적 위험 H2(r_i)
"""
H2_t = np.interp(t, H2_times, H2_cumulative)
pi2 = 0.0
for i, r_i in enumerate(H2_times):
if t < r_i <= s:
survival_t_to_ri = np.exp(-(H2_cumulative[i] - H2_t))
pi2 += survival_t_to_ri * H2_jumps[i]
return pi2
def compute_pi1(s, t, H1_times, H1_jumps, H1_cumulative,
HP_times, HP_jumps, HP_cumulative,
H2_times, H2_jumps, H2_cumulative):
"""
이력 H1 (혈소판 미회복)의 예측 확률을 계산한다.
"""
H1_t = np.interp(t, H1_times, H1_cumulative)
HP_t = np.interp(t, HP_times, HP_cumulative)
# 모든 사건/회복 시점을 합친다
all_times = sorted(set(
list(H1_times) + list(HP_times)
))
pi1 = 0.0
for r_i in all_times:
if t < r_i <= s:
H1_ri = np.interp(r_i, H1_times, H1_cumulative)
HP_ri = np.interp(r_i, HP_times, HP_cumulative)
# 아무 일도 안 일어날 확률
surv = np.exp(-(H1_ri - H1_t) - (HP_ri - HP_t))
# H1의 점프 (직접 사건)
dH1 = 0.0
idx = np.searchsorted(H1_times, r_i)
if idx < len(H1_times) and H1_times[idx] == r_i:
dH1 = H1_jumps[idx]
# HP의 점프 (혈소판 회복) × 이후 사건 확률
dHP = 0.0
idx = np.searchsorted(HP_times, r_i)
if idx < len(HP_times) and HP_times[idx] == r_i:
dHP = HP_jumps[idx]
pi2_s_ri = compute_pi2(s, r_i, H2_times, H2_jumps, H2_cumulative)
pi1 += surv * (dH1 + dHP * pi2_s_ri)
return pi1
# 가상 데이터로 시연
H2_times = np.array([5, 10, 15, 20, 30, 40, 50])
H2_jumps = np.array([0.02, 0.03, 0.02, 0.04, 0.03, 0.02, 0.01])
H2_cumulative = np.cumsum(H2_jumps)
H1_times = np.array([3, 7, 12, 18, 25])
H1_jumps = np.array([0.05, 0.06, 0.04, 0.03, 0.02])
H1_cumulative = np.cumsum(H1_jumps)
HP_times = np.array([5, 8, 12, 16, 20])
HP_jumps = np.array([0.10, 0.15, 0.10, 0.08, 0.05])
HP_cumulative = np.cumsum(HP_jumps)
# 예측: 현재 3주, 2년(104주) 이내 사건 확률
s, t = 104, 3
pi2_val = compute_pi2(s, t, H2_times, H2_jumps, H2_cumulative)
pi1_val = compute_pi1(s, t, H1_times, H1_jumps, H1_cumulative,
HP_times, HP_jumps, HP_cumulative,
H2_times, H2_jumps, H2_cumulative)
print(f"pi2(s={s}, t={t}) = {pi2_val:.4f} (회복 후 사건 확률)")
print(f"pi1(s={s}, t={t}) = {pi1_val:.4f} (미회복 시 사건 확률)")
print(f"차이: 미회복이 {pi1_val - pi2_val:.4f} 더 높다")8.2 Step 2: R mstate / survival 패키지
library(survival)
library(mstate)
# --- 다상태 구조 정의 ---
tmat <- transMat(
x = list(c(2, 3), c(3), c()), # 1→2, 1→3, 2→3
names = c("Transplant", "Platelet Recovery", "Death/Relapse")
)
print(tmat)
# --- 데이터를 long format으로 변환 ---
# msdata: (id, from, to, trans, Tstart, Tstop, status, covariates)
bmt_ms <- msprep(
time = c(NA, "time_platelet", "time_event"),
status = c(NA, "platelet_status", "event_status"),
data = bmt,
trans = tmat
)
# 공변량 추가
bmt_ms <- expand.covs(bmt_ms, covs = c("z1", "z3", "age_patient"))
# --- 전이별 Cox 모형 적합 ---
cox_ms <- coxph(
Surv(Tstart, Tstop, status) ~ z1.1 + z1.2 + z1.3 +
z3.1 + z3.2 + z3.3 + age_patient.1 + age_patient.2 + age_patient.3 +
strata(trans),
data = bmt_ms
)
summary(cox_ms)
# --- 누적 위험 및 전이 확률 계산 ---
# 새 환자 프로필 (AML low-risk, 28세, FAB 정상)
newdata <- data.frame(
z1.1 = 1, z1.2 = 1, z1.3 = 1,
z3.1 = 0, z3.2 = 0, z3.3 = 0,
age_patient.1 = 0, age_patient.2 = 0, age_patient.3 = 0,
trans = 1:3, strata = 1:3
)
# msfit: 누적 위험 추정
msf <- msfit(cox_ms, newdata = newdata, trans = tmat)
# probtrans: 전이 확률 P(state at s | state at t)
pt <- probtrans(msf, predt = 0) # 시점 0에서의 예측
summary(pt, from = 1) # 상태 1에서 출발
# 동적 예측: 시점 t=3주에서
pt3 <- probtrans(msf, predt = 3)
plot(pt3, from = 1, main = "Prediction from week 3")9 §9.6 연습문제 — 핵심 문제 풀이
9.1 Exercise 9.1: PH 가정 검정 (Tongue Cancer)
문제: 혀암 데이터에서 ploidy( \(Z_1\) : aneuploid=1, diploid=0)에 대해 PH 가정을 검정하라.
풀이:
인위적 시간의존 공변량 \(Z_2(t) = Z_1 \times \ln t\) 를 생성하고, \(Z_1\) 과 \(Z_2(t)\) 를 함께 모형에 넣는다:
\[ h(t \mid Z_1) = h_0(t) \exp[\beta_1 Z_1 + \beta_2 (Z_1 \cdot \ln t)] \]
\(H_0: \beta_2 = 0\) 을 검정한다.
library(survival)
tongue <- read.csv("tongue.csv")
# PH 검정: Z × ln(t) 시간의존 공변량
fit_ph <- coxph(
Surv(time, event) ~ ploidy + tt(ploidy),
data = tongue,
tt = function(x, t, ...) x * log(t)
)
summary(fit_ph) # tt(ploidy)의 p-value 확인\(\beta_2\) 의 Wald p-value가 0.05 이상이면 PH 가정을 기각할 수 없다.
9.2 Exercise 9.3: 위암 변환점 모형
문제: 화학요법 단독 vs 화학요법+방사선 비교. PH 위반 시 변환점 모형을 적용하라.
풀이 (c): 변환점 \(\tau\) 를 최적화한다.
# 모든 사건 시점에서 tau 후보 설정
event_times <- sort(unique(gastric$time[gastric$event == 1]))
# 각 tau에서 로그 편우도 계산
log_liks <- sapply(event_times, function(tau) {
gastric$z1_t <- with(gastric, ifelse(chemo == 1 & time <= tau, 1, 0))
gastric$z2_t <- with(gastric, ifelse(chemo == 1 & time > tau, 1, 0))
fit <- coxph(Surv(time, event) ~ z1_t + z2_t, data = gastric)
fit$loglik[2]
})
# 최적 tau
optimal_tau <- event_times[which.max(log_liks)]
cat("Optimal tau =", optimal_tau, "\n")
# 최종 모형 적합
gastric$z1_opt <- with(gastric, ifelse(chemo == 1 & time <= optimal_tau, 1, 0))
gastric$z2_opt <- with(gastric, ifelse(chemo == 1 & time > optimal_tau, 1, 0))
fit_final <- coxph(Surv(time, event) ~ z1_opt + z2_opt, data = gastric)
summary(fit_final)해석: \(e^{\theta_3}\) (≤τ 구간)과 \(e^{\theta_2}\) (>τ 구간)을 비교하여, 치료 효과가 초기/후기에 어떻게 다른지 보고한다.
9.3 Exercise 9.5: 후두암 층화 모형
문제: 1975년 이전/이후 진단으로 층화하고, 병기(stage)와 연령의 효과를 추정하라.
# (a) 층화 모형
fit_strat <- coxph(
Surv(time, event) ~ stage2 + stage3 + stage4 + age + strata(era),
data = larynx
)
# (b) 공통 beta 검정 — 우도비
fit_pre <- coxph(Surv(time, event) ~ stage2+stage3+stage4+age,
data = larynx, subset = (era == "pre1975"))
fit_post <- coxph(Surv(time, event) ~ stage2+stage3+stage4+age,
data = larynx, subset = (era == "post1975"))
lr <- -2 * (fit_strat$loglik[2] - (fit_pre$loglik[2] + fit_post$loglik[2]))
pval <- pchisq(lr, df = 4, lower.tail = FALSE)
cat("LR =", lr, ", p =", pval, "\n")10 요약 — §9.5–9.6 핵심 흐름
§9.2 시간의존 공변량 + §9.3 층화 + §9.4 좌절단
│
▼ 통합 (synthesis)
│
다상태 모형 (§9.5)
├─ 상태 공간: 이식 → 회복 → 사망/재발
├─ 전이 위험률: h_P, h₁, h₂
├─ 이력 과정: H(t) = {고정 공변량, 시간의존 경로, 현재 상태}
│
└─ 예측 과정: π[s|H(t)]
├─ π₂: 회복 후 → 단순 조건부 CDF
├─ π₁: 미회복 → 재귀적 (π₂를 내장)
│
├─ 접근법 I: 시간의존 공변량 (공통 h₀) — 높은 정밀도
└─ 접근법 II: 좌절단 (별도 h₀₁, h₀₂) — 유연성
§9.6 연습문제
├─ PH 검정: Z×ln(t) 시간의존 공변량 (Ex 9.1, 9.2)
├─ 변환점 모형: tau 최적화 (Ex 9.3)
├─ GVHD 시간의존 분석 (Ex 9.4)
└─ 층화 + 공통β 검정 (Ex 9.5, 9.6)
11 관련 주제
선행 지식
- § 9.1–9.2 — Time-Dependent Covariates
- § 9.3–9.4 — Stratified Cox & Left Truncation
- Ch.9 — Refinements Overview
후속 주제
관련 개념