Models for Survival Data — 개관 · Aitkin-Clayton 의 Poisson GLM 환원 (McCullagh Ch.13)

생존·위험·누적 위험 함수 · 비례 위험 모형 · 지수·와이블·극치값 · 부분 우도

McCullagh & Nelder (1989) Ch.13 을 개관한다. 의료 임상시험·공학 신뢰성에서 생존 데이터가 중도절단(censoring)시간 의존 공변량 두 특징으로 여타 데이터와 구별된다. 생존 함수 \(S(t) = 1 - F(t)\), 위험 함수 \(h(t) = f(t)/\{1-F(t)\}\), 누적 위험 \(\Lambda(t) = \int \lambda(u) du\) 의 정의와 상호 유도를 전개한다. 비례 위험 모형 \(h(t;x) = \lambda(t) \exp(\beta^T x)\) 의 구조적 가정 — 두 개체의 위험비가 시간에 무관 — 그리고 Cox (1972a) 의 비모수 처리 vs 모수적 \(\lambda(t)\) 선택. McCullagh-Nelder 의 핵심 공헌인 Aitkin-Clayton (1980) 환원: \(\mu_i = \Lambda(t_i) e^{\eta_i}\), \(w_i\) 를 Poisson 반응으로 보면 로그 가능도가 offset \(\log \Lambda(t_i)\) 를 가진 포아송 GLM 과 동일. 지수 · 와이블 · 극치값 분포의 offset 형태와 Weibull 의 \(\alpha\) 교대 추정 절차. Freireich (1963) 백혈병 완화 시간 예제에서 지수·Weibull·Cox 세 방법의 추정치 일치를 보인다.

Statistics
GLM
저자

Kwangmin Kim

공개

2026년 04월 21일

1 서론 — 왜 생존 데이터는 다른가

Ch.13 까지 GLM 은 완전히 관측된 반응 변수를 다뤘다. 연속·이산·비율 등 형태는 달라도 매 관측치의 값이 명시적으로 주어졌다. 생존 데이터는 이 가정을 근본적으로 깨뜨린다.

생존 데이터의 두 가지 구별 특징:

  1. 중도절단 (censoring): 연구가 끝날 때 어떤 개체의 사건 시점이 알려지지 않은 경우. 예: 환자가 6 개월 시점에 아직 생존 중이지만 연구 종료 → “6 개월 이상 생존” 만 안다. 정확한 시간은 영원히 관측 불가.
  2. 시간 의존 공변량 (time-dependent covariates): 관측 중에 값이 변하는 공변량. 예: 환자의 혈압, 치료 용량 변경, 직업 변화. 한 값 \(x_i\) 로 대표 못 함.

이 두 특징은 표준 GLM 의 독립 관측 + 고정 공변량 가정을 벗어나게 한다. 따라서 별도 이론이 필요하다.

중도절단의 세 유형
유형 정의 관측
I형 (Type I) 사전 지정 시점 \(c\) 에 연구 종료 \(T \wedge c\) 관측
II형 (Type II) 사전 지정 사건 수 \(r\) 까지 관찰 \(r\) 번째 사건 시점까지만
무작위 (Random) 각 개체마다 무작위 중도절단 시간 \(C_i\) \(\min(T_i, C_i)\) 와 지표

Ch.13 은 주로 우측 중도절단 (right censoring) — 즉 \(T_i > C_i\) 인 경우 \(C_i\) 만 관측 — 을 다룬다. 좌측·구간 중도절단은 §13.7 연습에서 잠깐 언급.

McCullagh & Nelder Ch.13 의 핵심 공헌은 Aitkin-Clayton (1980) 이 보인 놀라운 환원 이다 — 모수적 비례 위험 모형의 로그우도가 offset 을 가진 포아송 GLM 의 로그우도와 동일하다. 이 환원이 GLM 소프트웨어로 생존 분석을 처리할 수 있게 만든다.

이 글은 §13.1-§13.5 의 핵심을 압축한다. 하위 섹션별 심화는 후속 포스트 (12-2, 12-3, …) 에서 다룬다.

2 생존·위험·누적 위험 함수의 삼각 관계

