카플란-마이어 생존곡선 계산기
관측 시간과 사건·중도절단 표시를 넣으면 카플란-마이어 생존함수와 중앙생존시간을 계산합니다. 그린우드 식으로 표준오차와 신뢰구간도 함께 냅니다.
한 줄 목록이면 뒤에 +를 붙인 값이 중도절단입니다. 두 칸 표로 넣으실 때는 «시간 상태»로, 1이 사건·0이 절단입니다.
곡선 주변에 칠해지는 띠의 폭입니다
log(−log Ŝ)를 변환해 구간을 잡고 되돌립니다. 구간이 0과 1 밖으로 나가지 않아 R의 survfit이 기본으로 쓰는 방식입니다.
중앙생존시간
23
그 시점의 생존확률 44.8% · 관측 21건 중 사건 9건
계단이 떨어지는 곳이 사건 시점입니다. 중도절단은 곡선을 떨어뜨리지 않고 위험집합만 줄이므로 같은 폭이라도 뒤로 갈수록 한 사건이 곡선을 크게 끌어내립니다. 띠는 95% 신뢰구간입니다.
생존표
| 시점 | 위험집합 n | 사건 d | 절단 | Ŝ(t) | SE | 95% 구간 |
|---|---|---|---|---|---|---|
| 6 | 21 | 3 | 1 | 0.8571 | 0.0764 | 0.62 ~ 0.952 |
| 7 | 17 | 1 | — | 0.8067 | 0.0869 | 0.563 ~ 0.923 |
| 10 | 15 | 1 | 1 | 0.7529 | 0.0963 | 0.503 ~ 0.889 |
| 13 | 12 | 1 | — | 0.6902 | 0.1068 | 0.432 ~ 0.849 |
| 16 | 11 | 1 | — | 0.6275 | 0.1141 | 0.368 ~ 0.805 |
| 22 | 7 | 1 | — | 0.5378 | 0.1282 | 0.268 ~ 0.747 |
| 23 | 6 | 1 | — | 0.4482 | 0.1346 | 0.188 ~ 0.68 |
사건이 일어난 시점만 줄로 나옵니다. 절단만 있는 시점은 곡선을 바꾸지 않고 다음 줄의 위험집합을 줄이는 것으로만 반영됩니다.
계산 방법
- 1관측 자료를 넣습니다. 한 줄 목록이면 중도절단된 값 뒤에 +를 붙이고, 두 칸 표로 넣으실 때는 «시간 상태»로 1이 사건·0이 절단입니다.
- 2신뢰수준과 신뢰구간 방식을 고릅니다. 특별한 이유가 없다면 95%와 log(−log S)를 그대로 두시면 됩니다.
- 3중앙생존시간과 생존곡선을 확인합니다. 계단이 떨어지는 곳이 사건 시점입니다.
- 4생존표에서 시점마다의 위험집합 크기와 Ŝ(t), 신뢰구간을 확인합니다.
- 5곡선이 50%까지 내려가지 않았다면 중앙생존시간이 나오지 않습니다. 관찰이 먼저 끝난 것이지 값이 없는 것이 아닙니다.
자주 묻는 질문
중도절단이 섞인 자료에서 시점별 생존확률을 추정합니다. 식은 Ŝ(t) = Π(1 − dᵢ/nᵢ)로, 사건이 일어난 시점마다 그 순간의 조건부 생존확률을 곱해 나갑니다. 여기서 dᵢ는 그 시점의 사건 수, nᵢ는 그 직전까지 남아 있던 위험집합 크기입니다. 단순히 «사건 수 ÷ 전체»로 계산하면 끝까지 지켜보지 못한 사람을 어떻게 셀지가 정해지지 않아 답이 나오지 않습니다.
사건이 일어나기 전에 관찰이 끝난 관측입니다. 연구가 끝날 때까지 사건이 없었거나, 중간에 연락이 끊겼거나, 다른 이유로 추적을 그만둔 경우입니다. 「적어도 이 시점까지는 살아 있었다」는 정보만 주므로, 카플란-마이어는 이런 사람을 절단 시점까지는 위험집합에 넣어 분모 노릇을 시키고 그 뒤로 조용히 뺍니다. 그래서 생존곡선은 사건 시점에서만 계단처럼 떨어지고 절단 시점에서는 떨어지지 않습니다.
사건을 먼저 셉니다. 즉 그 시점의 위험집합에 같은 시점에 절단된 사람이 아직 포함되어 있습니다. 이것은 널리 쓰이는 계산 규약이지 수학적으로 정해진 것이 아니어서, 반대로 잡은 프로그램과는 값이 미세하게 어긋납니다. 결과를 다른 곳과 견주실 때 값이 조금 다르다면 대개 이 규약의 차이입니다.
생존곡선이 50%까지 내려가기 전에 관찰이 끝났기 때문입니다. 사건이 적고 중도절단이 많으면 곡선이 높은 곳에서 평평하게 끝나 50% 선과 만나지 않습니다. 중앙값이 존재하지 않는 것이 아니라 지금 자료로는 추정할 수 없다는 뜻이므로, 이럴 때는 특정 시점의 생존율(예: 1년 생존율)이나 제한평균생존시간을 대신 쓰는 편이 낫습니다.
단순한 Ŝ ± z·SE는 Ŝ가 0이나 1에 가까울 때 구간이 0 아래나 1 위로 삐져나가기 때문입니다. log(−log Ŝ)를 변환해 구간을 잡고 되돌리면 언제나 0과 1 사이에 들어오고 작은 표본에서 실제 포함확률도 더 낫습니다. R의 survfit이 기본으로 쓰는 것이 이 방식입니다. 두 구간은 서로 다른 값이므로 결과를 옮기실 때 어느 쪽을 썼는지 밝히셔야 합니다.
카플란-마이어 추정값의 분산을 구하는 식으로, V̂ar(Ŝ(t)) = Ŝ(t)² × Σ dᵢ/(nᵢ(nᵢ − dᵢ))입니다. 각 계단의 비율이 독립이라고 보고 로그를 취해 분산을 더한 뒤 되돌린 결과입니다. 위험집합이 작아질수록 항이 커지므로 곡선 뒤쪽으로 갈수록 신뢰구간이 급격히 넓어집니다 — 꼬리 부분의 곡선을 그대로 믿으면 안 되는 이유가 이것입니다.
0부터 정한 시점 τ까지 생존곡선 아래의 넓이로, 「τ까지 평균 몇 만큼 버텼는가」를 뜻합니다. 중앙생존시간에 도달하지 못한 자료에서도 계산할 수 있어 쓸모가 있습니다. 다만 τ를 어디로 잡느냐에 따라 값이 달라지므로 반드시 함께 밝혀야 하며, 이 계산기는 마지막 관측 시점을 τ로 잡습니다.
이 계산기는 한 군의 곡선만 추정합니다. 두 군을 비교하려면 로그순위검정(log-rank test)이, 위험비를 내려면 Cox 비례위험모형이 필요한데 둘 다 여기 범위 밖입니다. 곡선을 눈으로 견주는 것만으로 차이가 있다고 말하기는 어려운 것으로 추정됩니다 — 곡선이 교차하는 경우에는 특히 그렇습니다.
전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지고 넣은 값은 이 기기에만 남습니다.
알아두면 좋은 점
- 같은 시점에 사건과 중도절단이 겹치면 사건을 먼저 세는 규약을 씁니다. 반대로 잡은 프로그램과는 값이 미세하게 어긋납니다.
- 중도절단이 사건 발생과 무관하게 일어난다고 가정합니다. 상태가 나빠진 사람이 추적에서 빠졌다면 생존율이 실제보다 높게 추정됩니다.
- 마지막 관측이 중도절단이면 곡선이 0에 닿지 않습니다. 그 뒤의 생존율은 이 자료로 알 수 없습니다.
- 중앙생존시간의 신뢰구간(Brookmeyer–Crowley 등)은 방법에 따라 값이 달라져 다루지 않았습니다.
- 두 군 비교(로그순위검정)와 Cox 회귀는 범위 밖입니다.
- 계산 결과는 추정이며 의학적 판단을 대신하지 않습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.