1 들어가며 — Ch.8 세 번째 deep-dive
| 편 | 주제 |
|---|---|
| Ch.8 Overview | 9 절 조망 |
| § 8.1~8.2 | Cox 모형 + Coding |
| § 8.3~8.4 | Partial Likelihood + Ties |
| § 8.5~8.6 (본 편) | Local Tests + Discretizing |
| § 8.7 (예정) | Model Building Strategy |
| § 8.8 (예정) | Survival Function Estimation |
| § 8.9 (예정) | Exercises |
“§ 8.5 의 local tests — 부분 가설 \(H_0: \beta_1 = \beta_{10}\). Wald 식 8.5.1 \((b_1 - \beta_{10})' [I^{11}(b)]^{-1} (b_1 - \beta_{10})\) (정보행렬의 좌상단 블록의 역), LR 식 8.5.2 \(2[LL(b) - LL(\beta_{10}, b_2)]\) (restricted 재추정), Score 식 8.5.3. Linear contrast 식 8.5.7 \((Cb - C\beta_0)' [CI^{-1}C']^{-1}(Cb - C\beta_0)\) — 임의 \(q \leq p\) contrast. Klein Example 8.2 larynx (Stage III vs II RR=1.65 비유의, Stage II vs I age 보정 후 비유의), Klein Example 8.3 kidney race × gender (interaction p=0.08 marginal), Klein Example 8.2 stage × age interaction (age 76 RR=3.03 유의, age 60 RR=0.51 비유의). § 8.6 의 discretizing — outcome-oriented cut point Contal-O’Quigley (1999) 식 8.6.1 log-rank \(S_k\) 의 maximum, 식 8.6.3 \(Q = \max|S_k| / (s\sqrt{D-1})\) Brownian bridge sup → \(p \approx 2\exp(-2Q^2)\). Klein Example 8.3 kidney White male cut=41 Q=3.12 (p<0.001), White female cut=36 Q=1.93 (p=0.001), Black 군은 Q<1 비유의.”
2 § 8.5 — Local Tests (Subset Hypothesis)
2.1 문제 설정
Cox 모형 식 8.1.2 의 \(\beta = (\beta_1, \ldots, \beta_p)'\) 를 두 부분으로 분할:
\[ \beta = \begin{pmatrix} \beta_1 \\ \beta_2 \end{pmatrix} \]
- \(\beta_1\): \(q \times 1\) 관심 벡터 (검정하려는 효과).
- \(\beta_2\): \((p-q) \times 1\) nuisance 벡터 (조정 변수).
가설:
\[ H_0: \beta_1 = \beta_{10} \]
- 보통 \(\beta_{10} = 0\) (effect 없음).
- \(\beta_2\) 는 자유 — full 또는 restricted MLE.
예시:
- Klein Example 8.2: \(\beta_1 = (\beta_1, \beta_2, \beta_3)'\) (3 stage), \(\beta_2 = \beta_4\) (age). \(H_0\): stage 효과 없음, age 보정.
- Klein Example 8.3: \(\beta_1 = \beta_3\) (interaction), \(\beta_2 = (\beta_1, \beta_2)'\) (main effects).
Global tests (§ 8.3):
- \(H_0: \beta = \mathbf{0}\) (모든 \(\beta\) 동시 0).
- “이 모형이 의미가 있는가?” 의 검정.
- 회귀 분석의 ANOVA F-test 에 해당.
Local tests (§ 8.5):
- \(H_0: \beta_1 = \beta_{10}\) (일부 \(\beta\) 만 검정, 나머지 자유).
- “특정 효과가 있는가, 다른 효과를 통제한 후?” 의 검정.
- OLS 회귀의 partial F-test, t-test 에 해당.
왜 local 이 필요한가:
- Global \(\beta = 0\) 기각 → 적어도 한 효과 존재. 어느 효과인지 모름.
- 임상에서는 보통 특정 효과 (예: 처치 효과) 에 관심.
- Confounder (age, gender 등) 통제 후 처치 효과 검정 필요.
ANOVA Table (Klein Table 8.1):
- SAS PHREG, R coxph 가 자동 출력.
- 각 covariate 의 \(b\), SE, Wald \(\chi^2\), p-value, RR.
- 단변량 Wald local test (\(H_0: \beta_k = 0\), 다른 모든 효과 통제).
2.2 Wald Test — 식 8.5.1
Information matrix 분할:
\[ I = \begin{pmatrix} I_{11} & I_{12} \\ I_{21} & I_{22} \end{pmatrix} \]
- \(I_{11}\): \(q \times q\) (\(\beta_1\) 관련).
- \(I_{22}\): \((p-q) \times (p-q)\) (\(\beta_2\) 관련).
- \(I_{12} = I_{21}'\): 혼합 부분.
\(I^{-1}\) 의 좌상단 블록 \(I^{11}(b)\) 는 \(\beta_1\) 의 점근 공분산 — 단순히 \(I_{11}^{-1}\) 가 아님.
\[ I^{11}(b) = (I_{11} - I_{12} I_{22}^{-1} I_{21})^{-1} \]
Wald statistic:
\[ X_W^2 = (b_1 - \beta_{10})' [I^{11}(b)]^{-1} (b_1 - \beta_{10}) \sim \chi^2_q \]
핵심: \(\beta_1\) 의 SE 는 \(\beta_2\) 의 추정 불확실성도 포함해야 한다.
- \(\beta_2\) 가 알려져 있으면 (예: theoretical value) → \(I_{11}^{-1}\) 만 SE.
- \(\beta_2\) 도 추정 → \(\beta_1\) 의 SE 가 더 큼.
- 차이만큼 \(-I_{12} I_{22}^{-1} I_{21}\) 빼야 함.
행렬 분할 정리 (block matrix inversion):
\[ \begin{pmatrix} A & B \\ C & D \end{pmatrix}^{-1} = \begin{pmatrix} (A - B D^{-1} C)^{-1} & \cdots \\ \cdots & \cdots \end{pmatrix} \]
→ \((A - B D^{-1} C)\) 는 Schur complement 라고 불림.
임상 해석:
- “Age 통제 후 stage 효과” 의 SE 는 age 의 추정 불확실성도 포함.
- Age 가 stage 와 강하게 상관 → \(I_{12}\) 큼 → \(\beta_1\) 의 효과적 SE 증가.
- 다중공선성 (multicollinearity) 의 SE 팽창과 같은 원리.
실무: SAS, R 모두 자동으로 \(I^{11}\) 사용. 사용자는 \(b_1\) 의 SE 를 단순 표 조회.
2.3 LR Test — 식 8.5.2
Restricted MLE: \(\beta_1 = \beta_{10}\) 고정 하 \(\beta_2\) 의 MLE.
\[ b_2(\beta_{10}) = \arg\max_{\beta_2} \ell[\beta_{10}, \beta_2] \]
LR statistic:
\[ X_{LR}^2 = 2 \left\{ \ell(b) - \ell[\beta_{10}, b_2(\beta_{10})] \right\} \sim \chi^2_q \]
- \(\ell(b)\): full model log-likelihood (모든 \(p\) parameter 자유).
- \(\ell[\beta_{10}, b_2]\): restricted log-likelihood (\(\beta_1 = \beta_{10}\) 고정, \(\beta_2\) 만 추정).
- 자유도 \(q\) = 제약된 parameter 수.
Full model:
\[ h(t \mid Z) = h_0(t) \exp(\beta_1' Z_1 + \beta_2' Z_2) \]
Restricted model (\(\beta_1 = \mathbf{0}\)):
\[ h(t \mid Z) = h_0(t) \exp(\beta_2' Z_2) \]
LR:
- Full likelihood 가 restricted 보다 얼마나 더 큰가?
- 차이가 크면 → \(Z_1\) 추가가 중요.
- 차이가 작으면 → \(Z_1\) 불필요 (parsimonious 모형 선호).
LR 의 OLS 유사물:
- OLS 의 partial F-test: \(F = (RSS_{\text{red}} - RSS_{\text{full}}) / (q \cdot \hat{\sigma}^2_{\text{full}})\).
- Cox 의 LR: \(2[\ell_{\text{full}} - \ell_{\text{red}}]\).
- 둘 다 nested 모형 비교.
Klein Example 8.2 의 적용:
- Full: stage 3 dummies + age (4 param). LL=-188.179.
- Restricted: age only (1 param). LL=-195.906.
- LR=2[-188.179 - (-195.906)]=15.454, df=3 (stage 3 dummies 제거).
- p=0.0015 → stage 효과 강력 (age 보정 후).
2.4 Score Test — 식 8.5.3
\(U_1[\beta_{10}, b_2(\beta_{10})]\): \(\beta_1\) 의 score, restricted MLE 에서 평가.
- \(\beta_1 = \beta_{10}\) 고정 (관심 effect).
- \(\beta_2 = b_2(\beta_{10})\) 사용 (nuisance restricted MLE).
- \(\beta_1\) 에 대한 score 만 계산.
Score statistic:
\[ X_{SC}^2 = U_1[\beta_{10}, b_2]' [I^{11}[\beta_{10}, b_2]] U_1[\beta_{10}, b_2] \sim \chi^2_q \]
Wald, LR vs Score:
| 검정 | 평가 지점 | 필요 모형 |
|---|---|---|
| Wald | full MLE \(b\) | full 만 |
| LR | full + restricted MLE | 둘 다 |
| Score | restricted MLE 만 | restricted 만 |
Score 의 효율성:
- Restricted 모형만 적합 → 계산 비쌈 적음.
- Full MLE 알 필요 없음.
- “Adding more variables” 의 사전 검정에 유용.
그러나 Practical Note 1 (Li et al. 1996):
- Monte Carlo: Wald, LR ≈ Score (점근).
- 유한 표본: Score 가 size 부풀림 — 권장 안함.
- 실무: Wald (보고 친숙) 또는 LR (정확) 선호.
Klein Example 8.2 의 Score:
- Restricted (age only) 에서 stage scores: \(U_1 = (-2.448, 3.0583, 7.4400)\).
- Information \(I^{11}\): \(4 \times 4\) matrix from \(I^{-1}(0,0,0,0.023)\).
- \(X_{SC}^2 = U_1' [I^{11}] U_1\) → 22.46 (df=3, p < 0.0001).
- 세 검정 (Wald 17.63, LR 15.45, Score 22.46) 모두 강력 기각.
2.5 Linear Combination — 식 8.5.5·6·7
Contrast matrix \(\mathbf{C}\) (식 8.5.5): \(q \times p\), full rank (\(q \leq p\)).
\[ \mathbf{C} = \begin{pmatrix} c_1' \\ c_2' \\ \vdots \\ c_q' \end{pmatrix}, \quad c_k' = (c_{k1}, \ldots, c_{kp}) \]
Hypothesis (식 8.5.6):
\[ H_0: \mathbf{C}\beta = \mathbf{C}\beta_0 \]
Wald-type statistic (식 8.5.7):
\[ X_W^2 = (Cb - C\beta_0)' [C I^{-1}(b) C']^{-1} (Cb - C\beta_0) \sim \chi^2_q \]
예시 1 — Stage III vs Stage II 차이:
\[ \mathbf{C} = (-1, 1, 0, 0), \quad \beta_0 = 0 \]
→ \(H_0: \beta_2 - \beta_1 = 0\) (Stage III 와 II 의 hazard ratio = 1).
예시 2 — Stage I = II = III = IV (모든 stage 동일):
\[ \mathbf{C} = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \end{pmatrix}, \quad \beta_0 = 0 \]
→ \(H_0: \beta_1 = \beta_2 = \beta_3 = 0\) (= subset hypothesis 8.5.1).
예시 3 — Stage II = III = IV (II/III/IV 동일, I 만 다름):
\[ \mathbf{C} = \begin{pmatrix} 1 & -1 & 0 & 0 \\ 0 & -1 & 1 & 0 \end{pmatrix}, \quad \beta_0 = 0 \]
→ \(H_0: \beta_1 = \beta_2\) AND \(\beta_2 = \beta_3\).
예시 4 — Age 76 에서 Stage I vs II 동일 (interaction 모형):
\[ \mathbf{C} = (1, 0, 0, 0, 76), \quad \beta_0 = 0 \]
→ \(H_0: \beta_1 + 76 \beta_5 = 0\) (Stage II main + Stage II × age interaction at 76).
일반 원리:
- \(\mathbf{C}\) 는 “관심 contrast” 의 행렬.
- 각 행 \(c_k'\) 는 한 contrast 의 계수.
- \(\mathbf{C}\beta\) 는 “선형 결합” 의 vector.
- \(\mathbf{C}\beta = \mathbf{0}\) 은 모든 contrast 0 (다중 가설).
3 § 8.5 — Klein Example 8.2 (Larynx 적용)
3.1 Subset Test — Stage 효과 (Age 보정)
Full model (\(Z_1, Z_2, Z_3\) stage dummies + \(Z_4\) age):
\[ h(t \mid Z) = h_0(t) \exp(\beta_1 Z_1 + \beta_2 Z_2 + \beta_3 Z_3 + \beta_4 Z_4) \]
MLE (Breslow ties):
\[ \mathbf{b} = (0.1386, 0.6383, 1.6931, 0.0189), \quad \ell(\mathbf{b}) = -188.179 \]
Restricted (\(\beta_1 = \beta_2 = \beta_3 = 0\), age only):
\[ b_4 = 0.023, \quad \ell = -195.906 \]
Local hypothesis: \(H_0: \beta_1 = \beta_2 = \beta_3 = 0\) (no stage effect, age 보정).
LR test:
\[ X_{LR}^2 = 2[-188.179 - (-195.906)] = 15.454, \quad \text{df}=3, \quad p = 0.0015 \]
Score test (restricted 에서 계산):
\[ U_1(0,0,0,0.023) = (-2.448, 3.0583, 7.4400)' \]
\[ X_{SC}^2 = U_1' [I^{11}(0,0,0,0.023)] U_1 = 22.46, \quad p < 0.0001 \]
Wald test (full MLE 의 분산행렬 사용):
\[ X_W^2 = 17.63, \quad p = 0.0005 \]
→ 세 검정 모두 강력 기각. Stage 효과가 age 보정 후에도 유의.
3.2 ANOVA Table — Klein Table 8.1
| Variable | df | \(b\) | SE | Wald \(\chi^2\) | p-value | RR |
|---|---|---|---|---|---|---|
| \(Z_1\): Stage II | 1 | 0.1386 | 0.4623 | 0.09 | 0.7644 | 1.15 |
| \(Z_2\): Stage III | 1 | 0.6383 | 0.3561 | 3.21 | 0.0730 | 1.89 |
| \(Z_3\): Stage IV | 1 | 1.6931 | 0.4222 | 16.08 | <0.0001 | 5.44 |
| \(Z_4\): Age | 1 | 0.0189 | 0.0143 | 1.76 | 0.1847 | 1.02/yr |
해석:
- Stage II vs I: Wald \(\chi^2 = (0.1386)^2 / (0.4623)^2 = 0.0898\), p=0.76 → 차이 없음.
- Stage IV vs I: 강력 (RR=5.44, p<0.0001).
- Age: 1년 추가 시 1.9% 위험 증가 (p=0.18, 비유의).
95% CI for RR(Stage IV vs I):
\[ \exp(1.6931 \pm 1.96 \times 0.4222) = (2.38, 12.44) \]
→ Stage IV 환자가 Stage I 환자의 2.38 배에서 12.44 배 사망 위험.
3.3 Linear Contrast — Stage III vs II
관심: ANOVA 표에 직접 없음, 계산 필요.
점추정:
\[ \widehat{RR}(\text{III vs II}) = \exp(b_2 - b_1) = \exp(0.6383 - 0.1386) = \exp(0.4997) = 1.65 \]
\(\text{Var}(b_2 - b_1)\) — covariance matrix 식 8.5.4 사용:
\[ \widehat{V}(b) = \begin{pmatrix} 0.2137 & 0.0683 & 0.0690 & 0.0008 \\ 0.0683 & 0.1268 & 0.0682 & 0.0003 \\ 0.0690 & 0.0682 & 0.1783 & -0.0004 \\ 0.0008 & 0.0003 & -0.0004 & 0.0002 \end{pmatrix} \]
\[ \text{Var}(b_2 - b_1) = V(b_2) + V(b_1) - 2 \text{Cov}(b_2, b_1) = 0.1268 + 0.2137 - 2(0.0683) = 0.2039 \]
\[ \text{SE}(b_2 - b_1) = \sqrt{0.2039} = 0.4515 \]
95% CI for \(\beta_2 - \beta_1\):
\[ 0.4997 \pm 1.96 \times 0.4515 = (-0.385, 1.385) \]
95% CI for RR:
\[ \exp(-0.385, 1.385) = (0.68, 3.99) \]
→ CI 가 1 포함 → Stage III 와 II 차이 비유의.
Linear contrast 검정 (식 8.5.7, \(C = (-1, 1, 0, 0)\), \(\beta_0 = 0\)):
\[ X_W^2 = \frac{(b_2 - b_1)^2}{\text{Var}(b_2 - b_1)} = \frac{(0.4997)^2}{0.2039} = 1.225, \quad p = 0.27 \]
3.4 Combined Hypothesis — Stage II = III = IV
가설: \(H_0: \beta_1 = \beta_2 = \beta_3\) (3 advanced stages 의 위험 동일).
Reduced model:
- \(Z^* = Z_1 + Z_2 + Z_3\) — Stage II/III/IV 통합 indicator (vs Stage I).
- 2 param 모형: \(h(t \mid Z) = h_0(t) \exp(\beta^* Z^* + \beta_4 Z_4)\).
- Reduced LL = -193.137.
LR test:
\[ X_{LR}^2 = 2[-188.179 - (-193.137)] = 9.916, \quad \text{df}=2, \quad p = 0.007 \]
→ 적어도 한 stage 차이 (Stage II 와 IV 차이 큼).
Wald test (식 8.5.7) with
\[ \mathbf{C} = \begin{pmatrix} 1 & -1 & 0 & 0 \\ 0 & -1 & 1 & 0 \end{pmatrix}, \quad \beta_0 = 0 \]
→ \(X_W^2 = 10.7324\), df=2, p=0.0047. 두 검정 일치.
임상 해석:
- Stage II vs III, III vs IV 가 모두 같다는 가정 기각.
- Stage IV 가 II/III 보다 위험 높음.
- 단순화 모형 (advanced vs early) 는 부적절 — 4-stage 모형 필요.
4 § 8.5 — Klein Example 8.3 (Kidney Race × Gender Interaction)
Coding (8.1~8.2 의 4-group 과 다른 표현):
- \(Z_1 = 1\) if female.
- \(Z_2 = 1\) if black.
- \(Z_3 = Z_1 \times Z_2 = 1\) if black female (interaction).
모형:
\[ h(t \mid Z) = h_0(t) \exp(\beta_1 Z_1 + \beta_2 Z_2 + \beta_3 Z_3) \]
MLE (Breslow ties):
\[ \mathbf{b} = (-0.2484, -0.0888, 0.7455) \]
| Variable | df | \(b\) | SE | Wald \(\chi^2\) | p-value | RR |
|---|---|---|---|---|---|---|
| \(Z_1\): Female | 1 | -0.2484 | 0.1985 | 1.57 | 0.21 | 0.78 |
| \(Z_2\): Black | 1 | -0.0888 | 0.2918 | 0.09 | 0.76 | 0.92 |
| \(Z_3\): Female × Black | 1 | 0.7455 | 0.4271 | 3.05 | 0.08 | 2.11 |
\(\beta_3\) 의 의미:
- “Black 여성 의 effect” 가 main effects 의 합에 추가로 미치는 영향.
- \(\exp(0.7455) = 2.11\) — black female 의 추가 (excess) RR.
- p=0.08 (marginal, 통상 유의수준 0.05 에서 비유의).
4 그룹 RR (white female = reference):
- Black male: \(\exp(0 + (-0.0888) - (-0.2484)) = \exp(0.1596) = 1.17\).
- White male: \(\exp(0 + 0 - (-0.2484)) = \exp(0.2484) = 1.28\).
- Black female: \(\exp(-0.2484 + (-0.0888) + 0.7455 - (-0.2484)) = \exp(0.6567) = 1.93\).
→ § 8.1~8.2 의 4-group dummy coding 결과 (1.17, 1.28, 1.93) 와 완전 일치.
결론:
- 두 coding (4-group dummy vs main + interaction) 의 RR 동일 — likelihood 일치.
- Interaction coefficient 는 \(\beta_3\) 의 의미가 다름 (multiplicative excess).
- p=0.08 은 race × gender interaction 의 marginal 증거 — 더 큰 표본 권장.
5 § 8.5 — Klein Example 8.2 (Stage × Age Interaction)
5.1 Full Interaction Model
모형:
\[ h(t \mid Z) = h_0(t) \exp\left(\sum_{k=1}^4 \beta_k Z_k + \beta_5 Z_5 + \beta_6 Z_6 + \beta_7 Z_7\right) \]
- \(Z_1, Z_2, Z_3\): stage dummies.
- \(Z_4\): age.
- \(Z_5 = Z_1 \cdot Z_4\) (Stage II × Age).
- \(Z_6 = Z_2 \cdot Z_4\) (Stage III × Age).
- \(Z_7 = Z_3 \cdot Z_4\) (Stage IV × Age).
MLE:
| Variable | \(b\) | SE | Wald \(\chi^2\) | p-value |
|---|---|---|---|---|
| \(Z_1\): Stage II | -7.946 | 3.6782 | 4.67 | 0.03 |
| \(Z_2\): Stage III | -0.1225 | 2.4683 | 0.003 | 0.96 |
| \(Z_3\): Stage IV | 0.847 | 2.4257 | 0.12 | 0.73 |
| \(Z_4\): Age | -0.0026 | 0.0261 | 0.01 | 0.92 |
| \(Z_5\): Stage II × Age | 0.1203 | 0.0523 | 5.29 | 0.02 |
| \(Z_6\): Stage III × Age | 0.0114 | 0.0375 | 0.09 | 0.76 |
| \(Z_7\): Stage IV × Age | 0.0137 | 0.0360 | 0.14 | 0.70 |
관찰:
- \(Z_5\) (Stage II × Age) 만 유의 (p=0.02).
- \(Z_6, Z_7\) 비유의 (Stage III, IV × Age).
5.2 LR Test for Dropping \(Z_6, Z_7\)
가설: \(H_0: \beta_6 = \beta_7 = 0\) (Stage III × Age, Stage IV × Age 둘 다 0).
Likelihood:
- Full (7 param): \(-2 \ell = 370.155\).
- Reduced (5 param, \(Z_6, Z_7\) 제거): \(-2 \ell = 370.316\).
LR test:
\[ X_{LR}^2 = 370.316 - 370.155 = 0.161, \quad \text{df}=2, \quad p = 0.92 \]
→ 두 interaction 제거 정당. 5-param 모형 채택.
5.3 Reduced Model — Klein Table 8.4
모형: \(Z_1, Z_2, Z_3, Z_4, Z_5\) (Stage II × Age 만 유지).
| Variable | \(b\) | SE | Wald \(\chi^2\) | p-value |
|---|---|---|---|---|
| \(Z_1\): Stage II | -7.382 | 3.4027 | 4.71 | 0.03 |
| \(Z_2\): Stage III | 0.6218 | 0.3558 | 3.05 | 0.08 |
| \(Z_3\): Stage IV | 1.7534 | 0.4240 | 17.11 | <0.0001 |
| \(Z_4\): Age | 0.0060 | 0.0149 | 0.16 | 0.69 |
| \(Z_5\): Stage II × Age | 0.1117 | 0.0477 | 5.49 | 0.02 |
Stage II vs I 의 RR(age):
\[ \text{RR}(\text{II vs I, age}=Z_4) = \exp(\beta_1 + \beta_5 \cdot Z_4) = \exp(-7.382 + 0.1117 \cdot Z_4) \]
계산:
- Age 76: \(\exp(-7.382 + 0.1117 \times 76) = \exp(1.107) = 3.03\).
- Age 60: \(\exp(-7.382 + 0.1117 \times 60) = \exp(-0.680) = 0.51\).
- Age 50: \(\exp(-7.382 + 0.1117 \times 50) = \exp(-1.797) = 0.166\).
해석:
- 76세: Stage II 가 Stage I 보다 3 배 위험.
- 60세: Stage II 가 Stage I 의 절반 위험 (반대 방향!).
- 50세: Stage II 가 더 안전 (이상).
Crossover 의 의미:
- 젊은 환자: Stage II 의 위험이 낮을 수도 — Stage 분류의 의미 제한.
- 고령 환자: Stage II 가 더 위험 — 진행 빠름.
- 임상 의사결정에 age 와 stage 를 함께 고려 필요.
경고: 이 해석은 모형의 함의일 뿐, 진짜 임상 효과를 보장하지 않음. 큰 표본 + 외부 검증 필요.
5.4 Linear Contrast — Age-Specific RR Test
가설: \(H_0: \beta_1 + \beta_5 \cdot \text{age} = 0\) (Stage I = II at given age).
Contrast vector:
\[ \mathbf{c} = (1, 0, 0, 0, \text{age}) \]
Wald statistic:
\[ X_W^2 = \frac{(b_1 + b_5 \cdot \text{age})^2}{V(b_1) + \text{age}^2 \cdot V(b_5) + 2 \cdot \text{age} \cdot \text{Cov}(b_1, b_5)} \]
필요한 분산 (covariance matrix 에서):
- \(V(b_1) = 11.5787\).
- \(V(b_5) = 0.00227\).
- \(\text{Cov}(b_1, b_5) = -0.1607\).
Age=76:
- 분자: \((-7.382 + 0.1117 \times 76)^2 = (1.107)^2 = 1.225\).
- 분모: \(11.5787 + 76^2 \times 0.00227 + 2 \times 76 \times (-0.1607) = 11.5787 + 13.108 - 24.426 = 0.2607\).
- \(X_W^2 = 1.225 / 0.2607 = 4.65\), p=0.03 → 차이 유의.
Age=60:
- 분자: \((-7.382 + 0.1117 \times 60)^2 = (-0.680)^2 = 0.4624\).
- 분모: \(11.5787 + 60^2 \times 0.00227 + 2 \times 60 \times (-0.1607) = 11.5787 + 8.172 - 19.284 = 0.4667\).
- \(X_W^2 = 0.4624 / 0.4667 = 0.99\), p=0.32 → 차이 비유의.
결론:
- 76세 환자: Stage I/II 차이 유의 (Stage II 더 위험).
- 60세 환자: Stage I/II 차이 비유의 (서로 비슷).
- “Crossover age” 가 약 66세 부근 (\(-7.382 + 0.1117 \times 66 = 0\)).
6 § 8.6 — Discretizing a Continuous Covariate
6.1 동기
문제: 연속 covariate \(X\) (예: age, biomarker level) 을 binary \(Z\) 로 변환.
\[ Z = \begin{cases} 1 & \text{if } X \geq C \\ 0 & \text{if } X < C \end{cases} \]
왜 이산화 하는가:
- 임상 해석 단순화 — high-risk vs low-risk 두 군으로 분류.
- KM 곡선 시각화 — 두 군 비교 plot.
- RR 단순 계산 — \(\exp(b)\) 가 직관적.
- 임상 결정 지원 — cut-off 가 진단 임계치.
문제: cut-point \(C\) 결정 방법.
잘못된 접근 (“data-oriented”):
- 표본 median 으로 분할 — 임의적, outcome 무시.
- 4분위수 분할 — 동일 한계.
- 부정확 — 효과가 있어도 놓치고, 없어도 잘못 검출.
올바른 접근 (“outcome-oriented”):
- 모든 cut-point 후보 평가.
- Outcome (생존) 차이가 가장 큰 점 선택.
- 단, multiple comparison bias 보정 필수.
6.2 Contal-O’Quigley 방법 — 식 8.6.1·2·3
Step 1 — 모든 cut-point 후보 \(C_k\) 에 대해 log-rank statistic 계산:
\[ S_k = \sum_{i=1}^D \left[d_i^+ - d_i \frac{r_i^+}{r_i}\right] \]
- \(D\): 사건 시점 수.
- \(d_i\): 시점 \(t_i\) 의 총 사망 수.
- \(r_i\): 시점 \(t_i\) 의 risk set 크기.
- \(d_i^+\): 시점 \(t_i\) 에 사망한 사람 중 \(X \geq C_k\) 인 수.
- \(r_i^+\): 시점 \(t_i\) 의 risk set 중 \(X \geq C_k\) 인 수.
Step 2 — Cut-point 선택:
\[ \widehat{C} = \arg\max_k |S_k| \]
Step 3 — Bias 보정 분산 (식 8.6.2):
\[ s^2 = \frac{1}{D-1} \sum_{i=1}^D \left\{1 - \sum_{j=1}^i \frac{1}{D-j+1}\right\} \]
Step 4 — Test statistic (식 8.6.3):
\[ Q = \frac{\max_k |S_k|}{s \sqrt{D-1}} \]
Step 5 — p-value: \(Q\) 의 점근 분포는 |Brownian Bridge| 의 supremum.
\[ p \approx 2 \exp(-2Q^2) \quad \text{for } Q > 1 \]
- \(Q \leq 1\): \(p \geq 0.30\) (검정 비유의).
- 정확 식 (식 8.6.4): \(P(Q \geq q) = 2 \sum_{j=1}^\infty (-1)^{j+1} \exp(-2j^2 q^2)\).
왜 Brownian Bridge 인가:
- 정렬된 사건 시점 \(t_1 < t_2 < \cdots < t_D\).
- 각 시점에서 누적 log-rank statistic 의 path 형성.
- 시작 (t=0) 과 끝 (t=t_D) 에서 0 (전체 평균에 대한 deviation).
- 중간 무작위 진동 → Brownian Bridge.
Sup 의 의미:
- 모든 cut-point 의 \(|S_k|\) 최대값.
- “Worst case” 검정 통계량.
- 단순 log-rank 보다 더 큰 값에 의해 기각 — multiple comparison 보정 효과.
왜 단순 log-rank 의 분포 (\(\chi^2_1\)) 가 안 되는가:
- 단순 log-rank: 미리 정한 cut-point 에서 한 번 검정.
- Cut-point 선택 후 검정: 여러 cut-point 중 max — bias 발생.
- Bonferroni 같은 보정 가능, 그러나 너무 보수적.
- Brownian bridge sup 이 정확한 점근 분포.
비유:
- 100 명의 학생이 시험을 봤다. 한 명 골라 점수가 평균과 다른지 검정 → t-test.
- 100 명 중 가장 점수 높은 학생을 골라서 평균보다 높은지 검정 → 단순 t-test 부정확.
- Cut-point 의 max 도 같은 원리 — 별도 분포 필요.
6.3 Klein Example 8.3 — Kidney by Race/Sex
데이터: 863 명 신장 이식 환자, 4 race/sex 군별로 따로 분석.
Discrete vs Continuous Model 비교:
| Race/Sex | Cut Point | \(Q\) | p-value | RR (95% CI) | Continuous \(b\) (SE) | \(p\) |
|---|---|---|---|---|---|---|
| Black/male | 58 | 0.8029 | >0.30 | 2.3 (0.5, 10.4) | 0.036 (0.024) | 0.14 |
| White/male | 41 | 3.1232 | <0.001 | 2.6 (1.6, 4.1) | 0.060 (0.010) | <0.001 |
| Black/female | 48 | 0.9445 | >0.30 | 2.6 (0.8, 8.4) | 0.034 (0.026) | <0.20 |
| White/female | 36 | 1.9310 | 0.001 | 4.4 (1.9, 10.6) | 0.042 (0.012) | <0.001 |
핵심 관찰:
White male: cut=41, Q=3.12 (p<0.001). 41세 이상이 41세 미만의 2.6 배 위험. 매우 강력.
White female: cut=36, Q=1.93 (p=0.001). 36세 이상이 4.4 배 위험. 가장 큰 효과.
Black male/female: Q < 1 (p > 0.30). Age 효과 없음 (적어도 cut-point 모형에서).
Continuous model 과 일치:
- White male/female: 둘 다 강력 (continuous p < 0.001).
- Black: 비유의 (continuous p > 0.14).
해석:
- White 군에서는 age 가 강한 risk factor — 이식 결과 예측.
- Black 군에서는 age 효과 약하거나 없음 — 다른 요인이 dominant.
- Cut-point 선택은 임상 임계치 (white male 41세, white female 36세) 로 직접 사용 가능.
Discrete 모형의 장점:
- 임상 의사 친숙 (high-risk/low-risk binary).
- 그래프 단순 (KM 곡선 2 개).
- Cut-off 가 진단 임계치로 활용 가능 (예: “41세 이상은 high-risk”).
Discrete 모형의 단점:
- 정보 손실 — age=40 과 age=70 이 동일 처리.
- Cut-point 결정의 임의성 (data-oriented 의 함정).
- Power 감소 — 연속 효과를 binary 로 압축.
Continuous 모형의 장점:
- 정보 보존 — 모든 age 정보 사용.
- 통계적 효율 — Power 큼.
- PH 가정 위반 시 detection 쉬움 (Schoenfeld residuals).
Continuous 모형의 단점:
- 임상 해석 복잡 (RR per year).
- Linear effect 가정 — quadratic, threshold 효과 놓칠 수 있음.
실무 권장:
- Continuous 모형이 1차 선택 — 정보 보존.
- Discrete 모형은 보조 — 임상 보고용 (high-risk 분류).
- Cut-point 보고 시 Contal-O’Quigley 보정 필수 (단순 log-rank 부적절).
- Martingale residuals (Ch.11 § 11.3) 으로 functional form 점검.
7 R/Python 코드 흐름
7.1 Step 1 — Local Tests (R coxph)
library(survival)
# Klein Example 8.2 — larynx
data(larynx)
larynx$stage <- factor(larynx$stage)
# Full model with stage + age
fit_full <- coxph(Surv(time, delta) ~ stage + age, data = larynx,
method = "breslow")
summary(fit_full)
# Stage II/III/IV vs I + age, ANOVA Table 8.1 재현
# Local test: stage 효과 (age 보정)
fit_age <- coxph(Surv(time, delta) ~ age, data = larynx, method = "breslow")
anova(fit_age, fit_full, test = "LRT") # LR=15.45, df=3, p=0.0015
# Linear contrast — Stage III vs II
library(multcomp)
glht_fit <- glht(fit_full, linfct = c("stage3 - stage2 = 0"))
summary(glht_fit) # RR=1.65, p=0.27, CI=(0.68, 3.99)
# Combined hypothesis: Stage II=III=IV
larynx$advanced <- as.numeric(larynx$stage != "1")
fit_red <- coxph(Surv(time, delta) ~ advanced + age, data = larynx)
anova(fit_red, fit_full, test = "LRT") # LR=9.92, df=2, p=0.0077.2 Step 2 — Stage × Age Interaction
# Full interaction (7 param)
fit_int_full <- coxph(Surv(time, delta) ~ stage * age, data = larynx,
method = "breslow")
summary(fit_int_full)
# Stage II × Age 만 유의 (p=0.02)
# Drop Z6, Z7 (Stage III/IV × Age)
larynx$stage2_age <- as.numeric(larynx$stage == "2") * larynx$age
fit_red5 <- coxph(Surv(time, delta) ~ stage + age + stage2_age, data = larynx)
anova(fit_red5, fit_int_full, test = "LRT")
# LR=0.16, df=2, p=0.92 → 두 interaction 제거 정당
# Age-specific RR (Stage II vs I)
b1 <- coef(fit_red5)["stage2"]
b5 <- coef(fit_red5)["stage2_age"]
V <- vcov(fit_red5)
age_grid <- seq(40, 80, by = 1)
rr_age <- exp(b1 + b5 * age_grid)
plot(age_grid, rr_age, type = "l",
xlab = "Age", ylab = "RR(II vs I)")
abline(h = 1, lty = 2)7.3 Step 3 — Cut-Point Discretization (R)
library(survival)
library(survminer)
# Klein Example 8.3 — kidney by race/sex
data(kidtran) # 또는 사용자 데이터
# White male subgroup
wm <- subset(kidtran, race == "white" & gender == "male")
# 모든 후보 cut-point 의 log-rank statistic
candidates <- sort(unique(wm$age))
S_k <- numeric(length(candidates))
for (i in seq_along(candidates)) {
wm$Z <- as.numeric(wm$age >= candidates[i])
fit <- survdiff(Surv(time, delta) ~ Z, data = wm)
S_k[i] <- (fit$obs[2] - fit$exp[2]) # 식 8.6.1 의 부호 부분
}
# Cut-point 선택
best <- candidates[which.max(abs(S_k))]
cat("Best cut-point:", best, "\n") # 41
# Q statistic 계산 (식 8.6.3)
D <- sum(wm$delta) # 사건 수
s2 <- (1/(D-1)) * sum(sapply(1:D, function(i) {
1 - sum(1/(D - (1:i) + 1))
}))
Q <- max(abs(S_k)) / sqrt(s2 * (D-1))
p_value <- 2 * exp(-2 * Q^2)
cat("Q =", Q, "p-value =", p_value, "\n") # Q=3.12, p<0.001
# survminer 의 surv_cutpoint (Contal-O'Quigley 자동)
sc <- surv_cutpoint(wm, time = "time", event = "delta",
variables = "age")
summary(sc) # cut-point + 통계량 요약7.4 Step 4 — Python lifelines
from lifelines import CoxPHFitter
import pandas as pd
import numpy as np
# Klein Example 8.2 — larynx
df = pd.read_csv("larynx.csv")
# Full model with stage + age
df_dummies = pd.get_dummies(df, columns=['stage'], drop_first=True)
cph = CoxPHFitter()
cph.fit(df_dummies, duration_col='time', event_col='delta')
cph.print_summary()
# Local test: drop stage dummies
cph_age = CoxPHFitter()
cph_age.fit(df[['time', 'delta', 'age']], duration_col='time', event_col='delta')
LR = 2 * (cph.log_likelihood_ - cph_age.log_likelihood_)
from scipy.stats import chi2
p_LR = 1 - chi2.cdf(LR, df=3)
print(f"LR={LR:.3f}, p={p_LR:.4f}") # LR=15.45, p=0.0015
# Cut-point search (Contal-O'Quigley 수동 구현)
def find_cutpoint(df, time, event, var):
candidates = sorted(df[var].unique())
S_k = []
for c in candidates:
df['Z'] = (df[var] >= c).astype(int)
# log-rank S_k 계산 (위 R 코드 참조)
...
return candidates[np.argmax(np.abs(S_k))]8 Practical Notes
세 검정 비교 (Li et al. 1996 Monte Carlo) — Wald, LR 거의 동등 (LR 이 약간 우수, 작은 표본). Score 가 size 부풀려 추천 안 함. 실무: Wald (보고) + LR (확인) 권장.
SAS PHREG:
- Local Wald —
TESTstatement 또는 ANOVA table 자동. - LR — 두 모형 fit 후 차이 계산 수동.
- Linear contrast —
CONTRASTstatement.
- Local Wald —
R coxph:
- ANOVA —
summary(fit)자동 출력. - LR —
anova(fit_red, fit_full, test = "LRT"). - Linear contrast —
multcomp::glht(fit, linfct = ...).
- ANOVA —
Linear contrast 의 다양성 — \(\beta_2 - \beta_1\), \(\beta_1 + 76\beta_5\), 임의 조합 가능. ANOVA 표에 직접 없는 효과는 contrast 로 계산.
Cut-point 보정 필수:
- 단순 log-rank (cut-point 선택 후) 부적절.
- Contal-O’Quigley (식 8.6.3) 또는 Jespersen (식 변형) 사용.
- Bonferroni 도 가능 (보수적).
Cut-point 의 Martingale 진단 — Ch.11 § 11.3 의 martingale residuals 로 functional form 점검 (선형 vs 임계 vs 비선형).
R 의
surv_cutpoint(survminer패키지) — Contal-O’Quigley 자동. 다중 변수도 가능.Confidence interval for RR(linear combination):
- 점추정: \(\exp(c'b)\).
- SE: \(\sqrt{c' V(b) c}\) (단변량) 또는 multi-dim Wald.
- 95% CI: \(\exp(c'b \pm 1.96 \cdot \sqrt{c' V(b) c})\).
Multiple comparison 보정 — Stage III vs II, Stage IV vs II 등 여러 contrast 동시 검정 시 Bonferroni 또는 FDR 적용.
Discrete vs Continuous — Cox 의 connectivity 검증: continuous 결과와 일치 시 cut-point 정당, 차이 클 시 nonlinearity 의심.
9 Theoretical Notes
\(I^{11}\) 의 정의 — Information matrix 의 block 분할 후 \(I^{-1}\) 의 좌상단 블록. Schur complement: \(I^{11} = (I_{11} - I_{12} I_{22}^{-1} I_{21})^{-1}\). \(\beta_2\) 의 추정 불확실성 반영.
세 local 검정의 점근 동치 — \(H_0\) 하 \(n \to \infty\) 시 \(\chi^2_q\) 분포 동일.
Linear contrast 의 일반 framework — Cox 모형의 \(\beta\) 가 정규성을 만족하므로, \(C\beta\) 도 정규. \(\widehat{V}(C\beta) = C \widehat{V}(\beta) C'\).
Wu (2001) — Cut-point 비보정 검정의 false rejection rate 가 nominal \(\alpha\) 보다 훨씬 큼 (예: \(\alpha=0.05\) 인데 0.20 reject). Contal-O’Quigley 보정 필수.
Contal-O’Quigley vs Jespersen (1986) — 둘 다 Brownian bridge sup 분포 기반. Contal-O’Quigley 의 분산 (식 8.6.2) 가 Jespersen 보다 정확 (Wu 2001 Monte Carlo).
Brownian bridge supremum 의 분포 — 정확 식 (식 8.6.4):
\[ P(Q \geq q) = 2 \sum_{j=1}^\infty (-1)^{j+1} \exp(-2j^2 q^2) \]
- \(q \leq 1\): 첫 항이 \(\geq 0.27\) → \(p \geq 0.30\) 보장.
- \(q > 1\): 둘째 항 이상 무시 가능 → \(p \approx 2 \exp(-2q^2)\).
Cut-point 의 일치 추정 — \(\widehat{C}\) 가 진짜 cut-point 로 수렴 (consistency, Contal-O’Quigley 1999).
Multiple cut-point 확장 — \(X\) 를 \(Z = 0/1/2\) 의 3 카테고리로 확장 가능. 두 cut-point 동시 추정 → max bivariate Brownian sheet.
Cut-point 의 임상 의미 — 진짜 threshold 효과 (예: cancer staging) 가 있을 때 정당. Linear effect 인 경우 cut-point 는 인위적.
Residual 진단 (Ch.11 미리보기) — Martingale residuals plot 으로 functional form 점검. 곡선이 step 형태 → cut-point 정당, smooth → linear 또는 spline.
10 핵심 takeaway
Subset hypothesis \(H_0: \beta_1 = \beta_{10}\) — Wald 식 8.5.1 (\(I^{11}\) Schur complement 의 역), LR 식 8.5.2 (full vs restricted), Score 식 8.5.3. Local 검정의 표준 framework.
Linear contrast 식 8.5.7 — \(\mathbf{C}\beta = \mathbf{C}\beta_0\) 의 임의 contrast 검정. Stage III vs II, age=76 에서 RR=1, 모든 stage 동일 등 다양한 가설 통일 처리.
Klein Example 8.2 larynx 의 stage 효과 — Subset \(H_0: \beta_1 = \beta_2 = \beta_3 = 0\) LR=15.45 (p=0.0015) 강력 기각. 그러나 ANOVA 표에서 Stage II vs I (p=0.76) 비유의 — Stage IV 가 효과의 주된 원인.
Stage III vs II contrast — RR=1.65, 95% CI=(0.68, 3.99) 비유의. ANOVA 표에 직접 없는 효과는 covariance matrix 로 SE 계산.
Stage × Age interaction — \(Z_5\) (Stage II × Age) 만 유의 (p=0.02). \(Z_6, Z_7\) 결합 LR=0.16 (p=0.92) → 제거. 5-param reduced 모형 채택. Stage II vs I 의 RR 이 age 에 따라 변동 (age 76 RR=3.03, age 60 RR=0.51 — crossover).
Cut-point Contal-O’Quigley (식 8.6.3) — 모든 cut-point 의 log-rank max 의 분포가 Brownian bridge sup. \(p \approx 2\exp(-2Q^2)\). 단순 log-rank 부적절 (multiple comparison bias).
Klein Example 8.3 kidney by race/sex cut-point — White male cut=41 Q=3.12 (p<0.001) RR=2.6, White female cut=36 Q=1.93 (p=0.001) RR=4.4 — 강력 효과. Black 군 Q<1 비유의. Discrete 와 continuous 모형 결과 일치 → cut-point 정당.
11 관련 주제
선행 지식
- Ch.8 Overview
- § 8.1~8.2 — Cox 모형 + Coding
- § 8.3~8.4 — Partial Likelihood + Ties
- Ch.7 § 7.3 — Log-Rank Test (Cut-point statistic 의 기반)
- § 1.7 — Kidney Transplant (Examples 8.3)
- § 1.8 — Larynx (Example 8.2)
후속 주제
- § 8.7 — Model Building Strategy (forward/backward + AIC)
- § 8.8 — Survival Function Estimation (Breslow estimator)
- § 8.9 — Ch.8 Exercises
- Ch.9 — Time-Varying Coefficients
- Ch.11 — Martingale Residuals (cut-point 진단)
관련 개념
- Schur complement — block matrix 의 역
- Brownian bridge — Gaussian process, 사건 시점 path 의 점근 분포
- Multiple comparison — Bonferroni, FDR, sup-statistic
- ANOVA F-test — OLS 의 partial test (Cox 의 LR 과 유사)
- Conditional logistic regression — discrete cut-point 모형