2.1 기본 정의

생존 시간 \(T \geq 0\) 의 밀도 함수 \(f(t)\), 분포 함수 \(F(t) = \int_0^t f(s) ds\) 일 때:

생존 함수 (survivor function):

\[S(t) = \Pr(T > t) = 1 - F(t).\]

\(t\) 시점에 아직 살아있을 확률. \(S(0) = 1\), \(\lim_{t \to \infty} S(t) = 0\), 단조 감소.

위험 함수 (hazard function):

\[h(t) = \lim_{\delta t \to 0} \frac{\Pr(T < t + \delta t \mid T \geq t)}{\delta t}.\]

\(t\) 시점까지 살아있다는 조건 하에서의 순간 위험. \(h(t) \delta t\) 는 “\(t\) 시점까지 살아있는 개체가 다음 \(\delta t\) 안에 죽을 확률” 이다.

누적 위험 함수 (cumulative hazard):

\[\Lambda(t) = \int_0^t \lambda(u)\, du\]

\(\lambda(t) = h(t)\). \(\Lambda(t)\) 는 위험의 누적량.

2.2 세 함수의 상호 유도

핵심 관계 — 생존·밀도·위험의 삼각 유도.

조건부 확률 분해:

\[ S(t + \delta t) = S(t) \cdot \Pr(T > t + \delta t \mid T > t) = S(t) \{1 - h(t) \delta t\}. \]

\(\delta t \to 0\) 극한:

