Klein § 7.3~7.4 — K-Sample Tests · Trend Tests

§ 7.3 K-Sample Tests — H_0: h_1=…=h_K · 식 7.3.2 일반 / 식 7.3.3 표준 형태 Z_j = ∑ W [d_ij - Y_ij d_i/Y_i] · 식 7.3.4·5 multinomial 분산·공분산 + tie correction (Y_i-d_i)/(Y_i-1) · 식 7.3.6 χ² (K-1 df) / 6 weight 가족 — log-rank W=1 (PH 최적·Lehmann alternative S_j = S^θ_j) · Gehan W=Y_i (초기·censoring 패턴 민감) · Tarone-Ware W=√Y_i (절충) · Peto-Peto W=S̃ (식 7.3.8 modified KM) · Andersen 수정 W=S̃ Y_i/(Y_i+1) (predictable) · Fleming-Harrington W=Ŝ^p (1-Ŝ)^q (식 7.3.9, p,q 자유 조절) / Klein Example 7.2 dialysis 두 군 8 weight 비교 (log-rank Z=1.59 p=0.11 vs FH p=0,q=1 χ²=9.67 p=0.002 — crossing hazards 의 정전 사례) · Example 7.3 Channing 좌절단 (Z=1.82) · Example 7.4 BMT 3 그룹 (χ²=13.80, 다양 weight) · Example 7.5 BMT auto vs allo crossing (FH p=0,q=1 으로 검출, log-rank 실패) / § 7.4 Trend Test — ordered alternative · 식 7.4.2 Z = ∑ a_j Z_j / √(∑∑ a_j a_g σ̂_jg) · Jonckheere-Terpstra 일반화 · Klein Example 7.6 larynx 4 stage Z=3.72 p<0.0001

Klein & Moeschberger Ch.7 의 § 7.3 (K-Sample Tests) + § 7.4 (Trend Tests) 를 deep-dive. § 7.1~7.2 가 one-sample 을 다뤘다면, 본 편은 그 framework 의 K-sample 일반화 (§ 7.3) + ordered alternative 의 trend test (§ 7.4). § 7.3 — K-Sample Tests: H_0: h_1(t) = … = h_K(t) for all t ≤ τ, vs H_A: 적어도 하나가 다름. 검정 통계량의 일반 형태 식 7.3.2 Z_j(τ) = ∑ W_j(t_i) [d_ij/Y_ij - d_i/Y_i] (각 군의 hazard 추정 - pooled hazard 추정의 가중차이). 표준 형태 W_j = Y_ij W (식 7.3.3) → Z_j = ∑ W [d_ij - Y_ij d_i/Y_i] (관측 사건수 - 기대 사건수의 가중합). 분산·공분산 식 7.3.4·5 — multinomial (Hypergeometric) 의 분산 + tie correction (Y_i - d_i)/(Y_i - 1). χ² 식 7.3.6 with K-1 df. 6 weight 가족 비교: (1) log-rank W=1 — PH 최적, Lehmann alternative S_j = S^θ_j 의 LMP (Practical Note 5). (2) Gehan W=Y_i — Mann-Whitney-Wilcoxon 일반화, 초기 큰 위험집합 가중. censoring 패턴 차이에 민감 (Prentice-Marek 1979). (3) Tarone-Ware W=√Y_i — 절충. (4) Peto-Peto W=S̃ (식 7.3.8 modified KM, censoring 패턴 영향 적음). (5) Andersen 수정 W=S̃ Y_i/(Y_i+1) — predictable 만들기 위한 수정 (Theoretical Note 2). (6) Fleming-Harrington W=Ŝ^p (1-Ŝ)^q (식 7.3.9) — p,q 자유 조절로 임의 시점 가중. p>q 초기 강조, p<q 후기 강조, p=q>0 중간 강조. Klein Example 7.2 (kidney dialysis 119 명) 의 8 weight 비교 (Klein Table 7.3): log-rank Z=1.59 (p=0.11, 비유의) — PH 위반의 정전 사례. FH p=0,q=1 χ²=9.67 (p=0.002, 매우 유의) — 후기 차이 강조로 검출. 두 군의 hazard 가 0.5 month 에 cross — log-rank 의 cancel-out 함정. Klein Example 7.3 (Channing house 좌절단): F vs M, 일방 검정 Z=1.82 (p=0.034) — 남성이 빠른 사망. 좌절단 데이터에 식 7.3.3 그대로 적용. Klein Example 7.4 (BMT 137 명 3 그룹): ALL vs AML low vs AML high, log-rank χ²=13.80 (p=0.001). Z 벡터 (2.148, -14.97, 12.82) + 공분산 행렬 → 식 7.3.6 의 quadratic form. 다양 weight (Gehan 16.24, FH p=q=1 의 9.93 등) 모두 유의 — 결론 robust. Klein Example 7.5 (BMT auto vs allo crossing): log-rank Z 비유의 (p=0.54), Gehan Z 비유의 (p=0.76). 그러나 hazard 가 12 month 에 cross — 초기 high allo mortality (graft-vs-host) + 후기 low allo (cure). FH p=0,q=1 (후기 강조) χ²=4.20 (p=0.04) — long-term 차이 검출. § 7.4 — Trend Test: ordered alternative h_1 ≤ … ≤ h_K (적어도 하나 strict). 식 7.4.2 Z = ∑ a_j Z_j(τ) / √(∑∑ a_j a_g σ̂_jg) — 점수 a_j (보통 j) 가중 합. Jonckheere-Terpstra 의 censored 일반화 (Theoretical Note 1). Klein Example 7.6 (larynx cancer 90 명, 4 stage): log-rank weight Z=3.72 (p<0.0001), Gehan 4.22, Tarone-Ware 4.06, Peto-Peto 4.13 — 모두 강력 유의. Stage 가 높을수록 사망률 높음의 통계적 확정. Practical Note 2 — trend test 는 a priori ordered alternative 가 명확할 때만 사용. 단순 K-sample 검정과 비교 시 검정력 우수 (방향성 활용).

