생존분석에서 널리 사용되는 그래프 중 하나가 카플란-마이어 곡선(Kaplan-Meier Curve)입니다. 사건 (사망일수도 있지만, 질병의 발생이나 고장의 발생처럼 연구자가 알고자 하는 결과는 무엇이든 가능)이 발생한 시점마다 구간 생존율을 누적한 누적 생존율을 추정하는 방법입니다. 통상적으로 X축은 시간, Y축은 각 시점에서 생존자의 비율이 표시되며 누적 곡선이기 때문에 계단 모양을 하는 특성이 있습니다. 여기서는 역시 survival 패키지의 데이터인 colon 데이터를 통해 알아보겠습니다.
#kaplan meier
library(survival)
data(colon)
str(colon)
?colon
'data.frame': 1858 obs. of 16 variables:
$ id : num 1 1 2 2 3 3 4 4 5 5 ...
$ study : num 1 1 1 1 1 1 1 1 1 1 ...
$ rx : Factor w/ 3 levels "Obs","Lev","Lev+5FU": 3 3 3 3 1 1 3 3 1 1 ...
$ sex : num 1 1 1 1 0 0 0 0 1 1 ...
$ age : num 43 43 63 63 71 71 66 66 69 69 ...
$ obstruct: num 0 0 0 0 0 0 1 1 0 0 ...
$ perfor : num 0 0 0 0 0 0 0 0 0 0 ...
$ adhere : num 0 0 0 0 1 1 0 0 0 0 ...
$ nodes : num 5 5 1 1 7 7 6 6 22 22 ...
$ status : num 1 1 0 0 1 1 1 1 1 1 ...
$ differ : num 2 2 2 2 2 2 2 2 2 2 ...
$ extent : num 3 3 3 3 2 2 3 3 3 3 ...
$ surg : num 0 0 0 0 0 0 1 1 1 1 ...
$ node4 : num 1 1 0 0 1 1 1 1 1 1 ...
$ time : num 1521 968 3087 3087 963 ...
$ etype : num 2 1 2 1 2 1 2 1 2 1 ...
colon 데이터는 대장암 환자 1858명의 데이터를 모은 것으로 16개의 변수로 되어 있습니다.
id: id
study: 1 for all patients
rx: Treatment - Obs(ervation), Lev(amisole), Lev(amisole)+5-FU
sex: 1=male
age: in years
obstruct: obstruction of colon by tumour
perfor: perforation of colon
adhere: adherence to nearby organs
nodes: number of lymph nodes with detectable cancer
time: days until event or censoring
status: censoring status
differ: differentiation of tumour (1=well, 2=moderate, 3=poor)
extent: Extent of local spread (1=submucosa, 2=muscle, 3=serosa, 4=contiguous structures)
surg: time from surgery to registration (0=short, 1=long)
node4: more than 4 positive lymph nodes
etype: event type: 1=recurrence,2=death
환자들은 대장암 수술을 받은 후 항암 치료를 받았으며 각 환자의 생존 기간 및 생존/사망 여부가 변수로 입력되어 있습니다. 항암 치료의 경우 치료 없이 관찰, Levamisole 단독, Levamisole + 5FU를 사용했습니다. 종양의 분화도 (well, moderate, poor), 국소 침윤 정도 (1=submucosa, 2=muscle, 3=serosa, 4=contiguous structures) 등 예후에 큰 영향을 주는 변수도 같이 포함되어 있습니다.
우선 전체 환자에 대한 카플란 마이어 곡선을 그려보겠습니다.
fit = survfit(Surv(time, status)~1, data=colon)
plot(fit, ylab="Survival", xlab="Days", mark.time=T)
이 그래프 자체로는 알 수 있는 정보가 별로 없지만, 치료 후 초반에 재발 등으로 사망하는 경우가 많고 이후에는 완만한 곡선을 그린다고 추정할 수 있습니다. 계단보다는 곡선처럼 보이는 이유는 관측값이 많기 때문입니다. 이제 성별, 그리고 항암 치료법에 따른 카플란 마이어 곡선을 그려보겠습니다. 당연한 이야기지만, 곡선에 색상을 넣거나 별도의 설명을 넣을 수 있습니다.
fit = survfit(Surv(time, status==1)~sex, data=colon)
plot(fit, ylab="Survival", xlab="Days", col=c("red","blue"), lty=1:2, mark.time=T)
legend("topright", legend=c("female", "male"), col=c("red","blue"), lty=1:2)
fit = survfit(Surv(time, status==1)~rx, data=colon)
plot(fit, ylab="Survival", xlab="Days", col=1:3, lty=1:3, mark.time=T)
legend("topright", legend=c("observation","Lev","Lev+5FU"), col=1:3, lty=1:3)
이 그래프는 좀 더 많은 정보를 제공하고 있습니다. 시간에 따른 사망률은 남녀에서 큰 차이가 없어 보이지만, 항암치료군은 Lev+5FU군이 더 나은 결과를 시사하고 있습니다. 다만 이 차이가 실제로 통계적 차이가 있는지는 카플란 마이어 곡선으로는 알 수 없습니다. 이를 분석하기 위해서는 log rank test 등 다른 방법이 필요합니다.
댓글
댓글 쓰기