1 Cox PH — 반모수적 PH 모형
\[h(t \mid X) = h_0(t) \cdot \exp(\beta^T X)\]
- \(h_0(t)\): 비모수 baseline hazard — 형태 가정 X.
- \(\exp(\beta_j)\): \(X_j\) 1 단위 증가당 HR.
핵심 차별점: Parametric PH 와 달리 \(h_0(t)\) 의 형태를 가정하지 않음 (Cox, 1972; Woodward, 2014, Ch.11.6).
1.1 Cox 의 천재성 — Partial Likelihood
각 사건 시점 \(t_i\) 의 risk set \(R(t_i) = \{j : T_j \ge t_i\}\) 에서 사건이 개인 \(i\) 에서 발생할 조건부 확률:
\[L_i(\beta) = \frac{\exp(\beta^T X_i)}{\sum_{j \in R(t_i)} \exp(\beta^T X_j)}\]
부분 가능도: \[L(\beta) = \prod_{i: \delta_i=1} L_i(\beta)\]
(censored 자는 likelihood 에 기여 안 함, 단 risk set 에는 포함).
1.2 직관 — 왜 “Partial”
- 추상 정의: \(h_0(t)\) 가 분자·분모 모두에 등장 → 약분되어 사라짐. \(\beta\) 가 partial likelihood 에 식별 가능.
- 일상어 비유: 경마에서 우승마 식별 — 각 말의 절대 속도 모르고 순위만 알아도 평균적으로 빠른 말 추정 가능.
- 반사실 시나리오: 만약 full likelihood 사용하려면 \(h_0(t)\) 의 함수 형태 가정 필요. Partial likelihood 가 이 부담 회피.
핵심 통찰: 사건 시점의 정확한 값은 무시, 순위만 사용. 그래도 \(\beta\) 의 정확한 추정 가능 — Cox 의 천재성.
1.3 Partial Likelihood 의 도출
직관: 시점 \(t_i\) 의 risk set 에서 누가 사건을 겪는지의 multinomial 분포.
각 risk set 의 사건 발생 확률: \[P(\text{사건 in } i \mid \text{event at } t_i, R(t_i)) = \frac{h(t_i \mid X_i)}{\sum_{j \in R(t_i)} h(t_i \mid X_j)} = \frac{\exp(\beta^T X_i)}{\sum_{j \in R(t_i)} \exp(\beta^T X_j)}\]
\(h_0(t_i)\) 가 분자·분모에서 약분 → \(\beta\) 만 남음.
- 추상 정의: PH 가정의 분리 (\(h = h_0 \cdot e^{\beta X}\)) 가 baseline 의 약분을 가능하게 함.
- 일상어 비유: 분자·분모에 같은 항이 있으면 약분 — 최종 식이 더 단순.
- 반사실 시나리오: 만약 PH 가 깨지면 (\(h_0\) 가 X 에 의존) 약분 안 됨 → partial likelihood 정의 안 됨.
1.4 MLE — Newton-Raphson
Score function: \[U(\beta) = \frac{\partial \log L}{\partial \beta}\]
Information matrix: \[I(\beta) = -\frac{\partial^2 \log L}{\partial \beta \partial \beta^T}\]
Newton-Raphson: \[\beta^{(k+1)} = \beta^{(k)} + I^{-1}(\beta^{(k)}) U(\beta^{(k)})\]
수렴 후 \(\hat\beta\), asymptotic variance \(\hat{\text{Var}}(\hat\beta) = I^{-1}(\hat\beta)\).
2 11.6.1 Ties Handling
같은 시점에 여러 사건 발생 시 partial likelihood 의 정의가 모호.
Cox 의 partial likelihood 는 연속 시간 가정 — 같은 시점 사건 0 가정. 실제 자료는 종종 ties (예: 같은 날 사망) 발생.
2.1 3 가지 처리 방법
Breslow (default 다수 SW): \[L_i(\beta) = \frac{\exp(\beta^T \sum_{i \in D_t} X_i)}{\left(\sum_{j \in R(t)} \exp(\beta^T X_j)\right)^{d_t}}\]
Efron (정확 근사): 사건 그룹 안에서 각 사건 별로 risk set 갱신.
Exact: 모든 가능한 사건 순위의 합산 — 계산 부담 ↑.
2.2 3 방법의 비교
- Breslow: 빠르지만 ties 가 많으면 부정확.
- Efron: 빠르고 Breslow 보다 정확. 일반적 default.
- Exact: 가장 정확. 단 사건 그룹이 큰 경우 계산 부담.
3 단계 직관:
- 추상 정의: 세 방법 모두 partial likelihood 의 근사. 차이는 정확도 vs 계산 비용.
- 일상어 비유: 평균 계산의 표준 vs 가중 vs exact. 자료 크기에 따라 trade-off.
- 반사실 시나리오: 사건 동률 (5 명 같은 날 사망) 이 흔한 자료에서는 Efron 또는 Exact. 동률 거의 없으면 (continuous 시간 측정) Breslow OK.
2.3 Ties 가 흔한 자료의 예
| 자료 | Ties 빈도 | 권장 |
|---|---|---|
| 임상 시험 (일별 보고) | 흔함 | Efron |
| 인구 통계 (연 단위) | 매우 흔함 | Efron 또는 Pooled Logistic |
| 정확 시점 측정 (initiation, exit time) | 드뭄 | Breslow OK |
3 11.7 Weibull PH — Cox 의 모수적 대안
\[h(t \mid X) = \lambda_0 \gamma t^{\gamma-1} \exp(\beta^T X)\]
Cox 와의 차이: \(h_0(t) = \lambda_0 \gamma t^{\gamma-1}\) 가 명시적 모수 형태.
3.1 Weibull vs Cox — 자료 적합 비교
- 추상 정의: 두 모형의 \(\hat\beta\) 가 거의 동일하면 Weibull 가정 충족 (가능). 큰 차이면 Weibull 부적합.
- 일상어 비유: 두 측정 도구의 결과 비교 — 일치하면 측정 신뢰성 ↑.
- 반사실 시나리오: Cox 가 robust default — Weibull 결과를 검증하는 reference.
예시: - Cox 의 \(\hat\beta_{\text{smoke}} = 0.71\). - Weibull PH 의 \(\hat\beta_{\text{smoke}} = 0.69\). - 차이 작음 → Weibull 가정 OK.
만약 차이 크면: - \(\log(-\log \hat S(t))\) vs \(\log t\) plot 이 곡선 → Weibull 부적합. - Cox 의 추정이 정직.
3.2 실험 분석 — Cox PH 의 표준성
- 추상 정의: PH 가정만 충족하면 분포 무관 — 분포 misspecification 위험 회피.
- 일상어 비유: 융통성 있는 도구 — 다양한 자료 형태에 적용 가능.
- 반사실 시나리오: A/B 테스트의 retention 이 Weibull 인지 log-logistic 인지 미지 → Cox 가 안전.
실무 선택 기준: - 분포 미지 + 외삽 불필요 → Cox PH. - 분포 검증 + 외삽 필요 → Weibull PH. - 매우 짧은 추적 + 일정 hazard → Exponential PH.
4 HR 의 임상 해석
| 시나리오 | HR | 해석 |
|---|---|---|
| 흡연-폐암 | 10 ~ 30 | 흡연자 hazard 가 비흡연자의 10~30 배 |
| Statin-CV 사망 | 0.7 | Statin 사용자 hazard 가 30% 감소 |
| BP 1 mmHg ↑ | 1.02 | 1 mmHg ↑ 당 hazard 2% ↑ |
3 단계 직관:
- 추상 정의: HR 1.0 = 효과 없음. > 1 = 위험 ↑, < 1 = 보호.
- 일상어 비유: HR 2.0 = “처치군이 대조군보다 2 배 빨리 사건 발생” — 시간 차원 포함.
- 반사실 시나리오: HR ≠ RR ≠ OR — 시간 차원 + 결과 빈도에 따라 의미 다름.
5 Cox PH 의 시간 의존 공변량
\(X(t)\) — 시간 따라 변하는 변수.
\[h(t \mid X(t)) = h_0(t) \exp(\beta^T X(t))\]
예시: - 흡연 상태 (시간에 따라 금연·재흡연). - 약 복용량의 시간 변화. - A/B 테스트의 노출 강도 변화.
- 추상 정의: 사건 시점의 covariate 값을 사용 — 사건 발생 메커니즘과 정렬.
- 일상어 비유: GPS 의 실시간 위치 — 출발 위치만 보면 부정확.
- 반사실 시나리오: Baseline 만 사용하면 contamination (B6 의 경우구피임약 → IUD 전환) 못 잡음.
구현: Long-format 자료 + Cox 모형. 각 사건 시점의 covariate 값으로 risk set 평가.
6 모형 진단 — 미리 보기
PH 가정 검증 도구는 H-WOO11-6 에서 본격. 핵심: - Schoenfeld residual: 시간 vs 잔차 plot. - \(\log(-\log S(t))\) vs \(\log t\): 두 군 비교. - Time-interaction test: \(\beta(t) = \beta_0 + \beta_1 t\) 가설 검정.
7 코드 예시 — Cox PH
import numpy as np
import pandas as pd
from lifelines import CoxPHFitter, WeibullAFTFitter
np.random.seed(42)
n = 500
# 가상 자료
df = pd.DataFrame({
"smoke": np.random.binomial(1, 0.4, n),
"age": np.random.normal(60, 10, n),
"sex": np.random.binomial(1, 0.5, n),
})
# 진성: smoke HR=2, age 1 살당 HR=1.05
true_hazard_factor = np.exp(0.7 * df["smoke"] + 0.05 * (df["age"] - 60))
true_T = np.random.exponential(scale=1.0/(0.05 * true_hazard_factor))
C = np.random.uniform(0, 10, n)
df["T"] = np.minimum(true_T, C)
df["event"] = (true_T <= C).astype(int)
# Cox PH
cph = CoxPHFitter()
cph.fit(df, duration_col="T", event_col="event", formula="smoke + age + sex")
print(cph.summary)
# HR
print("\nCox HR:")
for var in ["smoke", "age", "sex"]:
HR = np.exp(cph.params_[var])
lo, hi = np.exp(cph.confidence_intervals_.loc[var])
print(f" {var}: HR = {HR:.2f} ({lo:.2f}, {hi:.2f})")
# Weibull PH 비교
waft = WeibullAFTFitter()
waft.fit(df, duration_col="T", event_col="event", formula="smoke + age + sex")
print("\nWeibull AFT log-time effects (negate for PH):")
print(waft.summary)해석: Cox 와 Weibull 의 결과 비교가 가정 검증.
8 A/B 테스트의 Cox PH
# A/B 테스트의 retention 분석
df["treatment"] = np.random.binomial(1, 0.5, n)
df["pre_engagement"] = np.random.normal(0, 1, n)
# 진성: treatment 가 churn HR 0.8 (보호)
hazard_factor = np.exp(-0.22 * df["treatment"] + 0.3 * df["pre_engagement"])
df["tenure"] = np.random.exponential(scale=1.0/(0.005 * hazard_factor))
df["churned"] = (df["tenure"] <= 365).astype(int)
df["tenure"] = np.minimum(df["tenure"], 365)
cph = CoxPHFitter()
cph.fit(df, duration_col="tenure", event_col="churned",
formula="treatment + pre_engagement")
HR_treat = np.exp(cph.params_["treatment"])
print(f"Treatment HR: {HR_treat:.3f} (< 1 → retention 향상)")해석: HR < 1 → treatment 가 churn 을 줄임. 임상 직관과 일치.
9 Frailty Models — Random Effect Cox
같은 cluster (가족·병원·연구) 의 individual 간 상관 처리.
\[h(t \mid X, u) = u \cdot h_0(t) \exp(\beta^T X)\]
\(u\) = frailty (random effect). 흔히 \(u \sim \text{Gamma}\) 또는 \(\log u \sim N\).
- 추상 정의: 미관측 heterogeneity 모형. Cluster correlated 자료의 표준.
- 일상어 비유: 가족별 유전 요인 — 같은 가족의 구성원이 비슷한 위험.
- 반사실 시나리오: Cluster 무시 시 SE 부정확. Frailty 가 정직.
활용: - Family studies. - Multi-center 임상 시험. - Recurrent events (한 사람의 다중 사건).
10 Q&A — Cox PH 의 흔한 오해
A: 아니다. Breslow 추정량으로 \(\hat S_0(t)\) 산출 후 예측.
3 단계 직관:
- 추상 정의: \(\hat S_0(t)\) = Breslow estimator (NA 의 일반화).
- 일상어 비유: 자유 곡선의 적합 후 추출.
- 반사실 시나리오: Cox 가 baseline 추정 가능 → 예측 가능. 단 외삽 불가.
A: 아니다. 임상 의의 평가 + 기간별 분석.
3 단계 직관:
- 추상 정의: 위반의 정도 + 임상 의의 결정.
- 일상어 비유: 자동차 정렬 미세 위반 — 운전 가능 vs 큰 위반 — 정비 필요.
- 반사실 시나리오: 작은 위반 시 Cox 그대로. 큰 위반 시 stratified 또는 시간 분할.
11 결론
Cox PH 는 partial likelihood 의 천재성 + 비모수 baseline 으로 robust default 가 됨. Ties handling 은 Efron 표준. Weibull PH 와의 결과 비교가 가정 검증의 1 차 도구. Time-varying covariate 으로 contamination 처리 가능. Frailty 모형이 cluster·recurrent events 의 일반화.
다음 글 (H-WOO11-6) 에서 PH 가정의 진단 도구를 본다.
12 관련 주제
- Survival·Cox 회귀 개관
- 모수적 PH
- 1111-11-11, 모형 진단
Statistics 크로스링크
Phase B 크로스링크