Statistics
Survival Analysis
Klein-Moeschberger
Log-Rank-Test
K-Sample-Test
Trend-Test
Fleming-Harrington
저자

Kwangmin Kim

공개

2026년 04월 28일

1 들어가며 — Ch.7 의 두 번째 deep-dive

주제
Ch.7 Overview 9 절 조망
§ 7.1~7.2 One-Sample Log-Rank
§ 7.3~7.4 (본 편) K-Sample Tests + Trend Tests
§ 7.5 (예정) Stratified + Matched Pairs
§ 7.6~7.8 (예정) Renyi · CvM · 그 외
§ 7.9 (예정) Exercises
§ 7.3~7.4 의 한 줄 요약

“§ 7.3 의 K-sample 검정은 § 7.2 의 one-sample 의 자연스러운 일반화 — 비교 대상이 사전 지정 \(h_0\) 에서 다른 군의 hazard 평균으로 바뀜. 핵심 식 7.3.3 \(Z_j = \sum W [d_{ij} - Y_{ij} d_i/Y_i]\) (‘관측 - 기대’) 위에 6 weight 가족 (log-rank · Gehan · Tarone-Ware · Peto-Peto · Andersen · Fleming-Harrington) 이 다른 시점 가중. Klein Example 7.2 의 dialysis 가 정전 — log-rank Z=1.59 (p=0.11, 비유의) 가 PH 위반의 cancel-out 으로 차이 못 잡지만, FH p=0,q=1 (후기 강조) 가 χ²=9.67 (p=0.002) 로 크게 검출. § 7.4 의 trend test 는 ordered alternative 시 단일 z-test 로 검정력 강화 — Klein larynx 4 stage Z=3.72.”

2 § 7.3 — K-Sample Tests

2.1 일반 framework — 식 7.3.2

정의: K-Sample 검정의 일반 통계량 (식 7.3.2)

\(K\) 개 군의 right-censored 데이터. Pooled 사건 시점 \(t_1 < \cdots < t_D\).

  • \(d_{ij}\): \(j\) 군의 \(t_i\) 시점 사건 수.
  • \(Y_{ij}\): \(j\) 군의 \(t_i\) 직전 위험집합.
  • \(d_i = \sum_j d_{ij}\), \(Y_i = \sum_j Y_{ij}\).

검정 통계량:

\[ Z_j(\tau) = \sum_{i=1}^D W_j(t_i) \left[\frac{d_{ij}}{Y_{ij}} - \frac{d_i}{Y_i}\right], \quad j = 1, \ldots, K \]

직관 — 두 hazard 추정의 차이

\(Z_j\) 의 각 항:

  • \(d_{ij}/Y_{ij}\): \(j\) 군만의 데이터로 본 \(t_i\) 시점 hazard 의 거친 추정.
  • \(d_i/Y_i\): pooled (전체 군 합) 데이터로 본 \(t_i\) 시점 hazard 의 거친 추정.

\(H_0\) (\(h_1 = ... = h_K\)) 가 참이면 두 추정이 같아야 함 → \(Z_j \approx 0\).

\(Z_j\) 가 0 에서 멀면 \(j\) 군의 hazard 가 평균과 다름 → \(H_0\) 기각.

→ “각 군의 hazard 추정 - pooled hazard 추정” 의 가중 합.

2.2 표준 형태 — 식 7.3.3 (W_j = Y_ij W)

정의: 표준 weight (식 7.3.3)

실무에서 거의 항상 \(W_j(t_i) = Y_{ij} \cdot W(t_i)\) (각 군 위험집합 × 공통 weight):

\[ Z_j(\tau) = \sum_{i=1}^D W(t_i) \left[d_{ij} - Y_{ij} \cdot \frac{d_i}{Y_i}\right] \]

→ “관측 사건수 - 기대 사건수” 의 가중 합.

기대 사건수 \(Y_{ij} \cdot d_i/Y_i\): \(H_0\) 가정 시 \(t_i\)\(Y_{ij}\) 명 위험인 \(j\) 군에서 평균적 사건 발생 수 = “\(j\) 군의 위험비중 × \(t_i\) 의 총 사건 수”.

