censoring·Kaplan–Meier·risk set
이 토픽을 마치면
생존자료에서 event time과 censoring을 구분하고, 특정 시점의 risk set이 무엇인지 설명할 수 있습니다. Kaplan–Meier 추정량을 생존함수의 요약으로 읽고, 관측 종료가 곧 사건 발생을 뜻하지 않는다는 점을 데이터 구조와 코드에 반영합니다.
사건이 관측되지 않았다는 뜻
생존분석의 한 행은 관찰 시작부터 사건 또는 관찰 종료까지의 시간과 사건 발생 여부를 담을 수 있습니다. 사건이 관찰되면 event_observed=1, 연구가 끝났거나 추적이 끊겼지만 사건을 보지 못했다면 right-censored로 표시할 수 있습니다. censoring은 사건이 없다는 관찰과 같은 말이 아닙니다.
duration: 관찰된 시간
event_observed: 사건 관찰 여부
entry: 관찰에 들어온 시점(사용하는 경우)risk set
시간 t에서 risk set은 그 시점 직전까지 사건이 발생하지 않았고 관찰 가능한 단위들의 집합입니다. 시간이 지나면 사건이 발생했거나 censoring된 단위가 risk set에서 빠집니다. 따라서 모든 사람이 전체 추적 기간 내내 같은 분모에 남는다고 가정하지 않습니다.
Kaplan–Meier와 Python
from lifelines import KaplanMeierFitter
km = KaplanMeierFitter(label="synthetic")km.fit(durations, event_observed=event_observed)survival = km.survival_function_ci = km.confidence_interval_print(survival.head())이 코드는 lifelines==0.29.0 survival overlay에서 실행 검증했습니다. 공식 lifelines API의 KaplanMeierFitter.fit은 duration과 event 관측 여부를 받아 생존함수와 confidence interval을 결과 객체에 제공합니다. 출력된 생존함수는 합성 자료의 추정치이며 실제 연구의 임상 예후를 의미하지 않습니다.
연구 질문으로 돌아가 해석하기
Kaplan–Meier 곡선은 시간에 따른 사건 미발생 비율의 추정 흐름을 보여줍니다. median survival이 계산되지 않는 경우도 있으며, censoring의 수와 시점, risk set 크기를 함께 확인해야 합니다. 곡선이 높다는 이유로 원인이나 치료 효과를 확정하지 않습니다.
자주 생기는 실패
- censoring을 사건 없음으로 코딩하지 않습니다.
- 모든 단위가 끝까지 관찰됐다고 가정하지 않습니다.
- duration의 시작점과 단위를 숨기지 않습니다.
- 생존곡선을 인과 효과나 임상 권고로 확장하지 않습니다.
핵심 정리
- duration과 event indicator는 서로 다른 필드입니다.
- risk set은 시간이 지나며 변합니다.
- Kaplan–Meier는 censoring을 포함한 생존함수 추정 절차입니다.
다음 토픽으로
다음 편에서는 Cox model의 hazard ratio와 proportional hazards 가정을 다룹니다.
참고 자료
- lifelines KaplanMeierFitter: https://lifelines.readthedocs.io/en/stable/fitters/univariate/KaplanMeierFitter.html
- lifelines Quickstart: https://lifelines.readthedocs.io/en/stable/Quickstart.html
본 편의 duration과 event 예시는 BioStatPy가 독립적으로 작성한 합성 교육 예시입니다.