생존 분석은 암 혹은 의료 통계에서도 많이 쓰이는 분석 법이다.
그 중에서 Kaplan Meir과 Cox Propotional Hazard 분석법을 가장 많이 쓰고, plot으로도 표현을 많이 한다.
두 분석법의 간단한 개념과 R code를 공유해보고자 한다.
▶ Kaplan-Meir curve
Kaplan-Meir에서 가장 중요한 개념은 Event(사건), Time(시간), Censored(중도절단) 이 3가지를 이해하는 것이다. Event는 status(상태)로 사망/생존과 같이 사건이 발생 한 것을 말하고, censored는 치료를 받고 follow up을 하다가 중도포기 했는지 알려주는 것이다.
Kaplan-Meir은 의료분야에서 특정 수술 방법 혹은 치료 방법에 따른 환자의 생존 기간 분석에 활용한다. 예를 들어 암 환자들이 치료제 A 혹은 B를 받았다고 해본다면 일정 기간동안 생존했는지 혹은 사망했는지 지속적으로 관찰해 데이터를 축적한 뒤 이 데이터로 생존 분석을 하는 것이다. 만약 kaplan meir curve에서 시간이 지날 수록 치료제 A에서 생존을 더 많이 했다 하는 경우, 치료제 A가 암 치료 효과가 있음을 알 수 있다.
Kaplan Meir curve plot과 cox proportional hazard ratio plot을 쉽게 그릴 수 있는 library가 있다.
※ survminer : https://cran.r-project.org/web/packages/survminer/readme/README.html
다양한 옵션을 넣을 수 있을 뿐만 아니라 코드가 굉장히 쉬워서 데이터 포맷만 맞추면 쉽게 돌릴 수 있다!
ggsurvplot (): Draws survival curves with the ‘number at risk’ table, the cumulative number of events table and the cumulative number of censored subjects table. arrange_ggsurvplots (): Arranges multiple ggsurvplots on the same page. ggsurvevents (): Plots the distribution of event’s times. surv_sum...
cran.r-project.org
[R 코드]
library(survival)
library(ggplot2)
library(devtools)
devtools::install_github('kassambara/survminer', build_vignettes=FALSE)
library(survminer)
#Basic Kaplan Meier plot
fit <- survfit(Surv(time,status) ~ sex, data = lung)
png(filename='kaplan.png')
ggsurvplot(fit, data = lung)
dev.off()
BiocManager로 해서 survminer이 안 깔리는 경우 위와 같이 devtools를 이용해 github를 설치 하는 방법이 있다.
![](https://blog.kakaocdn.net/dn/cO4G2l/btsafQaz1V8/aBNL2lZKkurAj2xeVpxLSk/img.png)
중간 중간 curve에 peak( | ) 표시는 censored도 follow up을 중도포기 한 것의 표기이다.
→ 간단하게 그리는 plot이다.
더 화려하게 plot을 그리고 싶은 경우은 아래와 같은 코드를 치면 된다.
#Advanced Kaplan Meier plot
fit <- survfit(Surv(time,status) ~ sex, data = lung)
png(file='kaplan2.png')
ggsurvplot(
fit,
data = lung,
size = 1,
palette = c('darkorange','darkblue'), #색깔
conf.int = TRUE,
pval = TRUE, #Pvalue 나타내기
risk.table = TRUE,
risk.table.col = "strata", #table y축 이름
legend.labs = c('Male','Female'),
risk.table.height = 0.25,
ggtheme = theme_bw()) #뒤에 격자 무늬 plot 설정
dev.off()
![](https://blog.kakaocdn.net/dn/cRxHQ1/btsai5YWwlb/yo2JjWLTiXbI9kTBAtdz81/img.png)
밑에 숫자까지 표기 해줘서 몇명이 살아 남았는지 알 수 있다.
▶ Cox Proportional Hazard model
Kaplan Meir와 가장 큰 차이점은 생존 기간에 영향 미치는 여러 가지 요인들을 분석 할 수 있다는 점이다. 위에서는 생존에 치료제 A,B가 미치는 것만 확인 했지만 실제로 암의 생존에 영향을 미칠 수 있는 연령, 성별, 특정 치료 여부 등과 같이 여러 요인요소들이 있다.
따라서 위에서 발견 할 수 없었던 여러 요인을 살펴 봄으로서 질병에 유의하게 영향 미치는 요소가 무엇인지 확인 할 수 있다.
Hazard ratio도 survminer를 사용해 plot으로 쉽게 표현 할 수 있다.
library(devtools)
library(survival)
library(survminer)
head(colon)
model <-coxph( Surv(time, status)~sex + rx +adhere, data = colon)
ggforest(model)
모델을 만들어 주고 ggforest만 돌리면 아래와 같이 plot이 나타난다.
![](https://blog.kakaocdn.net/dn/bdvYoW/btsatUIzyvU/My9oCYGLkD0kF3oGVrL7Ik/img.png)
colon cancer 환자에 미치는 요소 sex, rx, adhere을 확인 한 것으로 이 셋 중에 colon에 영향을 미치는 것은 rx 치료제 중에선 Lev+5FU, adhere임을 볼 수 있다.
1이 기준 선으로 1에서 벗어날 수록 질병에 더 영향을 미치는 것이고, 반대쪽은 방향성이 다른 것으로 cancer에 더 좋은 영향을 주거나 나쁜 영향을 줌을 의미한다.