직관 — 식 7.3.3 의 도출

식 7.3.2 에 \(W_j = Y_{ij} W\) 대입:

\[ Z_j = \sum W \cdot Y_{ij} \cdot \left[\frac{d_{ij}}{Y_{ij}} - \frac{d_i}{Y_i}\right] = \sum W \cdot \left[d_{ij} - Y_{ij} \cdot \frac{d_i}{Y_i}\right] \]

→ 분모 \(Y_{ij}\) cancel. 가중 합의 깔끔한 형태.

제약: \(\sum_{j=1}^K Z_j(\tau) = 0\) (선형 종속) — 한 군 결정되면 나머지도 결정.

→ K 개 군이지만 자유도는 K-1.

2.3 분산·공분산 — 식 7.3.4·7.3.5

정의: 분산·공분산 (식 7.3.4·5)

\[ \widehat{\sigma}_{jj} = \sum_{i=1}^D W^2(t_i) \cdot \frac{Y_{ij}}{Y_i} \left(1 - \frac{Y_{ij}}{Y_i}\right) \cdot \frac{Y_i - d_i}{Y_i - 1} \cdot d_i \]

\[ \widehat{\sigma}_{jg} = -\sum W^2(t_i) \cdot \frac{Y_{ij}}{Y_i} \cdot \frac{Y_{ig}}{Y_i} \cdot \frac{Y_i - d_i}{Y_i - 1} \cdot d_i, \quad j \neq g \]

Tie correction \((Y_i - d_i)/(Y_i - 1)\): \(d_i = 1\) (단일 사건) 이면 1. tie 가 있으면 약간 작아짐 (분산 보정).

직관 — Multinomial 분산

\(H_0\) 가정 하 \(t_i\) 시점:

  • \(d_i\) 명의 사건이 \(K\) 군에 어떻게 분포되는가?
  • 위험비중 \(p_j = Y_{ij}/Y_i\) 의 multinomial.
  • \(E[d_{ij}] = d_i \cdot p_j = Y_{ij} d_i/Y_i\) — 기대 사건수.
  • \(\text{Var}[d_{ij}] = d_i p_j (1 - p_j) = d_i \cdot Y_{ij}/Y_i \cdot (1 - Y_{ij}/Y_i)\) — multinomial 분산.
  • \(\text{Cov}[d_{ij}, d_{ig}] = -d_i p_j p_g\) — 음의 공분산 (한 군 늘면 다른 군 줄어듦).

Tie correction: 정확히는 hypergeometric 분포 (pooling 의 효과). \((Y_i - d_i)/(Y_i - 1)\) 가 hypergeometric → multinomial 보정. \(d_i = 1\) 면 1, tie 시 1보다 약간 작음 (분산 약간 감소).

2.4 χ² 통계량 — 식 7.3.6

정의: χ² 검정 (식 7.3.6)

\(K-1\)\(Z_j\) 와 그에 해당하는 \((K-1) \times (K-1)\) 공분산 행렬 \(\widehat{\Sigma}\) 로:

\[ \chi^2 = (Z_1, \ldots, Z_{K-1}) \widehat{\Sigma}^{-1} (Z_1, \ldots, Z_{K-1})^T \sim \chi^2_{K-1} \]

(어느 \(K-1\) 개 선택해도 같은 결과 — 종속성 때문).

두 군 (\(K = 2\)) 의 단순 형태 (식 7.3.7):

\[ Z = \frac{\sum W [d_{i1} - Y_{i1} d_i/Y_i]}{\sqrt{\sum W^2 (Y_{i1}/Y_i)(1 - Y_{i1}/Y_i)((Y_i - d_i)/(Y_i - 1)) d_i}} \sim N(0, 1) \]

3 6 Weight 가족 정밀 비교

정의: 6 weight 가족
검정 \(W(t_i)\) 출처 특성
Log-rank \(1\) Mantel 1966 모든 시점 균등
Gehan-Breslow \(Y_i\) Gehan 1965 + Breslow 1970 초기 (큰 \(Y\))
Tarone-Ware \(\sqrt{Y_i}\) Tarone-Ware 1977 절충
Peto-Peto \(\widetilde{S}(t_i)\) Peto-Peto 1972 초기 (생존확률)
Andersen 수정 \(\widetilde{S}(t_i) \cdot \frac{Y_i}{Y_i + 1}\) Andersen et al. 1982 predictable 보정
Fleming-Harrington \(\widehat{S}(t_{i-1})^p [1 - \widehat{S}(t_{i-1})]^q\) Fleming-Harrington 1981 \(p, q\) 자유

여기서 \(\widetilde{S}\) (Peto-Peto) 는 modified KM (식 7.3.8):

\[ \widetilde{S}(t) = \prod_{t_i \leq t}\left(1 - \frac{d_i}{Y_i + 1}\right) \]

\(\widehat{S}\) (Fleming-Harrington) 는 표준 KM (식 4.2.1).

직관 — 6 weight 의 시점 가중 (Klein Figure 7.2)

각 weight 의 상대 가중 \(W(t_i)/\sum W\) 를 시간으로 plot:

Weight 시점 분포
Log-rank \(W=1\) 모든 사건 시점 균등 (각각 \(1/D\))
Gehan \(W=Y_i\) 초기 위험집합 큰 시점 강한 가중 → 초기 차이에 매우 민감
Tarone-Ware \(W=\sqrt{Y_i}\) Gehan 의 완화
Peto-Peto \(W=\widetilde{S}\) 초기 (높은 \(S\)) 강조, log-rank 와 비슷한 분포
FH p=0, q=1 \(W=1-\widehat{S}\) 후기 (낮은 \(S\)) 강조 — log-rank 의 정반대
FH p=1, q=0 \(W=\widehat{S}\) 초기 강조 (Wilcoxon-like)
FH p=q=1 \(W=\widehat{S}(1-\widehat{S})\) 중간 (\(S=0.5\) 부근) 강조

→ 데이터의 hazard 차이가 어디 집중되는지에 따라 적합한 weight 선택.

3.1 Fleming-Harrington Family — 식 7.3.9

정의: Fleming-Harrington Family (식 7.3.9)

\[ W_{p,q}(t_i) = \widehat{S}(t_{i-1})^p [1 - \widehat{S}(t_{i-1})]^q, \quad p \geq 0, q \geq 0 \]

(이전 시점 \(t_{i-1}\) 의 KM 값 사용 — predictable 만들기 위해. \(S(t_0) = 1\), \(0^0 = 1\)).

특수 경우:

  • \(p = q = 0\): log-rank.
  • \(p = 1, q = 0\): Wilcoxon-like (Mann-Whitney 일반화).
  • \(p = 0, q = 1\): late-departure (후기 강조).
  • \(p = q > 0\): mid-departure (중간 강조).
  • \(p = 0.5, q = 0.5\): middle-region tests.
직관 — p, q 의 임상적 해석
  • PH 가정 가까움 + 분포 평균 차이: log-rank (\(p=q=0\)).
  • 초기 부작용 (early failure) 비교: \(p > 0, q = 0\) (Wilcoxon-like).
  • 장기 효과 (long-term cure) 비교: \(p = 0, q > 0\) (late).
  • 중반기 차이 (treatment effect 소멸): \(p = q > 0\) (middle).

임상 활용:

  • 면역치료 (delayed effect): 초기 효과 적고 후기 효과 큼 → FH \(p=0, q>0\).
  • 수술 + 화학요법 vs 화학요법만: 수술의 초기 위험 + 후기 효과 → FH \(p=0, q=1\) 또는 \(p=q=1\).
  • 만성 질환 약물: 안정된 효과 → log-rank.

→ Cox PH 의 가정 위반이 의심되면 FH 의 적절한 \(p, q\) 선택이 검정력 회복.

4 Klein Example 7.2 — Dialysis 두 군 (8 Weight 비교)

데이터 (Klein § 1.4)

119 명 dialysis 환자: surgical 43 + percutaneous 76. 첫 cutaneous exit-site infection 까지 시간.

핵심 관찰 (Klein Figure 7.1):

  • Percutaneous 군의 hazard 가 0.5 month 에 집중.
  • Surgical 군은 후기 사건 더 많음.
  • 두 군의 KM 곡선이 0.5 month 에 cross.

PH 위반의 정전 사례.

Klein Table 7.2 손풀이 — Log-Rank (\(W = 1\))

\(t_i\) 에서 \(d_{i1} - Y_{i1} d_i/Y_i\) 와 분산 항 계산:

\(t_i\) \(Y_{i1}\) \(d_{i1}\) \(Y_{i2}\) \(d_{i2}\) \(Y_i\) \(d_i\) 기대 \(Y_{i1}d_i/Y_i\) 차이 분산 항
0.5 43 0 76 6 119 6 2.168 -2.168 1.326
1.5 43 1 60 0 103 1 0.417 0.583 0.243
2.5 42 0 56 2 98 2 0.857 -0.857 0.485
3.5 40 1 49 1 89 2 0.899 0.101 0.489
4.5 36 2 43 0 79 2 0.911 1.089 0.490
26.5 2 1 3 0 5 1 0.400 0.600 0.240
15 11 26 11.036 3.964 6.211
  • \(Z_1 = 3.964\), \(\widehat{\sigma}_{11} = 6.211\).
  • \(Z = 3.964/\sqrt{6.211} = 1.59\).
  • 양측 \(p = 2 \cdot P(Z > 1.59) = 0.112\).

Log-rank 비유의 (p > 0.05). 그러나 …

Klein Table 7.3 — 8 weight 결과 비교
검정 \(Z_1\) \(\sigma_{11}^2\) \(\chi^2\) \(p\)
Log-rank 3.96 6.21 2.53 0.112
Gehan -9 38862 0.002 0.964
Tarone-Ware 13.20 432.83 0.40 0.526
Peto-Peto 2.47 4.36 1.40 0.237
Modified Peto-Peto 2.31 4.20 1.28 0.259
FH p=0, q=1 1.41 0.21 9.67 0.002
FH p=1, q=0 2.55 4.69 1.39 0.239
FH p=1, q=1 1.02 0.11 9.83 0.002
FH p=0.5, q=0.5 2.47 0.66 9.28 0.002

관찰:

  • Log-rank, Gehan, Tarone-Ware, Peto-Peto: 비유의 (p > 0.1).
  • FH q ≥ 0.5 (후기 또는 중간 강조): 매우 유의 (p ≈ 0.002).
  • FH p = q (중간 강조): 가장 유의.

진단:

  • Hazard 가 0.5 month 에 cross → 초기 차이 (percutaneous 빨리 사건) 와 후기 차이 (surgical 안전) 가 부호 반대.
  • Log-rank 의 균등 가중 → cancel-out → “차이 없음” 잘못된 결론.
  • FH q > 0 의 후기 강조 → cancel-out 회피 → 검출.

Weight 선택이 결론에 결정적. PH 위반 의심 시 다양 weight 보고 권장.

5 Klein Example 7.3 — Channing House 좌절단

462 명 Channing house (Klein § 1.16)

좌절단 데이터의 K-sample 검정.

  • \(H_0\): \(h_F(t) = h_M(t)\) for \(t \in [777, 1152]\) months.
  • \(H_A\): \(h_F \leq h_M\) (일방).

식 7.3.3 의 적용 — 좌절단 처리:

  • \(Y_{ij}\) 정의: 시점 \(t_i\) 직전에 entry 한 + 사건/censored 안 한 개체.
  • 즉 § 4.6 의 좌절단 KM 의 \(Y_i\) 정의.

결과: \(Z_M(1152) = 9.682\), \(\widehat{V}[Z_M] = 28.19\), \(Z_{\text{obs}} = 1.82\).

  • 일방 \(p\) = 0.034.
  • 남성이 여성보다 빠른 사망 (정상 인구 패턴 일치).

좌절단 데이터에 식 7.3.3 그대로 적용 가능 — § 4.6 의 \(Y_i\) 재정의 만으로 일반화.

6 Klein Example 7.4 — BMT 3 그룹 (K=3)

137 명 BMT (Klein § 1.3)
  • Group 1: ALL 38 명.
  • Group 2: AML low-risk 54 명.
  • Group 3: AML high-risk 45 명.

\(H_0\): 3 군의 disease-free survival 동일.

Log-rank 결과

식 7.3.3 으로 각 군의 \(Z_j(2204)\) 계산:

  • \(Z_1 = 2.148\) (ALL).
  • \(Z_2 = -14.966\) (AML low risk).
  • \(Z_3 = 12.818\) (AML high risk).

검증: \(Z_1 + Z_2 + Z_3 = 0\) ✓ (선형 종속).

공분산 행렬:

\[ \widehat{\Sigma} = \begin{pmatrix} 15.96 & -10.35 & -5.61 \\ -10.35 & 20.34 & -9.99 \\ -5.61 & -9.99 & 15.60 \end{pmatrix} \]

(singular — 합이 0 이라 행렬식 = 0).

\(Z_1, Z_2\) 와 그에 해당하는 \(2 \times 2\) 부분 행렬로 χ²:

\[ \chi^2 = (2.148, -14.966) \begin{pmatrix} 15.96 & -10.35 \\ -10.35 & 20.34 \end{pmatrix}^{-1} \begin{pmatrix} 2.148 \\ -14.966 \end{pmatrix} = 13.80 \]

\(\chi^2_2\) 분포에서 \(p = 0.001\)3 군 차이 유의.

다양 weight 비교 (Klein Example 7.4)
Weight \(\chi^2\) \(p\)
Log-rank 13.80 0.001
Gehan (\(W=Y_i\)) 16.24 0.0003
Tarone-Ware (\(W=\sqrt{Y_i}\)) 15.65 0.004
FH \(p=1, q=0\) 15.67 0.004
FH \(p=0, q=1\) 6.11 0.047
FH \(p=q=1\) 9.93 0.007

모든 weight 유의 → BMT 3 그룹의 차이는 robust:

  • AML low risk: \(Z_2\) 매우 음수 → 사건 수 매우 적음 (좋음).
  • AML high risk: \(Z_3\) 매우 양수 → 사건 수 많음 (나쁨).
  • ALL: 중간.

→ 임상 결론: AML low > ALL > AML high (생존).

7 Klein Example 7.5 — BMT Auto vs Allo (Crossing Hazards)

Crossing hazards 정전 사례 (Klein § 1.9)

Auto vs Allo BMT 의 disease-free survival.

임상 배경:

  • Allo: graft-versus-host disease (GVHD) → 첫 100 일 매우 높은 사망률.
  • Allo 후기: GVH effect → leukemia cure 우월 (low relapse).
  • Auto: 초기 안전 (no GVHD) but 후기 relapse 높음.
  • 두 군 hazard 가 약 12 month 에 cross.
