머신러닝/인턴십 프로젝트
##4. 생존분석(Survival Analysis) 예제
태 랑
2023. 3. 20. 13:45
반응형
생존분석
생존분석은 시간과 사건 관의 관계를 분석하는 통계 기법
제품의 수명이나 환자의 생존 기간을 분석할 수 있습니다.
예시를 위해서 " lifelines " 패키지를 사용해 보겠습니다.
(rossi 데이터셋)
import pandas as pd
from lifelines import CoxPHFitter
from lifelines.datasets import load_rossi
데이터 셋을 불러옵니다.
rossi_dataset = load_rossi()\
rossi_dataset.head()

rossi 데이터 셋은
432명의 전과자 정보 입니다.
언제 새로운 범죄로 체포될지에 대한 이벤트 정보가 들어 있습니다.
cph = CoxPHFitter()
cph.fit(rossi_dataset, duration_col = 'week', event_col = 'arrest')
CoxPHFitter를 사용했습니다.
CoxPHFitter
- Cox 비례 위험 모델 구현 클래스
- 회귀분석
- 설명변수와 생존 시간 사이의 관계를 모델링하여 설명 변수의 영향력을 추정
- 시간에 따라 위험 비율이 일정하다는 가정을 따름
cph.print_summary()

duration_col 의 'week' 를 통해 생존 시간 정보를 불러 옵니다.
event_col의 arrest를 통해서 체포 정보를 가져옵니다.
log-likelihood ratio test - 모델의 로그 우도 값, 모델이 데이터를 얼마나 잘 적합시켰는지 나타냄, 높을수록 예측 능력이 좋다
Concordance - C-index 값으로 모델의 예측력을 평가하는 지표. 1에 가까울수록 예측력이 높다.
coef - 설명 변수의 가중치, 양수(생존 시간을 증가시킴) , 음수(생존 시간을 감소시킴)
plot_partial_effects_on_outcome() 으로 시각화를 해보겠습니다.
race 0(백인) 과 1(흑인) 의 생존률입니다.
시간이 지남에 따라 흑인의 생존률이 낮아짐을 볼 수 있습니다.
공변량에 대한 분석도 해보겠습니다
age와 wexp에 대해서 생존함수 곡선을 그렸습니다.
왼쪽 그림의 age가 증가함에 따라 생존함수 곡선이 급격하게 감소함을 볼 수 있습니다.
오른쪽 그림의 wexp(범죄자가 지난 해에 일한 경력 여부) 1이면 경력 있음 , 0 이면 경력 없음
을 보시면 1일때 범죄자의 생존 가능성이 더 높음을 볼 수 있습니다.
반응형