
생존 분석 입문: Kaplan-Meier 곡선, Log-rank 검정, Cox 회귀분석
임상 연구자를 위한 생존 분석 실무 가이드 — 언제 써야 하는지, 데이터를 어떻게 준비해야 하는지, KM 곡선과 Cox 회귀 결과를 어떻게 해석하는지 정리합니다.
두 환자군의 결과를 비교하는 연구를 진행 중이고, 종점은 "수술부터 재발까지의 시간"입니다. 어떤 환자는 재발했고, 어떤 환자는 마지막 추적 시점까지 재발이 없었으며, 또 어떤 환자는 추적이 끊겼어요. 군 간 평균 시간을 t검정으로 단순 비교할 수 없는 상황이에요. 재발하지 않은 환자의 진짜 재발 시간은 — 알 수가 없으니까요.
이때 필요한 게 생존 분석입니다.
생존 분석이란
생존 분석은 시간-사건(time-to-event) 데이터를 다루기 위해 설계된 통계 방법군이에요. "사건"이 꼭 사망이어야 하는 건 아닙니다. 관심 있는 어떤 결과든 사건이 될 수 있어요.
- 종양 재발
- 질병 진행
- 수술 후 합병증
- 이식 실패
- 환자 사망
생존 분석의 핵심 강점은 중도절단(censored) 데이터를 올바르게 다룰 수 있다는 거예요. 관찰 기간이 끝날 때까지 사건이 발생하지 않은 사람들 말이에요. 이런 환자를 분석에서 빼버리면 심각한 편향이 생기고, 추적 시간을 사건 발생 시간처럼 다뤄도 결과가 똑같이 틀립니다. 생존 분석은 이 불완전한 정보를 제대로 활용할 수학적 틀을 제공합니다.
데이터는 어떤 형태여야 할까요
생존 분석을 하려면 환자마다 최소 두 가지 변수가 필요합니다.
- 시간 변수: 시작 시점부터 사건 발생 또는 중도절단까지의 기간. 시작 시점은 보통 진단일, 수술일, 등록일이에요. 단위는 일, 월, 년 어느 것이든 좋지만 통일돼야 합니다
- 상태 변수 (사건 지표): 환자가 사건을 경험했는지를 표시. 일반적으로 1 = 사건 발생, 0 = 중도절단
예를 들어,
| 환자 ID | 추적 기간(개월) | 사건 상태 | 군 |
|---|---|---|---|
| 001 | 24 | 1 (재발) | 치료군 |
| 002 | 36 | 0 (중도절단) | 대조군 |
| 003 | 12 | 1 (재발) | 치료군 |
| 004 | 30 | 0 (중도절단) | 치료군 |
무엇이 중도절단으로 분류되나요?
- 연구 종료 시점까지 사건을 경험하지 않은 경우
- 추적이 끊긴 경우
- 사건과 무관한 사유로 탈락한 경우(예: 이사, 추적 거부)
가장 흔한 데이터 준비 오류는 시간 계산의 불일치(어떤 환자는 진단일부터, 어떤 환자는 수술일부터 측정)와 부정확한 중도절단 상태예요. 분석 시작 전에 꼼꼼히 점검해야 합니다.
Kaplan-Meier 방법
Kaplan-Meier(KM) 방법은 가장 기초적이고 가장 많이 쓰이는 생존 분석 도구예요. 생존 함수 — 임의의 시점 t에서 환자가 아직 사건을 경험하지 않았을 확률 — 를 추정합니다.
KM 곡선을 읽는 법
x축은 시간, y축은 생존 확률(01, 또는 0100%)이에요.
- 곡선은 좌측 상단의 1.0(100%)에서 시작합니다
- 환자가 사건을 경험할 때마다 곡선이 한 단계씩 떨어집니다
- 중도절단 관측치는 보통 작은 짧은 줄(tick) 또는 더하기 표시로 곡선 위에 찍힙니다 — 이 지점에서는 곡선이 떨어지지 않지만 위험집단(at-risk) 수가 줄어듭니다
- 곡선이 평평할수록 사건 발생률이 낮고 예후가 좋다는 뜻이에요
- 두 곡선 사이가 더 벌어질수록 군 간 차이가 더 큽니다
중앙값 생존시간
중앙값 생존시간은 KM 곡선이 50% 생존 확률 선과 만나는 시간 값이에요. 환자의 절반이 이 시점 이전에 사건을 경험했다는 의미입니다.
만약 곡선이 관찰 기간 내내 50% 위에 머문다면(절반 이상이 사건을 경험하지 않았다는 뜻), 중앙값 생존시간을 산출할 수 없어요. 예후가 좋은 연구에서는 흔한 상황입니다.
위험집단 수 표
제대로 만들어진 KM 그림에는 곡선 아래에 시점별 위험집단 수를 보여주는 표가 함께 들어갑니다. 후반부 곡선의 추정치는 종종 매우 적은 환자 수에 기반하기 때문에 정밀도가 낮아요. 어떤 시점에 환자가 5명만 남아 있다면, 그 구간의 곡선 변동은 신뢰하기 어렵습니다.
Log-rank 검정
KM 곡선은 시각적 차이를 보여주지만, 군 간 차이가 통계적으로 유의한지를 판단하려면 검정이 따로 필요합니다.
Log-rank 검정이 표준 방법이에요. 군별로 사건 시점마다 관측 사건 수와 기대 사건 수를 비교하는 방식으로 작동합니다.
- 귀무가설: 두 군의 생존 곡선이 동일하다
- 출력: 카이제곱 통계량과 p값
- 가정: 추적 기간 동안 군 간 위험비(hazard ratio)가 대체로 일정하다(즉, KM 곡선이 교차하지 않는다)
KM 곡선이 교차하면(예: 어떤 치료가 단기에는 더 좋고 장기에는 더 나쁜 경우), Log-rank 검정의 검정력이 떨어집니다. 이런 경우 대안 검정(Wilcoxon 검정 또는 구간별 분석)을 고려해야 해요.
Cox 비례위험 회귀분석
Log-rank 검정은 두 군이 다른지는 알려 주지만, 차이의 크기는 알려 주지 않고 교란변수도 보정할 수 없어요. 이 지점에서 Cox 회귀분석이 등장합니다.
Cox 비례위험 회귀분석은 생존 분석에서 가장 중요한 다변량 방법이에요. 출력은 **위험비(hazard ratio, HR)**입니다.
- HR = 1: 두 군의 위험이 동일
- HR > 1: 해당 요인이 사건 위험을 증가시킴(나쁜 예후)
- HR < 1: 해당 요인이 사건 위험을 감소시킴(좋은 예후)
예를 들어 "치료군 대 대조군의 HR = 0.62 (95% CI: 0.45–0.85, p = 0.003)"는 다른 변수를 보정한 뒤에도 치료군의 사건 위험이 대조군 대비 38% 낮다는 의미예요.
비례위험 가정
Cox 회귀의 핵심 가정은 비례위험 가정입니다. 군 간 위험비가 추적 기간 내내 일정하게 유지된다는 거예요.
확인 방법은 다음과 같습니다.
- Schoenfeld 잔차 검정: p값이 유의하면 비례위험 가정 위반
- KM 곡선 시각 점검: 곡선이 교차하면 가정이 깨졌을 가능성이 큼
가정이 성립하지 않으면 시간 층화나 시간 의존 Cox 모형 사용을 고려합니다.
다변량 Cox 회귀분석
실무에서는 Cox 회귀를 보통 두 단계로 보고해요.
- 단변량 분석: 각 변수를 결과와 개별적으로 검정해서 유의한 것을 선택(보통 p < 0.1 또는 p < 0.2를 포함 기준으로 사용)
- 다변량 분석: 선택된 변수를 동시에 투입해 보정된 HR을 산출
다변량 Cox 회귀 결과는 보통 forest plot으로 제시됩니다. x축에 HR을 로그 스케일로 두고 HR = 1에 기준선을 그어요. 임상 논문에서 가장 많이 쓰이는 결과 표시 중 하나입니다.
흔히 빠지는 함정
1. 시작 시점이 일관되지 않음
어떤 환자는 진단일, 어떤 환자는 수술일에서 측정되곤 해요. 시작 시점은 연구 설계 단계에서 명확히 정의되고, 데이터에서도 엄격히 일관돼야 합니다.
2. 정보적 중도절단(informative censoring)
환자 상태가 악화돼서 다른 병원으로 옮겨지면서 추적이 끊겼다면, 이 중도절단은 사건 자체와 관련됩니다. 생존 분석의 근본 가정을 깨뜨리는 상황이에요. 이런 편향의 영향은 논문에서 별도로 논의해야 합니다.
3. 표본 크기 부족
Cox 회귀는 보통 예측 변수당 사건 1020건 이상을 요구해요. 사건이 총 30건이라면 변수는 최대 23개까지만 넣어야 합니다. 너무 많이 넣으면 모형이 과적합돼요.
4. HR 없이 p값만 보고
"차이가 통계적으로 유의했다(p < 0.05)"라고만 쓰고 HR과 95% CI를 빼는 경우가 초보 연구자에게 흔히 보입니다. 리뷰어가 거의 반드시 다시 요청해요.
수작업 워크플로의 한계
SPSS에서 생존 분석을 하려면 시간과 사건 변수를 손으로 설정하고, 모형을 단계적으로 만들고, KM 그림을 손으로 다듬어야 해요. R은 더 유연하지만 학습 곡선이 가파릅니다. survival, survminer 패키지의 인자만 익히는 데도 시간이 들어요.
생존 분석 결과 표시도 디테일이 많습니다. KM 그림에는 위험집단 수 표가 있어야 하고, Cox 회귀에는 forest plot이 있어야 하고, 비례위험 가정 검정 결과도 보고해야 해요. 디테일마다 추가 코드와 서식 작업이 따라옵니다.
Data2Paper는 이 흐름에 어떻게 들어가나요
Data2Paper에는 완전한 생존 분석 모듈이 들어 있어요. 시간과 사건 상태 변수가 포함된 임상 데이터 파일을 업로드하면, 시스템이 데이터 구조를 자동 감지하고, 위험집단 수 표가 포함된 Kaplan-Meier 생존 곡선을 만들고, Log-rank 검정을 돌리고, Cox 회귀 모형을 구축하고, 저널에 바로 실을 수 있는 그림과 해석 문장을 출력합니다.
코드는 필요 없고, 통계 소프트웨어와 문서를 오갈 일도 없어요. 데이터를 업로드하고, 연구 질문을 기술하고, 원고에 들어갈 완성된 결과를 받으면 됩니다.
더 보기

AI 피어 리뷰: Data2Paper가 5명의 독립된 리뷰어로 논문을 심사하는 방법
Data2Paper의 Paper Review는 5명의 독립 AI 리뷰어, 인용 무결성 검증, 편집장 결정, 우선순위가 매겨진 수정 로드맵까지 — 실제 저널 편집부 심사 과정을 그대로 시뮬레이션합니다.


임상 데이터 분석 가이드: 병원 기록에서 연구 결과까지
병원 정보 시스템 데이터를 내보내는 시점부터 저널에 그대로 실을 수 있는 통계 결과를 만드는 시점까지 — 임상 데이터 분석 파이프라인 전 과정을 짚어 봅니다.


회귀분석과 매개분석: 연구 통계 파이프라인을 자동화하는 법
설문 기반 연구를 위한 회귀, 매개, 조절 분석의 실무 가이드 — 각 방법을 언제 쓰는지, 자동화가 워크플로를 어떻게 바꾸는지를 다룹니다.

뉴스레터
함께해요
최신 소식과 업데이트를 뉴스레터로 받아보세요