검정 결과
Weight \(\chi^2\) \(p\) 결론
Log-rank ~ 0.5368 비유의 (cancel-out)
Gehan ~ 0.7556 비유의
FH p=0, q=1 (후기 강조) 4.20 0.0404 유의 — 후기 차이 검출

\(Z_1 = -2.093\) (allo), \(\widehat{\sigma}_{11} = 1.02\), \(\chi^2 = 4.20\) for FH p=0,q=1.

해석:

  • Log-rank·Gehan: 초기 (allo 높음) + 후기 (allo 낮음) cancel out → 차이 없음 잘못된 결론.
  • FH q=1: 초기 가중 0 (allo 의 GVH 사망 무시) + 후기 가중 큼 → allo 의 long-term 우월성 검출.

임상 함의: long-term survivor 의 비교가 주요 관심이면 FH p=0, q=1 사용. 장기 추적이 충분히 길면 allo 가 우월.

사전 임상 지식이 weight 선택의 가이드. 가설 (어디서 차이?) 이 명확하면 적절한 weight 로 검정력 강화.

8 § 7.4 — Trend Tests (Ordered Alternative)

8.1 동기 — 비방향성 vs 방향성

직관 — § 7.3 vs § 7.4

§ 7.3 의 K-sample \(\chi^2\):

  • \(H_A\): 적어도 한 군이 다름 — 비방향성 (omnibus).
  • “어느 군이 다른지” 정보 없이 무차별 검정.

§ 7.4 의 trend test:

  • \(H_A\): \(h_1 \leq h_2 \leq \cdots \leq h_K\) (적어도 하나 strict) — 방향성.
  • 사전 가설: 군 순서대로 hazard 증가 (또는 감소).

검정력 비교:

  • 진짜 차이가 ordered 면 → trend test 가 더 강력.
  • 진짜 차이가 random 이면 → omnibus χ² 가 더 적합.

→ Ordered 가설 확신할 때 trend, 그렇지 않으면 omnibus.

8.2 식 7.4.2

정의: Trend Test (식 7.4.2)

점수 \(a_1 < a_2 < \cdots < a_K\) 선택 (보통 \(a_j = j\)).

\[ Z = \frac{\sum_{j=1}^K a_j Z_j(\tau)}{\sqrt{\sum_{j=1}^K \sum_{g=1}^K a_j a_g \widehat{\sigma}_{jg}}} \]

큰 표본에서 표준정규.

기각 영역: \(H_A\) (오름 차순) 시 \(Z > z_\alpha\) (단측, 큰 \(Z\) 기각).

직관 — 식 7.4.2 의 의미

분자 \(\sum a_j Z_j\):

  • \(j\) 가 클수록 큰 \(a_j\) 가중.
  • \(Z_j\) 가 큰 \(j\) 에서 양수 (사건 더 많음) 면 합 양수 → ordered alternative 증거.

점수 선택:

  • \(a_j = j\): 균등 차이 가정.
  • $a_j = $ 군의 평균 covariate (예: 약물 용량): 연속적 trend.
  • 임의 \(a_j\) (단조 증가): 검정 invariant under linear transform.

Theoretical Note 1: censoring 없으면 Gehan/Peto weight 의 trend test = Jonckheere-Terpstra 검정 (uncensored 비모수 trend).

8.3 Klein Example 7.6 — Larynx Cancer 4 Stage

데이터 (Klein § 1.8)

90 명 larynx cancer (Dutch hospital, 1970s).

  • Stage I, II, III, IV (American Joint Committee) — ordered.
  • \(a_j = j\).
  • \(H_0\): 4 stage 사망률 동일.
  • \(H_A\): stage 높을수록 사망률 높음.
Trend test 결과

Log-rank weights:

\[ Z(10.7) = (-7.5660, -3.0117, 2.9155, 7.6623) \]

(stage I 음수 — 사건 수 적음, stage IV 양수 — 사건 수 많음).

공분산 행렬:

\[ \widehat{\Sigma} = \begin{pmatrix} 12.07 & -4.45 & -6.25 & -1.38 \\ -4.45 & 7.87 & -2.76 & -0.66 \\ -6.25 & -2.76 & 9.93 & -0.92 \\ -1.38 & -0.66 & -0.92 & 2.96 \end{pmatrix} \]

식 7.4.2 적용:

  • 분자 \(\sum a_j Z_j = 1 \cdot (-7.57) + 2 \cdot (-3.01) + 3 \cdot 2.92 + 4 \cdot 7.66 = 25.85\).
  • 분모 \(\sqrt{\sum\sum a_j a_g \sigma_{jg}}\) = … = 6.95.
  • \(Z = 25.85/6.95 = 3.72\).
  • \(p = P(Z > 3.72) < 10^{-4}\)매우 강력한 유의.

다양 weight:

Weight \(Z\)
Log-rank 3.72
Tarone-Ware 4.06
Gehan 4.22
Peto-Peto 4.13

모든 weight \(p < 10^{-4}\) → stage 가 높을수록 사망률 높음의 통계적 확정.

Practical Note 2 — Trend Test 사용 조건

Trend test 는 사전에 ordered alternative 가 명확할 때만 사용:

  • OK: 약물 용량 순서, 질병 stage 순서, 연령대 순서.
  • NOT OK: 무관 군 (예: 다른 치료법 A, B, C — 서열 없음).

이유:

  • Ordered alternative 가 틀리면 검정력 약함 (실제 차이를 놓칠 수 있음).
  • Random 차이는 § 7.3 의 omnibus 가 더 적합.

사전 임상 지식 + 가설 명확성 이 trend test 적용의 전제.

9 Practical Notes (5 개)

Practical Note 1 — SAS LIFETEST
  • STRATA statement: 본 절의 표준 검정 (식 7.3.3).
  • TEST statement: tie 처리 다름. STRATA 권장.

R survival::survdiffrho 옵션 = FH \(p\) (\(q = 0\) 가정):

  • rho = 0: log-rank.
  • rho = 1: Wilcoxon-like (Peto-Peto).
Practical Note 4 — 일방 vs 양방 검정

Kellerer-Chmelevsky (1983) Monte Carlo 결과:

  • 표본 크기 작을 때 일방 검정 주의.
  • 두 군 표본 크기 매우 다를 때 + 작은 군의 hazard 큼 가정 → 잘못 기각 빈번.
  • 두 군 표본 크기 매우 다를 때 + 큰 군의 hazard 큼 가정 → 너무 보수적.

권장: 양방 검정만 사용 (Prentice-Marek 1979).

Practical Note 5 — Log-Rank 의 PH 최적성

Log-rank (\(W = 1\)) 가 PH 가정 (\(S_j(t) = S(t)^{\theta_j}\), Lehmann alternative) 하에서 LMP (locally most powerful).

→ Cox PH (Ch.8) 의 Cox proportional hazards model 의 score test 와 동일.

→ PH 성립하면 log-rank 가 가장 효율적. PH 위반 시 다른 weight.

10 Theoretical Notes (5 개 핵심)

Theoretical Note 1 — Counting Process 도출

Aalen 1975 (two-sample), Andersen et al. 1982 (K-sample):

  • \(\widetilde{H}_j(t) - \widetilde{H}_{\text{pooled}}(t)\) 가 martingale.
  • \(Z_j(\tau) = \int_0^\tau W \cdot d(\widetilde{H}_j - \widetilde{H}_{\text{pooled}})\) — stochastic integral.
  • Predictable variation 으로 분산.
  • Martingale CLT 로 점근 정규성.

→ § 3.6 framework 의 직접 적용.

Theoretical Note 3 — Linear Rank Statistic 일반화

Uncensored 데이터의 linear rank statistic:

\[ Z_j = \sum_{i=1}^{n_j} a_n(R_{ij}) \]

where \(R_{ij}\) = \(i\)-th 관측의 pooled rank, \(a_n\) = score function.

식 7.3.3 이 censored 데이터의 일반화. Score function \(\Psi(u) = 2u - 1\) → Peto-Peto Gehan 등.

Wilcoxon, Mann-Whitney, Kruskal-Wallis 모두 식 7.3.3 의 특수 경우.

11 응용 분야

분야 Weight 선택 예시
표준 임상시험 Log-rank 신약 vs 위약 OS
면역치료 (delayed) FH p=0, q≥1 Pembrolizumab
수술 + 화학요법 FH p=q BMT (auto vs allo)
Phase I 용량 trend Trend test (\(a_j\) = dose) DLT 비교
종양 stage Trend test (\(a_j = j\)) Cancer staging
Censoring 다른 두 군 Peto-Peto Multi-center trial

12 코드 예시

12.1 Step 1 — R survival Log-Rank + FH

library(survival)

# Klein Example 7.2 — kidney dialysis
fit_lr <- survdiff(Surv(time, delta) ~ type, data = kidney, rho = 0)
fit_w <- survdiff(Surv(time, delta) ~ type, data = kidney, rho = 1)

print(fit_lr)  # log-rank
print(fit_w)   # Wilcoxon-like (Peto-Peto)
# rho = 1 (FH p=1, q=0), q ≠ 0 은 직접 구현 필요

12.2 Step 2 — R FHtest 패키지 (Fleming-Harrington 일반)

library(FHtest)

# Klein Example 7.5 — BMT auto vs allo crossing hazards
data(bmt)
fit_fh <- FHtestrcc(Surv(time, event) ~ type, data = bmt,
                     rho = 0, lambda = 1)  # FH p=0, q=1

print(fit_fh)
# χ² ≈ 4.20, p ≈ 0.04 — 후기 차이 검출

12.3 Step 3 — Python 직접 구현 (Log-Rank K-sample)

import numpy as np
from scipy.stats import chi2

def k_sample_logrank(times, events, groups):
    """식 7.3.3 + 7.3.6 — K-sample log-rank with W=1"""
    K = len(np.unique(groups))
    sorted_idx = np.argsort(times)
    t_sorted = times[sorted_idx]
    e_sorted = events[sorted_idx]
    g_sorted = groups[sorted_idx]
    event_times = np.unique(t_sorted[e_sorted == 1])

    Z = np.zeros(K)
    Sigma = np.zeros((K, K))

    for t in event_times:
        Y_total = np.sum(t_sorted >= t)
        d_total = np.sum((t_sorted == t) & (e_sorted == 1))

        Y_j = np.zeros(K)
        d_j = np.zeros(K)
        for j in range(K):
            mask_j = (g_sorted == j)
            Y_j[j] = np.sum((t_sorted >= t) & mask_j)
            d_j[j] = np.sum((t_sorted == t) & (e_sorted == 1) & mask_j)

        # 식 7.3.3 — Z_j 누적
        for j in range(K):
            expected = Y_j[j] * d_total / Y_total
            Z[j] += d_j[j] - expected

        # 식 7.3.4·5 — 분산·공분산 누적 (tie correction)
        if Y_total > 1:
            tc = (Y_total - d_total) / (Y_total - 1)
            for j in range(K):
                p_j = Y_j[j] / Y_total
                Sigma[j, j] += p_j * (1 - p_j) * tc * d_total
                for g in range(j + 1, K):
                    p_g = Y_j[g] / Y_total
                    cov_jg = -p_j * p_g * tc * d_total
                    Sigma[j, g] += cov_jg
                    Sigma[g, j] += cov_jg

    # 식 7.3.6 — χ² (K-1 df)
    Z_red = Z[:-1]
    Sigma_red = Sigma[:-1, :-1]
    chi2_stat = Z_red @ np.linalg.inv(Sigma_red) @ Z_red
    p_value = 1 - chi2.cdf(chi2_stat, df=K-1)
    return Z, Sigma, chi2_stat, p_value


# Klein Example 7.4 — BMT 3 그룹
# (실제 데이터 로드 후 호출)
# Z, Sigma, chi2_stat, p_value = k_sample_logrank(times, events, groups)
# print(f"Z = {Z}")
# print(f"χ² = {chi2_stat:.2f}, p = {p_value:.4f}")
# 예상: χ² ≈ 13.80, p ≈ 0.001

12.4 Step 4 — Python lifelines Multivariate Log-Rank

from lifelines.statistics import multivariate_logrank_test

# Klein Example 7.4 — BMT 3 그룹
result = multivariate_logrank_test(times, groups, events)
print(result.test_statistic)  # ≈ 13.80
print(result.p_value)          # ≈ 0.001
print(result.summary)

13 핵심 takeaway

§ 7.3~7.4 의 6 가지 교훈
  1. K-sample 의 핵심 식 7.3.3\(Z_j = \sum W [d_{ij} - Y_{ij} d_i/Y_i]\) (“관측 - 기대” 가중 합). 식 7.3.6 의 χ² with K-1 df. § 7.2 one-sample 의 자연 일반화.

  2. 6 weight 가족 — log-rank (\(W=1\), PH 최적), Gehan (\(W=Y_i\), 초기), Tarone-Ware (\(W=\sqrt{Y_i}\), 절충), Peto-Peto (\(W=\widetilde{S}\), censoring 패턴 robust), Andersen 수정 (predictable), Fleming-Harrington (\(W = \widehat{S}^p (1-\widehat{S})^q\), \(p, q\) 자유).

  3. Crossing hazards 의 cancel-out 함정 — Klein Example 7.2 dialysis: log-rank Z=1.59 (p=0.11) 비유의지만 FH p=0,q=1 χ²=9.67 (p=0.002) 매우 유의. PH 위반 의심 시 다양 weight 보고 필수.

  4. 임상 사전 지식이 weight 선택의 가이드 — 면역치료 delayed effect (FH p=0,q>0), 수술 GVH (Klein Example 7.5 BMT auto vs allo), 만성 질환 (log-rank). 가설 명확하면 검정력 강화.

  5. Trend test (식 7.4.2) — Ordered alternative 시 단일 z-test. Klein Example 7.6 larynx 4 stage Z=3.72 (p<10⁻⁴) — stage 가 높을수록 사망률. Jonckheere-Terpstra 의 censored 일반화.

  6. 모든 검정이 NA framework + counting process martingale — Aalen 1975, Andersen et al. 1982. § 3.6 의 직접 적용. Cox PH (Ch.8) score test 와 동등.

14 관련 주제

선행 지식

후속 주제

  • § 7.5 — Stratified + matched pairs
  • § 7.6 — Renyi tests (crossing hazards 의 다른 접근)
  • § 7.7 — Cramer-von Mises, KM-based, median test
  • Ch.8 — Cox PH (score test = log-rank, PH 가정 직접 모델링)

관련 개념

  • Mann-Whitney-Wilcoxon (uncensored) → Gehan censored 일반화
  • Kruskal-Wallis (uncensored) → Breslow censored 일반화
  • Jonckheere-Terpstra (uncensored) → 식 7.4.2 의 censored 일반화
  • Lehmann alternative \(S_j = S^{\theta_j}\) (PH 의 일반화) — log-rank 의 LMP 도출 근거
  • Counting process martingale (Aalen 1975) — 모든 검정의 토대

Subscribe

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