Ch.9 — Refinements of the Semiparametric Proportional Hazards Model

시간의존 공변량 · 층화 Cox · 좌절단 · 다상태 모형 (Overview)

Cox PH 모형의 네 가지 정교화를 개관한다. 시간의존 공변량(internal/external), 층화 비례위험 모형, 좌절단 회귀, 다상태 모형(prediction process)의 수식·직관·연결 관계를 정리하고, 각 확장이 해결하는 문제와 실무 적용 맥락을 제시한다.

Statistics
Survival Analysis
저자

Kwangmin Kim

공개

2026년 04월 28일

1 왜 Ch.8의 Cox 모형을 넘어서야 하는가

Ch.8에서 다룬 표준 Cox 모형은 고정 시점 공변량(fixed-time covariates) 만을 허용한다. 연구 시작 시점에 측정한 변수(성별, 질병 유형 등)만 모형에 포함되며, 그 값은 추적 기간 동안 변하지 않는다.

그러나 실제 생존 연구에서는 다음과 같은 상황이 빈번하다:

한계 상황 예시 Ch.9 해법
공변량 값이 시간에 따라 변한다 혈소판 회복, 혈압, 종양 크기 시간의존 공변량 (§ 9.2)
특정 변수에 대해 PH 가정이 깨진다 MTX 투여 여부의 비비례 위험 층화 모형 (§ 9.3)
관찰 시작 시점이 사건 시간 원점과 다르다 은퇴 커뮤니티 입소 후 관찰 시작 좌절단 (§ 9.4)
환자가 여러 상태를 거치며 예후가 변한다 이식 → 혈소판 회복 → 재발/사망 다상태 모형 (§ 9.5)

이 네 확장은 독립적이면서 동시에 서로 결합된다. 예를 들어 골수이식(BMT) 사례에서는 시간의존 공변량 + 층화 + 좌절단 + 다상태 예측을 모두 활용하여 환자별 조건부 생존 확률을 실시간으로 갱신한다.


2 시간의존 공변량 (§ 9.2)

2.1 기본 모형

Ch.8의 Cox 모형(식 8.1.2)에서 고정 공변량 \(\mathbf{Z}\) 를 시간의 함수 \(\mathbf{Z}(t)\) 로 대체한다:

\[ h[t \mid \mathbf{Z}(t)] = h_0(t) \exp[\boldsymbol{\beta}^\top \mathbf{Z}(t)] \]

직관적으로, 이 모형은 “시점 \(t\) 에서의 위험률은 바로 그 시점의 공변량 값에 의해 결정된다”고 말한다. 혈소판이 아직 회복되지 않은 환자와 이미 회복된 환자는 같은 시점이라도 서로 다른 위험을 가진다.

2.2 편우도(Partial Likelihood) 확장

편우도 식 역시 자연스럽게 확장된다. 사건 시점 \(t_i\) 에서 실패한 개인의 공변량 값 \(\mathbf{Z}_{(i)}(t_i)\) 와 위험집합 \(R(t_i)\) 내 모든 개인의 해당 시점 공변량 값을 사용한다:

\[ L(\boldsymbol{\beta}) = \prod_{i=1}^{D} \frac{\exp[\boldsymbol{\beta}^\top \mathbf{Z}_{(i)}(t_i)]}{\sum_{j \in R(t_i)} \exp[\boldsymbol{\beta}^\top \mathbf{Z}_j(t_i)]} \]

핵심은 분자·분모 모두 사건 시점 \(t_i\) 에서의 공변량 값을 사용한다는 점이다. Ch.8에서는 \(\mathbf{Z}_j\) 가 상수였기 때문에 시점에 무관했지만, 이제는 각 사건 시점마다 위험집합 구성원의 공변량을 재평가한다.

2.3 외부 vs 내부 공변량

정의: External vs Internal Covariates (Kalbfleisch & Prentice, 1980)
  • 외부 공변량(External): 값이 실패 과정과 독립인 공변량. 고정 시점 공변량, 계획된 치료 스케줄, 기온 등 외부 확률 과정의 출력이 해당한다.
  • 내부 공변량(Internal): 개인이 관찰 중일 때만 측정 가능한 공변량. 혈소판 회복 시점, aGVHD 발생 여부 등이 해당한다. \(P[X \geq t \mid Z(t)] = 1\) 이므로 조건부 생존함수를 정의할 수 없다.

이 구분이 중요한 이유: 외부 공변량이면 Ch.8과 동일하게 생존함수를 추정할 수 있다. 내부 공변량이면 편우도 추정은 여전히 유효하지만, \(S(t \mid \mathbf{Z}(t))\) 를 직접 추정하는 것은 불가능하다 — 대신 § 9.5의 다상태 예측 접근이 필요하다.

