生存曲線(xiàn)常用于臨床分析,用于死亡、疾病的發(fā)生、復(fù)發(fā)和痊愈的研究。通常生存曲線(xiàn)的繪制方法有兩種。一種基于乘積極限法(Kaplan -Meier),另一種基于壽命表法(Life table),生存曲線(xiàn)的比較則主要通過(guò)Log-Rank檢驗(yàn)、Breslow法以及似然比法檢驗(yàn)。
為什么要繪制生存曲線(xiàn)?如果想要比較兩組患者的預(yù)后,直接比較兩組的生存時(shí)間不就可以了嘛。但在某些情況中,如果僅僅比較生存時(shí)間,顯然是不可能,也不合理的。
打個(gè)極端的比方:
某人對(duì)10例晚期和10例早期肺癌進(jìn)行了1年的隨訪,旨在確定早期病人的預(yù)后是否好于晚期病人。作者對(duì)病人進(jìn)行隨訪后發(fā)現(xiàn),晚期病人在1年的時(shí)間截點(diǎn)上(剛好在1年的時(shí)候)全死了,而早期病人在1年的時(shí)間截點(diǎn)上還全部存活。如果單純比較生存時(shí)間,早期和晚期病人的存活時(shí)間都是1年,顯然沒(méi)有差異。但是在這里例子中,早期病人的預(yù)后顯然是優(yōu)于晚期病人的。
再打一個(gè)極端的比方:
某研究者對(duì)甲乙兩組肺癌病人進(jìn)行隨訪,比較兩組患者的1年生存率。隨訪1年后,兩組病人均死亡,死亡率是100%,如果單獨(dú)比較1年生存率,兩組患者的死亡率顯然是一樣的。但是問(wèn)題在于:甲組病人全部是在隨訪后3天就死了,而乙組病人全部是在第364天死亡的。其實(shí)乙組病人比甲組病人多活了近一年,其預(yù)后顯然更好。這個(gè)案例其實(shí)就是告訴我們,生存分析要考慮每個(gè)時(shí)間點(diǎn)上病人的生存概率,而不是某一個(gè)特定的時(shí)間點(diǎn)。
隨訪資料是有刪失值的,比較病人的預(yù)后不能直接拿隨訪時(shí)間說(shuō)事,生存曲線(xiàn)才是最佳分析方案。
今天我們先講述生存曲線(xiàn)繪制的基本概念和意義,并使用下面提到R的survival
包進(jìn)行實(shí)例繪制:
## 載入包:library(survival)## 列出包中的所有數(shù)據(jù)data(package = 'survival')## 載入肺lung的數(shù)據(jù):data(lung)# 查看每一列數(shù)據(jù)的解釋?zhuān)?/span>?lung
# Kaplan-Meier方法:# 構(gòu)建一個(gè)survival對(duì)象,Surv是構(gòu)建函數(shù),time是天數(shù)統(tǒng)計(jì)的存活時(shí)間,status==2表示選擇dead樣本,lung$SurvObj <- with(lung,="" surv(time,="" status="=">-># 查看數(shù)據(jù),發(fā)現(xiàn)最后多了一列SurvObj,可以看出status為1的樣本所對(duì)應(yīng)的SurvObj都多了個(gè)+,表示還存活。head(lung)
## Kaplan-Meier方法構(gòu)建, 優(yōu)先選擇'log-log'置信區(qū)間,# survfit第一個(gè)參數(shù)是個(gè)公式,如果右邊是1,則生成單一生存曲線(xiàn),conf.type的參數(shù)也可以是'none',不顯示置信區(qū)間,默認(rèn)是'log'#單一生存曲線(xiàn)構(gòu)建對(duì)象:km.as.one <- survfit(survobj="" ~="">->1, data = lung, conf.type = 'log-log')# sex為因素構(gòu)建對(duì)象:km.by.sex <- survfit(survobj="" ~="" sex,="" data="lung," conf.type="">->'log-log')
# 單一生存曲線(xiàn)圖,有置信區(qū)間:plot(km.as.one)
# sex為因素作圖plot(km.by.sex)
#設(shè)置在哪個(gè)時(shí)間顯示置信區(qū)間,不想顯示可以設(shè)的大一點(diǎn),另外還有conf.cap設(shè)置置信區(qū)間的寬,1最大。# 還有conf.offset,當(dāng)圖上有多條曲線(xiàn)時(shí),設(shè)置置信度的偏移量。值為1的是繪圖區(qū)域的寬度。如果這是一個(gè)單一數(shù)字,那么每個(gè)曲線(xiàn)的條都會(huì)偏離現(xiàn)有曲線(xiàn)條形的這個(gè)數(shù)值,當(dāng)然也可以使用向量。# mark.time是用來(lái)標(biāo)注是否顯示censor檢驗(yàn)點(diǎn)。plot(km.as.one, conf.time=100, conf.cap=0.01,conf.offset = 0.1,mark.time = T)
plot(km.by.sex, conf.time=100, conf.cap=0.01,conf.offset = c(0.1,0),mark.time = F)
先和生存曲線(xiàn)和作圖所需要的數(shù)據(jù)混個(gè)臉熟,明天繼續(xù)。點(diǎn)擊“閱讀原文”查看更多。
更多原創(chuàng)精彩內(nèi)容敬請(qǐng)關(guān)注生信雜談: