원출처 : https://radhakrishna.typepad.com/summary---survivalanalysis-a-self-learning-text.pdf

Kaplan-Meier Survival Analysis에 대해서 알아본다.

Kaplan-Meier 생존분석은 시간이 지남에 따른 생존율을 구하는 방법이다. 100명의 사람이 있고 1월 1일 0시부터 실험이 시작되었다고 가정해보자.

매 시간마다 사람이 10명씩 죽는 것이 관측되었고 실험은 총 6시간 동안 진행되었다.

01시가 되었을 때, 100명의 사람 중 10명이 죽었을 것이고, 02시가 되었으면 죽은 10명을 뺀 90명의 사람 중 10명이 죽었다.

그렇다면 01시의 생존율은 100명 중 90명이 살아남았으므로 90%가 된다. 02시가 되면 90명 중 10명이 죽고 80명이 살아남는다.

따라서 02시의 생존율은 01시의 생존율인 \(0.9 * (80/90) = 0.8\)이 된다. 이런 식으로 시험이 종료될 때까지 반복하는 비교적 단순한 방법이다.

이러한 단순한 방법으로 인해 실제 논문 작성 시에 Kaplan-Meier 방식으로만 분석이 진행되기는 어렵다. 하지만 이 분석법을 사용하는 과정에서 어떠한 가정도 존재하지 않기 때문에 직관적으로 데이터를 이해하는데 도움이 된다.

실제 데이터를 이용하여 예시를 들어보자.

library(survival)
library(tidyverse)
raw.leukemia <- read.csv("leukemia.csv")
head(raw.leukemia)
##   癤퓁d group time failure logWBC
## 1     1 treat    6       1   2.31
## 2     2 treat    6       1   4.06
## 3     3 treat    6       1   3.28
## 4     4 treat    7       1   4.43
## 5     5 treat   10       1   2.96
## 6     6 treat   13       1   2.88
summary(raw.leukemia)
##      癤퓁d          group                time          failure      
##  Min.   : 1.00   Length:42          Min.   : 1.00   Min.   :0.0000  
##  1st Qu.:11.25   Class :character   1st Qu.: 6.00   1st Qu.:0.0000  
##  Median :21.50   Mode  :character   Median :10.50   Median :1.0000  
##  Mean   :21.50                      Mean   :12.88   Mean   :0.7143  
##  3rd Qu.:31.75                      3rd Qu.:18.50   3rd Qu.:1.0000  
##  Max.   :42.00                      Max.   :35.00   Max.   :1.0000  
##      logWBC     
##  Min.   :1.450  
##  1st Qu.:2.303  
##  Median :2.800  
##  Mean   :2.930  
##  3rd Qu.:3.490  
##  Max.   :5.000
raw.leukemia <- raw.leukemia %>% 
                rename(id = 癤퓁d)
  
## 치료제 처리군의 Kaplan-Meier analysis
treat_leukemia <- raw.leukemia %>% 
                  filter(group == "treat") 
                  
surv.treat <- Surv(time = treat_leukemia$time, event = treat_leukemia$failure)
fit.1 <- survfit(surv.treat ~ 1, data = treat_leukemia, conf.type = "none")
summary(fit.1)
## Call: survfit(formula = surv.treat ~ 1, data = treat_leukemia, conf.type = "none")
## 
##  time n.risk n.event survival std.err
##     6     21       3    0.857  0.0764
##     7     17       1    0.807  0.0869
##    10     15       1    0.753  0.0963
##    13     12       1    0.690  0.1068
##    16     11       1    0.627  0.1141
##    22      7       1    0.538  0.1282
##    23      6       1    0.448  0.1346
## 대조군의 Kaplan-Meier analysis
placebo_leukemia <- raw.leukemia %>% 
                    filter(group == "placebo")
surv.placebo <- Surv(time = placebo_leukemia$time, event = placebo_leukemia$failure)
fit.2 <- survfit(surv.placebo ~ 1, data = placebo_leukemia, conf.type = "none")

## 그룹 별 분석
surv.leukemia <- Surv(time = raw.leukemia$time, event = raw.leukemia$failure)
fit.3 <- survfit(surv.leukemia ~ group, data = raw.leukemia, conf.type = "none")
plot(fit.3, lty = 1:2)
legend("topright", legend = c("placebo", "treat"), lty = 1:2)

## 신뢰구간을 설정하고 싶으면 conf.int = T로 설정한다
plot(fit.2, conf.int = T, col = c("green", "red", "red"))
legend("topright", legend = c("placebo"), col = "green", lty = 1)

Kaplan-Meier survival curve의 비교는 log rank test 또는 Peto test를 이용하여 진행한다.

## log rank test
survdiff(surv.leukemia ~ group, data = raw.leukemia, rho = 0)
## Call:
## survdiff(formula = surv.leukemia ~ group, data = raw.leukemia, 
##     rho = 0)
## 
##                N Observed Expected (O-E)^2/E (O-E)^2/V
## group=placebo 21       21     10.7      9.77      16.8
## group=treat   21        9     19.3      5.46      16.8
## 
##  Chisq= 16.8  on 1 degrees of freedom, p= 4e-05
## 두 그룹은 유의한 차이가 존재한다.

## Peto test : 초기 event에 가중치를 둔다
survdiff(surv.leukemia ~ group, data = raw.leukemia, rho = 1)
## Call:
## survdiff(formula = surv.leukemia ~ group, data = raw.leukemia, 
##     rho = 1)
## 
##                N Observed Expected (O-E)^2/E (O-E)^2/V
## group=placebo 21    14.55     7.68      6.16      14.5
## group=treat   21     5.12    12.00      3.94      14.5
## 
##  Chisq= 14.5  on 1 degrees of freedom, p= 1e-04
## 마찬가지로 유의성이 존재한다.