2.4 PH 가정 검정에의 활용

시간의존 공변량의 또 다른 중요한 용도는 비례위험 가정의 형식적 검정이다. 고정 공변량 \(Z_1\) 에 대해 인위적으로

\[ Z_2(t) = Z_1 \times g(t) \]

를 생성한다 (보통 \(g(t) = \ln t\) ). 이 모형에서 두 개인의 위험비는

\[ \frac{h(t \mid Z_1)}{h(t \mid Z_1^*)} = \exp\{\beta_1[Z_1 - Z_1^*] + \beta_2 g(t)[Z_1 - Z_1^*]\} \]

이 되어 \(\beta_2 \neq 0\) 이면 위험비가 시간에 따라 변한다 — 즉 PH 가정이 위반된다. 따라서 \(H_0: \beta_2 = 0\) 검정은 해당 공변량의 PH 가정 검정이다.

직관적으로: “\(\ln t\) 와 상호작용하는 효과가 유의하다면, 그 변수의 효과가 시간이 지남에 따라 강해지거나 약해지고 있다”는 뜻이다.

BMT 예제 결과: Klein Example 9.1에서 MTX(이식편대숙주 예방약) 변수만 PH 가정을 위반했다 (Wald \(\chi^2 = 4.32\), \(p = 0.038\) ). 이 결과는 § 9.3에서 MTX로 층화하는 근거가 된다.

2.5 Change-Point 모형

\(g(t)\) 의 함수형을 모를 때, 시점 \(\tau\) 를 기준으로 위험비를 조각별 상수(piecewise constant)로 모형화할 수 있다:

\[ h[t \mid Z(t)] = \begin{cases} h_0(t) \exp(\beta_1 Z_1) & t \leq \tau \\ h_0(t) \exp[(\beta_1 + \beta_2) Z_1] & t > \tau \end{cases} \]

\(\exp(\beta_1)\)\(\tau\) 이전의 위험비, \(\exp(\beta_1 + \beta_2)\)\(\tau\) 이후의 위험비이다. 최적 \(\tau\) 는 모든 사건 시점에 대해 편우도를 최대화하는 값으로 결정한다.

Kidney Dialysis 예제 (Example 9.2): 경피적(percutaneous) vs 외과적(surgical) 카테터 삽입에서 \(\tau = 3.5\) 개월이 최적이었다. 3.5개월 이전에는 경피적 카테터 환자가 크게 유리했으나 (\(RR = 0.124\), \(p = 0.006\) ), 이후에는 두 군 간 차이가 없었다 (\(p = 0.167\) ).


3 층화 비례위험 모형 (§ 9.3)

3.1 동기와 모형

PH 가정이 깨진 변수가 있을 때, 그 변수로 층화(stratification) 하면 각 층에서 서로 다른 기저 위험함수를 허용하면서 나머지 공변량의 효과는 공통으로 추정할 수 있다:

\[ h_j[t \mid \mathbf{Z}(t)] = h_{0j}(t) \exp[\boldsymbol{\beta}^\top \mathbf{Z}(t)], \quad j = 1, \ldots, s \]

직관적으로: “MTX를 받은 군과 안 받은 군은 위험의 ’바닥 깔개’가 다르다 — 하지만 위에 얹히는 공변량 효과(질병 유형, 나이 등)는 두 군에서 동일하게 작용한다”고 가정한다.

3.2 편우도 구성

층화 편우도는 각 층 내 편우도의 으로 구성된다:

\[ LL(\boldsymbol{\beta}) = LL_1(\boldsymbol{\beta}) + LL_2(\boldsymbol{\beta}) + \cdots + LL_s(\boldsymbol{\beta}) \]

\(LL_j(\boldsymbol{\beta})\) 는 해당 층의 데이터만 사용하여 Ch.8의 식 8.3.2로 계산한다. 위험집합은 층 내에서만 형성된다. 추정과 검정은 이 합산 우도의 미분을 구해 Newton-Raphson으로 수행한다.

3.3 핵심 가정과 검정

핵심 가정: 공변량 효과 \(\boldsymbol{\beta}\) 가 모든 층에서 동일하다.

이를 검정하려면:

  1. 우도비 검정: 공통 \(\boldsymbol{\beta}\) 모형의 \(LL(\hat{\boldsymbol{\beta}})\) vs 각 층에서 독립적으로 추정한 \(\sum_j LL_j(\hat{\boldsymbol{\beta}}_j)\) 를 비교한다. 자유도는 \((s-1)p\) 이다.
  2. Wald 검정: 서로 다른 층의 추정치 \(\hat{\boldsymbol{\beta}}_1, \hat{\boldsymbol{\beta}}_2, \ldots\) 는 점근적으로 독립이므로, 대비 행렬(contrast matrix)을 이용하여 동일성을 검정한다.

BMT 예제 결과: MTX 사용 여부로 층화한 후 우도비 \(\chi^2 = 6.09\) (df=7, \(p = 0.53\) ) — 두 층에서 공변량 효과가 동일하다는 증거가 충분하다. 층화 모형이 적절하다.

3.4 짝진 실험에의 적용

층화 Cox 모형은 matched pair 설계에도 적용된다. 각 쌍을 하나의 층으로 정의하면, 짝짓기에 사용된 변수는 기저 위험함수의 차이로 자연스럽게 보정된다.

6-MP 예제 (Example 9.3): 21쌍의 백혈병 환자에서 \(\hat{\beta} = -1.792\) (SE = 0.624), \(RR = 0.167\) (95% CI: [0.049, 0.566]). 위약 환자는 6-MP 환자보다 재발 위험이 2~20배 높다.


4 좌절단 (§ 9.4)

4.1 문제 설정

좌절단(left truncation)은 개인이 시간 \(V\) 이후에야 관찰에 진입하는 경우이다. 대표적 상황:

  • 연령 기반 분석: 은퇴 커뮤니티 입소 나이 이후부터만 관찰 (Channing House 예제)
  • 중간 사건 조건부 분석: 혈소판 회복 환자만 대상으로 이후 생존 분석 (BMT 예제)

4.2 위험집합 재정의

좌절단의 처리는 매우 간단하다: 위험집합 \(R(t)\) 를 재정의하면 된다.

\[ R(t) = \{j \mid V_j < t \leq T_j\} \]

즉, 시점 \(t\) 의 위험집합에는 (1) 이미 관찰에 진입했고 (\(V_j < t\) ), (2) 아직 사건이나 중도절단이 발생하지 않은 (\(t \leq T_j\) ) 개인만 포함된다. 이 재정의를 편우도에 적용하면, Ch.8과 동일한 추정·검정 절차를 그대로 사용할 수 있다.

직관적으로: “아직 무대에 올라오지 않은 배우는 위험에 노출되지 않으므로 분모에서 제외한다.”

4.3 조건부 독립 가정

핵심 가정

사건 시간 \(X\) 와 진입 시간 \(V\) 가 공변량 \(\mathbf{Z}\) 가 주어졌을 때 조건부 독립이어야 한다:

\[ X \perp V \mid \mathbf{Z} \]

이 가정 하에서 조건부 위험 \(h(t \mid \mathbf{Z}, X > V)\) 과 비조건부 위험 \(h(t \mid \mathbf{Z})\) 가 동일해진다 (Andersen et al., 1993).

이 가정이 위반되면 (예: 건강한 사람만 오래 살아서 커뮤니티에 입소) 추정량에 편향이 생긴다.

4.4 실무 주의점

  • 나이를 공변량으로 넣지 말고 좌절단점으로 사용: 나이가 사건 시간의 척도(time scale)일 때, 나이를 좌절단점으로 처리하면 공변량에서 제외해도 된다.
  • 생존함수 추정: 고정 공변량만 있는 좌절단 Cox 모형에서는 § 8.8의 방법으로 생존함수를 추정할 수 있다.

Channing House 예제 (Example 9.4): 성별 계수 \(\hat{\beta} = 0.316\) (SE = 0.173, \(p = 0.068\) ) — 남녀 간 생존 차이가 유의하지 않다.

BMT 예제 (Example 9.5): 혈소판 회복 환자만 대상으로 MTX 층화 Cox 모형을 적합. AML low-risk 그룹이 회복 후 현저히 유리하다 (\(\hat{\beta}_1 = -1.752\), \(p < 0.0001\) ).


5 시간 변동 효과의 종합 — 다상태 모형 (§ 9.5)

5.1 동기: 환자 이력에 기반한 예측

앞선 세 가지 확장(시간의존 공변량, 층화, 좌절단)을 결합하면, 환자의 이력(history)이 축적됨에 따라 예후 예측을 실시간으로 갱신하는 시스템을 구축할 수 있다.

5.2 이력 과정(History Process)

환자의 이력 \(H(t)\) 는 시점 \(t\) 까지 수집된 모든 정보이다:

  • 고정 시점 공변량 (질병 유형, 나이 등)
  • 시간의존 공변량의 전체 궤적 (\(\mathbf{Z}(u), 0 \leq u \leq t\) )
  • 환자가 아직 사건 없이 생존 중이라는 사실

BMT 예제에서 두 가지 이력이 가능하다:

\[ H_1(t) = \{\mathbf{Z},\; T_p > t,\; X > t\} \quad \text{(혈소판 미회복 상태로 생존 중)} \]

\[ H_2(t) = \{\mathbf{Z},\; T_p \leq t,\; X > t\} \quad \text{(혈소판 회복 후 생존 중)} \]

5.3 예측 과정(Prediction Process)

예측 과정 \(\pi[s \mid H(t)]\) 는 시점 \(t\) 까지의 이력이 주어졌을 때, 시점 \(s\) 까지 사건(재발/사망)이 발생할 확률이다:

\[ \pi[s \mid H(t)] = P(t < X \leq s \mid H(t)) \]

이 함수는 세 가지 축으로 활용된다:

고정 변동 해석
\(t\), \(s\) \(H\) 서로 다른 환자 이력이 예후에 미치는 영향 비교
\(H\), \(s\) \(t\) 정보가 축적됨에 따라 예측이 어떻게 갱신되는지 추적
\(H\), \(t\) \(s\) 조건부 생존곡선의 아날로그

5.4 세 위험률과 추정

다상태 전이 구조(Figure 9.1: 이식 → 혈소판 회복 / 재발·사망):

  • \(h_p(t)\): 혈소판 회복의 위험률
  • \(h_1(t)\): 혈소판 미회복 상태에서의 사망/재발 위험률
  • \(h_2(t)\): 혈소판 회복 후의 사망/재발 위험률

혈소판 회복 후 이력 \(H_2(t)\) 의 예측:

\[ \pi_2(s; 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]\) 동안의 실패 확률을 얻는다.

혈소판 미회복 이력 \(H_1(t)\) 의 예측:

\[ \pi_1(s; t) = \int_t^s \exp\left[-\int_t^r [h_1(u) + h_p(u)]\,du\right] \left[h_1(r) + h_p(r)\,\pi_2(s, r)\right] dr \]

이 식은 두 경로를 동시에 고려한다:

  1. 시점 \(r\) 에서 직접 사망/재발 (\(h_1(r)\) )
  2. 시점 \(r\) 에서 혈소판이 회복되고(\(h_p(r)\) ), 이후 \(r\) ~ \(s\) 사이에 사망/재발 (\(\pi_2(s, r)\) )

5.5 추정 접근법

접근법 가정 방법
Model I: 시간의존 공변량 \(h_1\)\(h_2\) 사이에 비례위험 12개 시간의존 공변량으로 단일 Cox 모형
Model II: 좌절단 \(h_1\)\(h_2\) 가 완전히 별개 혈소판 회복 후 데이터를 좌절단으로 처리하여 별도 Cox 모형

Model I은 기저 위험 \(h_0(t)\) 를 하나만 추정하므로 효율적이지만, \(h_1\)\(h_2\) 의 비례 가정이 필요하다. Model II는 각 상태에서 완전히 독립적인 기저 위험을 허용하므로 더 유연하다.


6 네 확장의 관계 — 통일적 관점

          ┌───────────────────────────────────────────────┐
          │            표준 Cox PH (Ch.8)                   │
          │   h(t|Z) = h₀(t) exp(β'Z), Z 고정             │
          └───────────────┬───────────────────────────────┘
                          │
        ┌─────────────────┼─────────────────────┐
        ↓                 ↓                     ↓
  ┌──────────┐    ┌──────────────┐    ┌──────────────┐
  │ § 9.2    │    │ § 9.3        │    │ § 9.4        │
  │ Z → Z(t) │    │ h₀ → h₀ⱼ(t) │    │ R(t) 재정의  │
  │ 시간의존  │    │ 층화         │    │ 좌절단       │
  └─────┬────┘    └──────┬───────┘    └──────┬───────┘
        │                │                    │
        └────────────────┴────────────────────┘
                         ↓
               ┌──────────────────┐
               │ § 9.5 다상태 모형 │
               │ 세 확장을 결합    │
               │ π[s|H(t)] 예측   │
               └──────────────────┘
  • § 9.2는 모형의 공변량 공간을 확장한다 (시간 방향으로).
  • § 9.3은 모형의 기저 위험 공간을 확장한다 (층별로 다른 \(h_0\) ).
  • § 9.4위험집합의 정의를 확장한다 (지연 진입 허용).
  • § 9.5는 위 세 확장을 조합하여 환자 이력 조건부 예측을 가능하게 한다.

7 응용 분야

분야 § 9.2 § 9.3 § 9.4 § 9.5
종양학 — BMT 후 예후 예측 혈소판 회복, aGVHD 발생 MTX 사용 여부 회복 환자 조건부 분석 실시간 생존 예측
신장학 — 카테터 감염 카테터 교체 삽입 방법 비비례 → 층화
노인의학 — 은퇴 커뮤니티 입소 나이 좌절단
임상시험 — 짝진 설계 쌍 번호로 층화
당뇨 — 망막병증 시력 변화 추적 상태 전이 예측

8 실무 주의사항 (Practical Notes)

  • 시간의존 공변량이 포함되면 위험비(hazard ratio)가 시간에 따라 변한다 — 단일 RR 숫자로 요약할 수 없다.
  • 내부 공변량이 있으면 전통적 생존함수 \(S(t)\) 를 추정할 수 없다. 대신 다상태 예측 과정 \(\pi[s \mid H(t)]\) 를 사용한다.
  • 데이터 구조는 (시작, 끝] 시간 구간 형식으로 분할하여, 각 구간 내에서 공변량이 상수가 되도록 한다 (계수과정 형식).
  • 층화 모형에서 검정의 검정력은 모든 층에서 대립가설 방향이 동일할 때 최대이다.
  • 좌절단에서 나이를 사건 시간 척도로 사용하면, 나이를 공변량으로 중복 투입하지 않는다.

9 코드 예시: 시간의존 공변량 + 층화 Cox 모형

9.1 Step 1: 순수 Python 구현 (편우도 원리)

import numpy as np

def partial_log_likelihood_td(beta, data):
    """시간의존 공변량이 포함된 편우도의 로그값 계산.
    
    data: list of dicts with keys
      - 'time': 사건/중도절단 시점
      - 'event': 1 if event, 0 if censored
      - 'Z_at_event': 사건 시점에서의 공변량 벡터
      - 'risk_set_Z': 위험집합 구성원들의 해당 시점 공변량 행렬
    """
    ll = 0.0
    for obs in data:
        if obs['event'] == 1:
            # 분자: 실패 개인의 exp(beta'Z(t_i))
            numerator = np.dot(beta, obs['Z_at_event'])
            # 분모: 위험집합 내 모든 개인의 exp(beta'Z_j(t_i)) 합
            risk_scores = obs['risk_set_Z'] @ beta
            denominator = np.log(np.sum(np.exp(risk_scores)))
            ll += numerator - denominator
    return ll

# 층화: 각 층의 로그 편우도를 합산
def stratified_partial_ll(beta, strata_data):
    """층화 편우도 = sum of stratum-specific partial log-likelihoods."""
    return sum(partial_log_likelihood_td(beta, stratum) for stratum in strata_data)

9.2 Step 2: lifelines / R survival 패키지 (실무)

from lifelines import CoxPHFitter
import pandas as pd

# 시간의존 공변량: (start, stop] 형식으로 데이터 변환
# 각 행은 한 구간을 나타내며, 구간 내 공변량은 상수
df = pd.DataFrame({
    'id': [1, 1, 2, 2, 2],
    'start': [0, 15, 0, 8, 20],
    'stop': [15, 47, 8, 20, 35],
    'event': [0, 1, 0, 0, 1],
    'platelet_recovered': [0, 1, 0, 0, 1],
    'group': [1, 1, 0, 0, 0],
    'strata_mtx': [0, 0, 1, 1, 1]
})

cph = CoxPHFitter()
cph.fit(
    df,
    duration_col='stop',
    event_col='event',
    entry_col='start',       # 좌절단/시간의존 공변량 → entry 지정
    strata=['strata_mtx'],   # MTX로 층화
    formula='platelet_recovered + group'
)
cph.print_summary()
# R: survival 패키지
library(survival)

# (tstart, tstop] 형식 + strata
fit <- coxph(
  Surv(tstart, tstop, event) ~ platelet_recovered + group + strata(mtx),
  data = bmt_long
)
summary(fit)

10 관련 주제

선행 지식

후속 주제 (Ch.9 세부 포스트)

  • § 9.2 시간의존 공변량 상세 — PH 검정, change-point, BMT 상호작용 (예정)
  • § 9.3 층화 Cox 모형 상세 — 동일 효과 검정, matched pair (예정)
  • § 9.4 좌절단 회귀 상세 — Channing House, BMT 조건부 분석 (예정)
  • § 9.5 다상태 모형 상세 — 예측 과정, Model I vs II 비교 (예정)

관련 개념

Subscribe

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