§ 9.5–9.6 — Multistate Modeling & Prediction Process

다상태 모형 · 이력 과정(history process) · 예측 확률 π[s|H(t)] · Ch.9 연습문제

시간의존 공변량과 좌절단을 결합하여 환자의 이력에 기반한 동적 예측을 수행하는 다상태 모형(multistate model)과 예측 과정(prediction process)을 다룬다. BMT 데이터에서 두 접근법(비례위험 모형 I vs 좌절단 모형 II)의 수식·추정·비교를 상세히 전개하고, Ch.9 연습문제 중 핵심 문제의 풀이를 제시한다. Klein Ch.9 (§9.5–9.6) 기반.

Statistics
Survival Analysis
저자

Kwangmin Kim

공개

2026년 04월 28일

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)\) 는 누적 위험의 점프 크기이다.

계산 직관
  1. \(\hat{\pi}_2\)먼저 모든 격자점에서 계산한다 (오직 \(\hat{H}_2\) 만 필요).
  2. \(\hat{\pi}_1\) 을 계산할 때 \(\hat{\pi}_2(s, r_i)\)호출한다 — 재귀적 구조.
  3. 결과적으로 “회복 후 사망 확률”이 “미회복 환자의 예측”에 내장된다.

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 관련 주제

선행 지식

후속 주제

관련 개념

Subscribe

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