\[ -S'(t) = S(t) h(t) \Rightarrow h(t) = -\frac{d}{dt} \log S(t) = \frac{f(t)}{S(t)} = \frac{f(t)}{1 - F(t)}. \]

반대 방향: \(\log S(t) = -\int_0^t h(u) du = -\Lambda(t)\), 즉

\[ \boxed{\;S(t) = e^{-\Lambda(t)}, \qquad f(t) = h(t)\, e^{-\Lambda(t)}\;} \]

직관: 세 함수는 “같은 정보의 세 얼굴”
  • \(f(t)\): 사망의 절대 시점 분포. “전체 인구에서 \(t\) 시점 사망 밀도”.
  • \(S(t)\): 생존 확률. “\(t\) 시점까지 견딜 가능성”.
  • \(h(t)\): 조건부 순간 위험. “\(t\) 시점까지 산 사람의 다음 순간 위험”.

세 함수는 수학적으로 동등 하지만 해석 관점이 다르다. 모형화 시에는 \(h(t)\) 가 가장 직접적이다 — 공변량이 “위험을 배수로 올린다” 는 설명은 자연스럽지만, “밀도를 배수로 올린다” 는 설명은 밀도의 전체 적분이 1 이어야 한다는 제약 때문에 어색하다.

\(h(t) \geq 0\) 은 유일한 제약 — 따라서 공변량의 곱셈 효과를 자유롭게 도입할 수 있다. 이것이 비례 위험 모형의 수학적 동기다.

2.3 위험 함수의 형태 조건

임의의 함수가 위험 함수가 될 수 있는 것은 아니다. 합리적 조건:

  • \(h(t) \geq 0\) 모든 \(t\).
  • \(\int_0^\infty h(t) dt = \infty\) (결국 모두가 죽는다는 가정).
  • \(t\) 에서는 감소하지 말아야 함 — 특정 나이 이후 사망 확률이 줄어드는 생물학적 모형은 드물다.
  • 작은 \(t\) 에서는 유연. 예: “적응 기간” 이 있는 기계 부품은 초기에는 위험이 감소 후 증가하는 U 자 모양.

2.4 가장 단순한 위험 — 지수 분포

\(h(t) = \lambda\) (상수) 이면:

\[\Lambda(t) = \lambda t, \qquad S(t) = e^{-\lambda t}, \qquad f(t) = \lambda e^{-\lambda t}.\]

지수 분포 — 포아송 과정의 간격 분포. 위험이 나이와 무관한 “무기억 (memoryless)” 모형. 전자 부품의 무작위 고장, 일부 암의 재발 등에 적용.

3 비례 위험 모형 (§13.2)

3.1 모형 정의

개체의 공변량 \(x \in \mathbb{R}^p\) 를 포함한 위험 함수:

\[ \boxed{\;h(t; x) = \lambda(t) \exp(\beta^T x)\;} \tag{13.1} \]

  • \(\lambda(t)\): 기저 위험 함수 (baseline hazard). 시간만의 함수.
  • \(\exp(\beta^T x)\): 공변량 위험 배수. 시간 무관.

두 인자가 곱셈적 분리: 시간 효과 (\(\lambda(t)\)) 와 공변량 효과 (\(e^{\eta}\)) 가 독립적.

3.2 왜 “비례 위험” 인가

두 개체 \(A, B\) 의 위험비:

\[\frac{h(t; x_A)}{h(t; x_B)} = \frac{\lambda(t) e^{\beta^T x_A}}{\lambda(t) e^{\beta^T x_B}} = \exp\{\beta^T (x_A - x_B)\}.\]

\(\lambda(t)\)상쇄 되어 시간 무관 상수. 즉 두 개체의 위험비가 시간에 따라 변하지 않는다 — 이것이 “비례 위험 (proportional hazards)” 의 의미.

3.3 강한 가정 — 현실에서의 검증

비례 가정은 쉽게 깨진다: - 치료 효과가 초기에만 존재하고 장기적으로 사라지는 약 → 위험비가 감소. - 수술의 초기 위험과 장기 이득 → 위험비가 1 주변으로 가로지름. - 노령군과 청년군의 위험 격차가 확대 → 위험비 증가.

실무에서는 Schoenfeld 잔차 등으로 비례 가정을 검증하고, 위배 시 계층화 (stratified) 모형 또는 시간 의존 \(\beta\) 로 확장.

3.4 공변량 효과의 곱셈성은 선택

(13.1) 은 “지수 함수 형 공변량 효과” 를 가정하지만, 이는 필수가 아니다. 일반 형태:

\[h(t;x) = \lambda(t) \exp\{G(x; \beta)\}.\]

\(G(x; \beta)\) 가 비선형이어도 비례 위험성은 유지 (Oakes, 1981). 실무는 선형 \(\beta^T x\) 를 주로 사용 — 해석 용이성과 수치 안정성 때문.

3.5 \(\lambda(t)\) 의 처리 — 두 노선

노선 가정 장점 단점
모수적 (parametric) \(\lambda(t)\) 가 명시적 함수 형태 (지수·Weibull·극치값 등) 효율성 · 외삽 가능 · 예측 용이 분포 선택 필요
비모수적 (Cox 1972a) \(\lambda(t)\) 를 블록 요인처럼 처리 — 사망 시점에서만 정의 분포 가정 불필요 · 강건 기저 위험 자체는 추정 못 함 · 일부 효율 손실

McCullagh-Nelder 는 두 노선 모두 다룬다. §13.3 이 모수적 (Aitkin-Clayton 환원), §13.5 가 Cox 비모수적.

4 Aitkin-Clayton 의 Poisson GLM 환원 (§13.3)

4.1 문제 설정

데이터: \((t_i, w_i, x_i)\), \(i = 1, \ldots, N\). \(t_i\) = 관찰 시간, \(w_i \in \{0, 1\}\) (1 = 관측 사망, 0 = 중도절단), \(x_i\) = 공변량.

우도 기여: - \(w_i = 1\) (죽은 관측치): \(f(t_i; x_i)\) - \(w_i = 0\) (중도절단): \(S(t_i; x_i)\)

전체 로그 가능도:

\[ l = \sum_i \{w_i \log f(t_i; x_i) + (1 - w_i) \log S(t_i; x_i)\}. \]

4.2 치환과 환원

비례 위험 모형에서 \(S(t; x) = \exp\{-\Lambda(t) e^\eta\}\), \(f(t; x) = \lambda(t) \exp\{\eta - \Lambda(t) e^\eta\}\). 대입하면

\[ l = \sum_i \{w_i \log \lambda(t_i) + w_i \eta_i - \Lambda(t_i) e^{\eta_i}\}. \]

이제 영리한 치환: \(\mu_i = \Lambda(t_i) e^{\eta_i}\) 라고 놓으면

\[ w_i \log \mu_i = w_i \log \Lambda(t_i) + w_i \eta_i. \]

따라서

\[ l = \sum_i \{w_i \log \mu_i - \mu_i\} + \sum_i w_i \log \{\lambda(t_i) / \Lambda(t_i)\}. \]

4.3 환원 정리

첫 번째 항 \(\sum \{w_i \log \mu_i - \mu_i\}\)\(w_i \sim \text{Poisson}(\mu_i)\) 로그 가능도의 핵심 이다 (정규화 상수 \(-\log w_i!\) 생략).

두 번째 항 \(\sum w_i \log\{\lambda/\Lambda\}\)\(\beta\)독립 — 단, \(\lambda(t), \Lambda(t)\) 에 미지 모수가 없을 때.

Aitkin-Clayton (1980) 정리

기저 위험 함수 \(\lambda(t)\) 가 알려져 있으면 (또는 모수가 없으면), 비례 위험 모형의 \(\beta\) 추정은 다음과 동일 하다:

  • 반응 변수: \(w_i \in \{0, 1\}\) (중도절단 지표).
  • 분포: Poisson.
  • 링크: 로그.
  • offset: \(\log \Lambda(t_i)\).
  • 선형 예측자: \(\eta_i = \beta^T x_i + \log \Lambda(t_i) = \log \mu_i\).

즉 “중도절단 지표를 포아송 반응으로 보고, 누적 위험의 로그를 offset 으로 투입” 하면 표준 로그선형 모형 이 된다.

이 환원은 생존 분석을 완전히 GLM 틀 안에서 처리할 수 있게 한다. GLIM, SAS PROC GENMOD, R glm(), statsmodels GLM 등 어느 소프트웨어든 쓸 수 있다.

4.4 직관 — 왜 이것이 작동하는가

\(w_i \sim \text{Poisson}(\mu_i)\) 는 “\(i\) 번째 개체의 기대 사망 수가 \(\mu_i\)” 라는 의미. 한 개체가 관찰 기간 동안 최대 1 번 사망할 수 있다는 점에서 베르누이가 더 자연스러울 것 같지만, 비례 위험 모형 하에서 수학적으로 포아송과 동일한 가능도를 만든다.

핵심 통찰: \(\mu_i = \Lambda(t_i) e^{\eta_i}\) 는 “\(i\) 번째 개체의 누적 위험” 이다. 관찰 중 예상 사망 수로 해석. 관찰된 \(w_i\) 가 0 또는 1 이지만 평균 \(\mu_i\) 는 연속.

이항 대신 포아송을 쓰는 것은 근사 가 아니라 정확한 우도 등가 — Aitkin-Clayton 의 교묘한 대수 조작이다.

5 세 가지 모수적 분포 (§13.3.1-3)

5.1 지수 분포 (§13.3.1)

기저 위험: \(\lambda(t) = \lambda\) (상수).

누적 위험: \(\Lambda(t) = \lambda t\).

Offset: \(\log \Lambda(t_i) = \log \lambda + \log t_i\). \(\log \lambda\) 는 상수이므로 절편에 흡수 → 실질 offset = \(\log t_i\).

장점: 추정이 직접 가능. 표준 포아송 GLM 에 \(\log t_i\) 를 offset 으로 넣기만 하면 끝.

5.2 Weibull 분포 (§13.3.2)

누적 위험: \(\Lambda(t) = t^\alpha\), \(\alpha > 0\).

위험 함수: \(\lambda(t) = \alpha t^{\alpha-1}\).

  • \(\alpha = 1\): 지수 (상수 위험).
  • \(\alpha > 1\): 증가 위험 (노화).
  • \(\alpha < 1\): 감소 위험 (선택 효과).

Offset: \(\log \Lambda(t_i) = \alpha \log t_i\). \(\alpha\) 가 미지 이므로 단순 offset 이 아님.

교대 추정 절차:

  1. 초기값 \(\alpha = 1\) (지수) 로 시작.
  2. \(\alpha\) 고정 → offset \(\alpha \log t_i\) 로 포아송 GLM 적합 → \(\widehat\beta\).
  3. \(\widehat\beta\) 고정 → \(\alpha\) 의 점수 방정식 풀이:

\[ \frac{n}{\widehat\alpha} = \sum_i (\widehat\mu_i - w_i) \log t_i. \tag{13.2} \]

  1. 수렴까지 2-3 반복.

이탈도 보정: Weibull 의 로그 가능도는 포아송 모형보다 \(n \log \widehat\alpha\) 만큼 더 크다. 따라서 이탈도는 \(-2 n \log \widehat\alpha\) 만큼 보정.

5.3 극치값 분포 (§13.3.3)

누적 위험: \(\Lambda(t) = e^{\alpha t}\).

위험 함수: \(\lambda(t) = \alpha e^{\alpha t}\)지수적으로 증가.

변환 관계: \(u = e^t\) 대입하면 Weibull 로 환원. 따라서 Weibull 절차를 \(t \to u = e^t\) 치환해서 그대로 사용.

응용: 급격히 악화되는 질환이나 재료 피로 등.

5.4 세 분포 비교표

분포 \(\Lambda(t)\) \(\lambda(t)\) 위험 패턴
지수 \(\lambda t\) \(\lambda\) 일정
Weibull \(t^\alpha\) \(\alpha t^{\alpha-1}\) 멱 증가/감소
극치값 \(e^{\alpha t}\) \(\alpha e^{\alpha t}\) 지수 증가

6 백혈병 완화 시간 예제 (§13.4)

6.1 데이터

Freireich 외 (1963). 42 명 백혈병 환자를 두 군으로 21 씩 분할:

  • Sample 1 (실험 약물): 완화 시간 6, 6, 6, 6, 7, 9, 10, 10, 11, 13, 16, 17, 19, 20, 22, 23, 25, 32, 32, 34, 35 주. 괄호 친 값은 중도절단.
  • Sample 2 (위약): 1, 1, 2, 2, 3, 4, 4, 5, 5, 8, 8, 8, 8, 11, 11, 12, 12, 15, 17, 22, 23 주. 모두 완전 관측.

질문: 실험 약물의 효과가 있는가? 위험비가 어떻게 되는가?

6.2 지수 모형 적합

포아송 GLM + 로그 링크 + offset \(\log t\):

Model Deviance d.f.
절편만 (1) 54.50 41
그룹 효과 포함 (\(S\)) 38.02 40

이탈도 감소 = 54.50 − 38.02 = 16.48 (df 1). \(\chi_1^2\) 에서 매우 유의 (\(p < 10^{-4}\)).

6.3 Weibull 모형

교대 절차 수렴 후: \(\widehat\alpha = 1.366\), deviance 34.13 / 39 d.f.

지수 대 Weibull 의 이탈도 감소 = 38.02 − 34.13 = 3.89 (df 1). \(\chi_1^2(0.05) = 3.84\) 바로 위 — 한계 유의. Weibull 이 지수보다 약간 나음.

\(\widehat\alpha = 1.366 > 1\): 시간이 갈수록 위험이 증가 (관해 후 시간이 지날수록 재발 위험 상승).

6.4 치료 효과 추정

Weibull 하에서 \(b_1 = 1.731\) (위약 대 실험군의 로그 위험 차이). 즉

\[\text{hazard ratio} = e^{1.731} = 5.65.\]

위약군의 위험이 실험군의 5.65 배. 95% 신뢰구간: \((2.52, 12.6)\) — 약물 효과가 강력하고 확실.

6.5 네 방법 비교 (Table 13.2)

Model \(\widehat b_1\) SE
지수 1.53 0.40
Weibull 1.73 0.41
Cox (Peto 동률 처리) 1.51 0.41
Cox (Cox 동률 처리) 1.63 0.43

놀라운 관찰: 네 추정치가 반 표준오차 이내 로 모두 일치. Cox 비모수의 SE 가 모수적 Weibull 보다 크지 않다 — 비모수의 효율 손실이 미미.

Efron (1977) 와 Oakes (1977) 가 이 현상을 이론적으로 설명.

직관: 왜 Cox 가 손실이 작은가

기저 위험 \(\lambda(t)\)형태 자체 가 공변량 효과 추정에 상관관계가 약하다 — 점근 직교성. 따라서 Cox 가 \(\lambda(t)\) 를 비모수로 두고 포기해도 \(\beta\) 의 정보는 거의 잃지 않는다.

이 직교성이 Cox 모형이 실무에서 그토록 선호되는 이유다. 기저 위험을 맞히지 않아도 공변량 효과를 잘 추정 한다.

7 Cox 의 부분 우도 (§13.5)

7.1 문제 — 기저 위험을 피하고 싶다

모수적 접근은 \(\lambda(t)\)분포 형태 를 가정해야 한다. 이 가정이 틀리면 추정이 편향될 수 있다. Cox (1972a) 의 아이디어: \(\lambda(t)\) 를 추정하지 않고 \(\beta\) 만 추정 한다.

7.2 부분 우도의 구성

\(t_1 < t_2 < \cdots\)고유 사망 시점. \(R(t_j)\) = “\(t_j\) 직전까지 살아있고 관찰 중인 개체 집합” (위험 집합, risk set).

\(t_j\) 시점에 정확히 한 명 사망” 이라는 사건에 조건하면, 사망자가 실제 사망한 개체 일 조건부 확률:

\[ \Pr(\text{individual } j \text{ fails at } t_j \mid R(t_j), \text{one failure}) = \frac{h(t_j; x_j)}{\sum_{l \in R(t_j)} h(t_j; x_l)} = \frac{e^{\beta^T x_j}}{\sum_{l \in R(t_j)} e^{\beta^T x_l}}. \]

\(\lambda(t_j)\) 가 분자·분모에서 상쇄 된다. 이 조건부 확률에는 기저 위험이 없다.

부분 우도 (partial likelihood):

\[ L_P(\beta) = \prod_{j: w_j=1} \frac{e^{\beta^T x_j}}{\sum_{l \in R(t_j)} e^{\beta^T x_l}}. \]

이것을 정식 가능도처럼 최대화해 \(\widehat\beta\) 를 얻는다.

7.3 부분 우도의 성질

  • \(\lambda(t)\) 를 전혀 추정하지 않는다.
  • \(\widehat\beta\)일치성 (consistent)점근 정규성 을 가진다 (Andersen & Gill, 1982).
  • 표준 최대우도 추론 (Wald·LRT·score) 이 그대로 적용.

7.4 동률 처리 (§13.5.2)

\(t_j\) 에 여러 명이 동시 사망하면 어떤 조합의 위험을 계산할지 모호. 세 가지 근사:

  • Peto (1972): 분자에 합한 공변량 · 분모 변경 없음.
  • Cox (1972): 모든 부분집합 곱 — 정확하지만 계산 비싸다.
  • Breslow (1974): 분자에 합 · 분모에 그대로 — 가장 간단, 동률이 많으면 편향.

대규모 데이터에서는 Breslow, 소수 동률이면 Cox 가 표준.

8 Ch.13 전체 지도

섹션 주제 11-N (포스트 후속 계획)
§13.1 생존 데이터 · 위험 함수 이 글 (12-1)
§13.2 비례 위험 모형 이 글 + 12-2
§13.3 모수적 추정 · Aitkin-Clayton 이 글 + 12-3
§13.4 백혈병 예제 이 글 요약 + 12-4
§13.5 Cox 모형 · 부분 우도 · 동률 12-5
§13.6 Bibliographic notes 스킵
§13.7 Exercises 12-6

이 글은 Ch.13 전체의 지도 를 제공한다. 후속 글에서 각 모수적 분포의 유도, Weibull 교대 절차의 수렴 증명, Cox 부분 우도의 점근 이론, 특정 예제의 상세 분석을 다룰 예정.

9 Python 실전 — 백혈병 데이터의 Aitkin-Clayton 방법

import numpy as np
import pandas as pd
import statsmodels.api as sm

# Freireich (1963) 백혈병 완화 시간 — 42 환자
# Sample 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]  # 1=사망, 0=절단

# Sample 2 (위약): 모두 완전 관측
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

t = np.array(t1 + t2)
w = np.array(w1 + w2)
group = np.array([0]*21 + [1]*21)  # 0=drug, 1=placebo

# 지수 모형: offset = log(t), Poisson + log link
X = sm.add_constant(group.astype(float)[:, None])
offset = np.log(t)

m_exp = sm.GLM(w, X, family=sm.families.Poisson(), offset=offset).fit()
print("지수 모형:")
print(f"  Deviance = {m_exp.deviance:.2f} / {m_exp.df_resid} d.f.")
print(f"  그룹 효과 β₁ = {m_exp.params[1]:.3f} ± {m_exp.bse[1]:.3f}")
print(f"  Hazard ratio = {np.exp(m_exp.params[1]):.2f}")

# 절편만 모형 (비교)
m_null = sm.GLM(w, np.ones((42, 1)), family=sm.families.Poisson(), offset=offset).fit()
print(f"\n  LRT (null vs group): {m_null.deviance - m_exp.deviance:.2f}")

# Weibull 모형: 교대 절차
def fit_weibull(w, t, X, max_iter=20, tol=1e-5):
    alpha = 1.0
    for it in range(max_iter):
        offset = alpha * np.log(t)
        m = sm.GLM(w, X, family=sm.families.Poisson(), offset=offset).fit()
        mu_hat = m.fittedvalues
        # α 갱신: n/α = Σ (μ̂ - w) log(t)
        alpha_new = len(t) / np.sum((mu_hat - w) * np.log(t))
        if abs(alpha_new - alpha) < tol:
            break
        alpha = alpha_new
    return m, alpha

m_wei, alpha_hat = fit_weibull(w, t, X)
# 이탈도 보정: -2 n log α̂
n = len(t)
dev_wei = m_wei.deviance - 2 * n * np.log(alpha_hat)
print("\nWeibull 모형:")
print(f"  α̂ = {alpha_hat:.3f}")
print(f"  보정 이탈도 = {dev_wei:.2f} / {m_wei.df_resid - 1} d.f.")
print(f"  그룹 효과 β₁ = {m_wei.params[1]:.3f}")
print(f"  Hazard ratio = {np.exp(m_wei.params[1]):.2f}")

기대 출력:

  • 지수: deviance ≈ 38.0, \(\widehat\beta_1 \approx 1.53\), HR ≈ 4.62.
  • Weibull: \(\widehat\alpha \approx 1.37\), 보정 이탈도 ≈ 34.1, \(\widehat\beta_1 \approx 1.73\), HR ≈ 5.65.

Cox 모형 비교는 lifelines 또는 scikit-survival 필요 — 여기서는 생략.

10 요약 — Ch.13 의 세 가지 메시지

10.1 메시지 1 — 생존 분석은 GLM 의 확장

중도절단과 시간 의존 공변량이라는 독특한 구조에도 불구하고, Aitkin-Clayton 환원 덕분에 모수적 비례 위험 모형 전체를 GLM 소프트웨어로 처리할 수 있다. 핵심은 “중도절단 지표 \(w_i\) 를 포아송 반응으로 + 누적 위험 로그를 offset 으로”.

10.2 메시지 2 — 모수적 vs 비모수적의 거리가 작다

지수·Weibull·Cox 세 접근이 비슷한 추정치를 낸다는 (Table 13.2) 것은 기저 위험 형태가 공변량 효과 추정과 점근적으로 직교 한다는 깊은 이론의 산물. 이 때문에 Cox 모형이 “분포 가정 없이도 효율적” 이라는 역설적 이점을 갖는다.

10.3 메시지 3 — 비례 가정은 검증 필요

(13.1) 의 위험비 시간 무관성은 강한 가정. 실제 데이터에서는 Schoenfeld 잔차 등으로 확인하고, 위배 시 계층화 모형 또는 시간 의존 \(\beta\) 로 확장해야 한다. Ch.12 의 진단 철학이 여기도 적용된다.

다음 포스트 (12-2, 12-3 등) 에서 각 부분을 심화한다.

11 관련 주제

선행 지식

관련 카테고리 — 일반 생존 분석

관련 개념

후속 주제 — Ch.13 심화 (placeholder)

Subscribe

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