1 서론 — 왜 “비례” 가정이 중요한가
Ch.13 개관 (12-1) 에서 비례 위험 모형의 형식 은 이미 소개했다.
\[h(t; x) = \lambda(t) \exp(\beta^T x). \tag{13.1}\]
이 한 줄의 가정 뒤에는 강력한 구조적 제약 이 있다. 그 제약의 성격을 이해하는 것이 §13.2 의 핵심 목적이다.
비례 위험 모형이 부과하는 제약:
- 공변량 효과가 시간에 무관 — 치료 효과가 첫 달이나 다섯 해 후나 같은 위험비.
- 공변량 효과가 곱셈적 — 두 공변량 값의 합 이 위험의 곱 을 만든다.
- 기저 위험이 분리 가능 — \(\lambda(t)\) 는 모든 개체가 공유하는 “시간의 모양”.
이 세 가정이 함께 깨지면 모형이 데이터를 체계적으로 편향시킨다. 따라서 가정의 기하적 의미 · 검증 방법 · 위배 시 대안 을 명확히 해야 한다.
이 포스트는 Ch.13 overview (12-1) 에서 간략히 언급한 비례 가정을 수학적 정밀도 로 해부하고, 실무에서 가정을 확인하고 대응하는 도구를 제공한다.
2 일반 형식과 Oakes 의 관찰
2.1 가장 일반적인 비례 위험
McCullagh-Nelder 가 §13.2 에서 먼저 제시하는 일반 형식:
\[h(t; x) = \lambda(t) \exp\{G(x; \beta)\}.\]
여기서 \(G(x; \beta)\) 는 공변량과 모수의 임의 함수 — 선형이 아니어도 된다. 지수 함수 \(\exp\{\cdot\}\) 로 감싼 이유는 위험이 양수 여야 하기 때문.
2.2 비례성의 정의
두 개체 \(A, B\) 의 위험비:
\[ \frac{h(t; x_A)}{h(t; x_B)} = \frac{\lambda(t) \exp\{G(x_A; \beta)\}}{\lambda(t) \exp\{G(x_B; \beta)\}} = \exp\{G(x_A; \beta) - G(x_B; \beta)\}. \]
\(\lambda(t)\) 가 상쇄 되어 시간 무관 상수 — 이것이 “비례” 의 의미. \(G\) 가 무슨 형태이든 비례성은 유지.
2.3 Oakes (1981) 의 관찰 — 곱셈성은 선택이지 필연이 아님
\(G(x; \beta) = \beta^T x\) (선형) 이라고 추가 가정하면 (13.1) 이 된다. 이 가정의 함의:
\[\frac{h(t; x_A)}{h(t; x_B)} = \exp\{\beta^T (x_A - x_B)\} = \prod_j \exp\{\beta_j (x_{A,j} - x_{B,j})\}.\]
위험비가 각 공변량 차이의 기여로 분해 된다. 공변량 \(j\) 의 기여는 \(\exp(\beta_j \Delta x_j)\). 이 분해가 “곱셈적 (multiplicative)” 이라는 의미.
Oakes (1981) 가 지적: 곱셈성은 관례 일 뿐, 비례 위험성 자체와 무관. 비선형 \(G\) (예: \(G(x; \beta) = \beta_0 + \beta_1 x_1 + \beta_2 x_1^2 + \beta_3 \log x_2\)) 를 써도 비례성은 유지된다.
비례 (proportionality): 시간에 따른 위험의 모양 이 모든 개체에서 같다. \(\lambda(t)\) 는 공유되고 개체별 차이는 수평 이동 (로그 스케일에서).
곱셈 (multiplicativity): 서로 다른 공변량들의 결합 효과 가 개별 효과의 곱 이다. 즉 교호작용 없음.
(13.1) 은 두 가정을 함께 부과한다. 실무에서 “비례 위험 모형이 깨진다” 고 할 때 보통 비례 가정을 의심하지만, 사실 곱셈성 도 동시에 의심할 여지가 있다. 두 가정을 분리해서 검증하는 것이 엄밀한 진단.
2.4 왜 선형 (13.1) 이 표준이 되었는가
- 해석 용이성: \(\beta_j\) 가 “\(x_j\) 1 단위 증가가 위험을 \(e^{\beta_j}\) 배 증가” 로 번역된다.
- 수치 안정성: 선형 예측자는 IRLS 수렴이 일반적으로 좋다.
- GLM 틀 통합: Aitkin-Clayton 환원 (12-1) 이 선형 가정 하에서 가장 깔끔.
- Cox 의 편의: 부분 우도 유도가 선형 가정 하에서 표준.
비선형 \(G\) 는 필요하면 쓸 수 있지만, 해석·구현의 비용이 크므로 실무에서는 선형 + 변환 으로 충분한 경우가 많다 (§11.4 Box-Tidwell 정신).
3 비례 가정의 기하적 의미
3.1 log-log 변환으로의 이동
비례 위험 모형의 생존 함수 (§12-1 에서 유도):
\[S(t; x) = \exp\{-\Lambda(t) e^{\beta^T x}\}.\]
양변에 \(-\log\) 두 번 취하면
\[\log(-\log S(t; x)) = \log \Lambda(t) + \beta^T x. \tag{A}\]
좌변을 complementary log-log 변환 이라고 부른다. 이 변환 스케일에서 공변량 효과가 선형 이동 — 수직 평행이동.
3.2 두 공변량 수준의 log-log 생존 곡선
두 공변량 값 \(x_A, x_B\) 의 생존 곡선을 \(\log(-\log S)\) 스케일에 그리면:
\[\log(-\log S(t; x_A)) - \log(-\log S(t; x_B)) = \beta^T (x_A - x_B).\]
우변은 \(t\) 에 무관한 상수. 즉 두 곡선은 평행 수직 이동 관계.
비례 가정이 옳으면 각 공변량 그룹 (예: 치료군 vs 대조군) 의 Kaplan-Meier 생존 함수를 \(\log(-\log \widehat S(t))\) 스케일로 플롯했을 때 평행 곡선 이 나와야 한다.
실제 데이터에서는 완전한 평행은 드물지만 시간 축에서 유지되는 수직 간격 이 핵심 기준. 만약:
- 두 곡선이 교차 한다 → 비례 가정 명백히 깨짐 (효과 방향이 시간에 따라 반전).
- 두 곡선의 간격이 시간에 따라 벌어지거나 좁혀진다 → 비례 가정 약함 (효과 크기가 시간 변화).
- 두 곡선이 서로 수렴한다 → 효과가 장기적으로 사라지는 패턴.
이것이 비례 가정의 가장 단순한 비공식 진단. 데이터 탐색 초기에 반드시 확인.
3.3 위험비의 시간 무관성 재확인
- 식에서 시간 무관 상수 \(\beta^T(x_A - x_B)\) 는 로그 위험비 로 해석할 수 있다.
\[\log \text{HR}(t) = \log \frac{h(t; x_A)}{h(t; x_B)} = \beta^T (x_A - x_B).\]
실제 데이터에서 \(\log \text{HR}(t)\) 를 추정해 시간에 따라 플롯하면 수평선 이 나와야 한다. 이것이 Schoenfeld 잔차 기반 검정의 근간.
4 비례 가정의 공식 검정
4.1 Schoenfeld 잔차 (Schoenfeld, 1982)
Cox 부분 우도 (§13.5) 에서 각 사망 시점 \(t_j\) 의 스코어 기여:
\[U_j = x_j - \bar x(t_j), \qquad \bar x(t_j) = \frac{\sum_{l \in R(t_j)} x_l e^{\beta^T x_l}}{\sum_{l \in R(t_j)} e^{\beta^T x_l}}.\]
Schoenfeld 잔차 = 사망자의 공변량에서 위험집합의 가중 평균 을 뺀 값. 비례 가정 하에서 \(E[U_j] = 0\) 모든 \(j\).
검정: \(U_j\) 가 시간 순 으로 나열됐을 때 체계적 추세가 있는가. 추세가 있으면 비례 가정 위배.
구체적으로 Grambsch & Therneau (1994) 의 스케일된 Schoenfeld 잔차 \(U_j^*\) 와 시간의 변환 \(g(t_j)\) 사이의 상관을 검정:
\[H_0: \text{corr}(U_j^*, g(t_j)) = 0 \quad \forall j.\]
\(g(t)\) = 항등, 로그, Kaplan-Meier 변환 등 선택. R survival::cox.zph(), Python lifelines.CoxPHFitter.check_assumptions() 이 표준 구현.
4.2 시간 의존 \(\beta\) 검정
더 엄격한 검정: 확장 모형
\[\log h(t; x) = \log \lambda(t) + \beta^T x + \gamma (x \cdot g(t))\]
에서 \(\gamma = 0\) 검정. \(g(t)\) 는 시간 변환 (로그, 제곱, etc.). \(\gamma\) 가 유의하게 0 아니면 효과가 시간에 따라 변함 — 비례 위배.
4.3 로그-로그 생존 플롯 공식화
앞서 본 시각 검증의 공식 버전: 두 그룹의 KM 추정 \(\widehat S_A(t), \widehat S_B(t)\) 의 \(\log(-\log)\) 차이 \(\widehat D(t)\) 가 상수인지 검정. \(\widehat D(t)\) 의 기울기를 선형 회귀 로 적합하고 기울기 0 검정.
4.4 세 검정의 비교
| 검정 | 강점 | 약점 |
|---|---|---|
| log-log 플롯 | 시각적, 누락 방향 잡음 | 연속 공변량에는 부적절 (그룹화 필요) |
| Schoenfeld 잔차 | 연속 공변량 지원, 표준 구현 | 작은 효과는 놓칠 수 있음 |
| 시간 의존 \(\beta\) 검정 | 엄격, 특정 시간 함수 검정 | \(g(t)\) 선택이 자의적 |
실무 권고: 세 도구 모두 를 순차 적용. 시각 → 표준 Schoenfeld → 의심되면 시간 의존 \(\beta\).
5 가정 위배 시 처방
5.1 처방 1 — 계층화 Cox 모형 (Stratified Cox)
공변량 \(z\) 가 비례 가정을 깨는 주범이면, \(z\) 의 각 수준마다 다른 \(\lambda(t)\) 를 허용:
\[h(t; x, z = k) = \lambda_k(t) \exp(\beta^T x), \quad k = 1, \ldots, K.\]
\(z\) 는 모형에서 빠지고 계층 변수 로 사용. 각 계층의 위험집합 이 독립적으로 구성되어 부분 우도가 계층별로 계산되고 곱해진다.
장점: 비례 가정이 깨지는 방향의 효과를 숨긴다 (영향 배제). 단점: \(z\) 자체의 효과는 추정 못 함. 계층 내 공변량 \(x\) 의 효과만 추정.
전형적 사용: 연령을 범주화해 계층으로, 관심 공변량 (치료) 을 모형에.
5.2 처방 2 — 시간 의존 계수
공변량 \(x\) 의 효과가 시간에 따라 변하면:
\[\log h(t; x) = \log \lambda(t) + \beta(t) x, \qquad \beta(t) = \beta_0 + \beta_1 g(t).\]
\(g(t)\) = 선형, 로그 등. 선형 예측자에 \(x\) 와 \(x \cdot g(t)\) 두 항 포함.
계산 주의: 이 모형은 시간 의존 공변량으로 분류되므로 counting process 형식 으로 데이터를 재구성해야 한다. 각 개체가 시간 구간마다 별도 행 으로 들어가고, 구간 안에서 위험집합에 속한다.
5.3 처방 3 — 가속 고장 시간 (AFT) 모형
완전히 다른 모수화: 시간 스케일 자체 를 공변량으로 이동.
\[\log T = \beta^T x + \sigma \epsilon, \qquad \epsilon \sim F_0.\]
\(F_0\) = 표준 오차 분포 (로그 정규, Weibull, 로지스틱 등). 공변량이 생존 시간의 스케일 에 곱셈적 영향:
\[S(t; x) = S_0(t / e^{\beta^T x}).\]
해석: 치료가 생존 시간을 \(e^{\beta_{\text{treat}}}\) 배 연장 (또는 단축).
비례 위험 vs AFT 비교: - PH: 위험비가 일정. 해석 = “얼마나 빠르게 죽을 위험이 오르는가”. - AFT: 시간 배수가 일정. 해석 = “평균 수명이 얼마나 연장되는가”.
Weibull 은 두 모형의 교집합: Weibull PH 와 Weibull AFT 가 같은 모형이다 (다른 모수화).
해석 차이: 임상에서 PH 는 “단기 위험 감소” 를 강조, AFT 는 “장기 수명 연장” 을 강조. 도메인 맥락에 따라 선택.
5.4 언제 어떤 처방을 쓰나
| 상황 | 처방 |
|---|---|
| 연속 공변량이 비례 위배 | 시간 의존 \(\beta\) |
| 범주형 공변량이 비례 위배 · 그 공변량은 관심 아님 | 계층화 Cox |
| 공변량 효과 방향이 시간에 따라 역전 | 시간 의존 \(\beta\) 또는 교차 항 |
| 비례 자체가 생물학적으로 맞지 않음 | AFT 전환 고려 |
| 효과가 특정 시점 이후 사라짐 | 시간 의존 \(\beta\) 또는 piecewise 모형 |
6 \(\lambda(t)\) 의 처리 — 모수적 vs Cox
6.1 모수적 접근 (§13.3)
\(\lambda(t)\) 를 명시적 함수 형태로 가정:
- 지수: \(\lambda(t) = \lambda\)
- Weibull: \(\lambda(t) = \alpha t^{\alpha-1}\)
- 극치값: \(\lambda(t) = \alpha e^{\alpha t}\)
- 일반 감마, 역 가우시안 등
장점: - 완전한 분포 모형 — 밀도·생존·위험 모두 명시. - 외삽 가능 — 관측 범위 밖 예측. - Aitkin-Clayton 환원 으로 GLM 소프트웨어에서 추정. - 효율 높음 (올바른 분포일 때).
단점: 분포 선택이 틀리면 편향.
6.2 Cox 비모수 접근 (§13.5)
\(\lambda(t)\) 를 아예 추정하지 않고 \(\beta\) 만 추정. 부분 우도 \(L_P(\beta) = \prod \frac{e^{\beta^T x_j}}{\sum_{l \in R(t_j)} e^{\beta^T x_l}}\).
장점: - 분포 가정 불필요 — \(\lambda(t)\) 가 어떤 형태든 상관없이 \(\beta\) 일치 추정. - 강건 — 분포 오명세에 덜 민감. - 공변량 효과 해석이 명확.
단점: - \(\lambda(t)\) 를 추정 못 함 — 생존 시간의 절대값 예측 어려움. - 외삽 제한. - 사망 시점 개수가 적으면 일부 효율 손실.
6.3 McCullagh-Nelder 의 관찰
“실무에서 모수적 \(\lambda(t)\) 와 Cox 의 추정·추론 결과 차이가 놀랍도록 작다” (Ch.13 §13.2 마지막 문장).
이유는 Ch.13 overview (12-1) 에서 언급한 점근 직교성: \(\lambda(t)\) 의 형태 선택이 \(\beta\) 추정에 거의 영향을 주지 않는다. 따라서 Cox 의 \(\lambda(t)\) 포기가 큰 비용이 아니다.
실무 권고:
- 예측·외삽이 목적 이면 모수적 (Weibull 이 범용).
- 인과 추론·처치 효과 추정 이 목적이면 Cox.
- 강건성 확인 을 위해 두 방법 모두 돌려 \(\widehat\beta\) 일치 여부 확인.
7 Python 실전 — 비례 가정 검증
7.1 백혈병 데이터로 log-log 플롯과 Schoenfeld
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Freireich (1963) 백혈병 — 12-1 에서 사용한 데이터
t1 = [6, 6, 6, 6, 7, 9, 10, 10, 11, 13, 16, 17, 19, 20, 22, 23, 25, 32, 32, 34, 35]
w1 = [1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0]
t2 = [1, 1, 2, 2, 3, 4, 4, 5, 5, 8, 8, 8, 8, 11, 11, 12, 12, 15, 17, 22, 23]
w2 = [1] * 21
df = pd.DataFrame({
'time': t1 + t2,
'event': w1 + w2,
'group': ['drug']*21 + ['placebo']*21
})7.1.1 log-log 생존 플롯
from lifelines import KaplanMeierFitter
fig, ax = plt.subplots(figsize=(8, 5))
kmf = KaplanMeierFitter()
for grp in ['drug', 'placebo']:
mask = df['group'] == grp
kmf.fit(df.loc[mask, 'time'], df.loc[mask, 'event'], label=grp)
S = kmf.survival_function_.iloc[:, 0]
# log(-log S) 플롯 (S = 0 이나 1 은 제외)
S_valid = S[(S > 0) & (S < 1)]
log_log_S = np.log(-np.log(S_valid))
ax.plot(np.log(S_valid.index), log_log_S, marker='o', label=grp)
ax.set_xlabel(r'$\log t$')
ax.set_ylabel(r'$\log(-\log \hat S(t))$')
ax.set_title('log-log 생존 플롯 — 평행하면 비례 가정 OK')
ax.legend(); ax.grid(alpha=0.3)
plt.show()해석: 두 곡선이 대략 평행 하면 비례 가정 유효. 교차하거나 확연히 벌어지면 의심.
7.1.2 Schoenfeld 잔차 검정
from lifelines import CoxPHFitter
from lifelines.statistics import proportional_hazard_test
cph = CoxPHFitter()
df_fit = df.copy()
df_fit['group_num'] = (df_fit['group'] == 'placebo').astype(int)
cph.fit(df_fit[['time', 'event', 'group_num']], 'time', 'event')
# Schoenfeld 검정
result = proportional_hazard_test(cph, df_fit[['time', 'event', 'group_num']],
time_transform='rank')
print(result.summary)
# p-value 가 크면 (>0.05) 비례 가정 유지기대: Freireich 데이터는 PH 가정을 대체로 만족하는 것으로 알려져 있다 (p > 0.1).
7.1.3 시간 의존 \(\beta\) 검정 (수동)
# 확장 모형: β(t) = β_0 + β_1 log(t)
# Counting process 형식으로 데이터 재구성
# (lifelines 의 TimeVaryingCoxFitter 필요)
from lifelines import CoxTimeVaryingFitter
from lifelines.utils import to_long_format, add_covariate_to_timeline
# 원본 데이터를 long format 으로
df_long = to_long_format(df_fit, duration_col='time', event_col='event')
# 시간 의존 공변량 group × log(t) 추가는 복잡 — 생략하고 간단한 확인만실무에서는 lifelines.CoxTimeVaryingFitter 또는 R survival::coxph(Surv(time, event) ~ group + tt(group), tt=function(x,t,...) x*log(t)) 사용.
8 요약
§13.2 의 핵심 메시지:
8.1 비례 가정의 세 층위
- 형식: \(h(t;x) = \lambda(t) \exp\{G(x;\beta)\}\) — 시간과 공변량의 곱셈적 분리.
- 기하: \(\log(-\log S)\) 스케일에서 평행 이동 관계.
- 추정: \(\widehat\beta\) 는 \(\lambda(t)\) 선택과 점근 직교 — Cox 모수적 동등성.
8.2 실무 체크리스트
[1] 데이터 적합 전: log-log 생존 플롯으로 시각 진단
│
[2] Cox 적합 후: Schoenfeld 잔차 검정 (cox.zph)
│
[3] 의심되면: 시간 의존 β 검정 또는 stratified Cox
│
[4] 일반 의심: AFT 모형과 비교, 추정치 비슷하면 PH 유지
8.3 두 가정의 분리 점검
비례: \(\lambda(t)\) 가 공유되는가? — log-log 평행 검정. 곱셈: \(G\) 가 선형인가? — 교호작용 항 유의성 검정, 비선형 변환 (§11.4).
많은 분석가가 “비례 위배” 라고 할 때 사실 곱셈성 위배 일 수 있다. 두 가정을 분리해서 점검하는 것이 엄밀한 실무.
9 관련 주제
선행 지식
- Models for Survival Data — 개관 (McCullagh Ch.13) — Aitkin-Clayton 환원
- Logistic Regression: The Model — 오즈비 해석 — exp(β) 배수 해석의 유비
- Non-Linear Parameters in the Covariates (McCullagh §11.4) — 비선형 \(G(x;\beta)\) 취급
직접 관련 — 진단
- Model Checking — 개관 (McCullagh Ch.12)
- Score Tests for Extra Parameters (McCullagh §12.3) — 시간 의존 \(\beta\) 검정의 이론
- Checks for Systematic Departure (McCullagh §12.6)
관련 개념
- 생존 분석 개요 — Kleinbaum 기반
- (후속) Kaplan-Meier · 로그 순위 검정
후속 주제 — Ch.13 심화