生存分析中連續(xù)型自變量截斷值的確定方法

題記:本文重點講解在生存分析中如何合理設置連續(xù)型自變量的截斷值唐瀑,將連續(xù)型自變量轉換為二分類變量。

1.?背景知識

對于結果變量為二分類資料的數(shù)據(jù)矿筝,連續(xù)型自變量截斷值的確定一般通過ROC分析秽誊,我們通常選用約登指數(shù)(敏感度+特異度-1)最大的點為最佳截斷值(cut-off值)點,這些都是常用的統(tǒng)計學方法纫雁,可以參考筆者與胡志德博士主編《聰明統(tǒng)計學》的相關章節(jié)[1]。但有時我們面對的問題要更復雜倾哺,假定我們的結果已經(jīng)不是單純的二分類資料轧邪,而是包含有時間因素的分類資料(Time to event data),即我們常說的生存資料悼粮。

舉個簡單例子闲勺,假定在某研究中我們定義生存資料的結局是死亡,那作為研究者來說不僅關心研究對象是否死亡扣猫,而且關心研究對象從入組開始到死亡的時間長度。比如某研究中試驗組共入組100人翘地,假定在入組后的第1年申尤、第2年、第3年死亡人數(shù)分別為:0衙耕、0昧穿、90人;對照組同樣入組100人橙喘,假定入組后第1年时鸵、第二年、第3年死亡人數(shù)分別為:90、0饰潜、0初坠。在這樣一個例子中,如果我們只看重死亡的人數(shù)彭雾,那么試驗組與對照組結果沒有差別碟刺,如果我們同時關注死亡與發(fā)生死亡的時間,那顯然試驗組的結局要優(yōu)于對照組薯酝。從結局變量的維度上講半沽,生存資料在二分類的資料的基礎上又增加了時間的維度。

那么對于生存資料中的連續(xù)型自變量是否還可以直接采用常規(guī)ROC分析來確定截斷值呢吴菠?在既往已經(jīng)發(fā)表的文獻中我們有時會看到有些作者確實直接采用常規(guī)ROC分析方法確定生存資料中連續(xù)型自變量的截斷值者填,那么這樣的做法是否妥當?筆者認為做葵,這種做法目前不好判斷正確與否占哟,但至少是不妥當?shù)模驗槲覀冇懈茖W的方法蜂挪。本文中重挑,我們將介紹三種方法來處理此類問題。本文的數(shù)據(jù)來自于筆者自己的研究中使用到的數(shù)據(jù)棠涮,數(shù)據(jù)下載自TheCancer Genome Atlas(TCGA)數(shù)據(jù)庫谬哀,為了方便讀者閱讀,我們也對數(shù)據(jù)進行了簡化處理严肪,讓其看起來更具有代表性史煎,方便大家根據(jù)自己的研究數(shù)據(jù)進行實踐操作。

2.?案例分析

【案例1】筆者在TheCancer Genome Atlas(TCGA)數(shù)據(jù)中下載了1215例乳腺癌患者的臨床資料與相對基因表達信息驳糯。下載網(wǎng)址:https://genome-cancer.ucsc.edu/篇梭,數(shù)據(jù)版本:2015-02-24;DatasetID:TCGA_BRCA_exp_HiSeqV2酝枢。臨床數(shù)據(jù)與基因表達信息按照芯片編號進行嚴格匹配后恬偷,我們從中提取了這1215例患者的生存時間,結局狀態(tài)帘睦、X基因的相對表達水平袍患。我們的研究目的是把X基因通過合適的截斷值二分為X基因低表達和X基因高表達組,然后通過生存分析判斷這兩個組的預后是否有差異竣付。本例中生存時間單位:天诡延,NA表示數(shù)據(jù)缺失;我們定義的結局為死亡古胆,1:死亡肆良,0:截尾;X基因表達水平為經(jīng)過標準化之后的基因含量,是連續(xù)型數(shù)據(jù)惹恃。讀者朋友請注意:此處X基因可以替換為與預后可能有關的任何連續(xù)型自變量夭谤,比如任何分子標志物含量、實驗室檢查指標的數(shù)值座舍、年齡沮翔、體重、血壓等等曲秉。數(shù)據(jù)整理如下表1所示采蚀。

表1.1215例患者X基因表達水平與生存資料

2.1 中位數(shù)法確定截斷值

通過中位數(shù)確定截斷值是最為常用的一種截斷值確定的方法,類似的還有通過均值確定截斷值承二,通過四分位數(shù)間距確定截斷值等榆鼠。這些方法可歸為一類,這種方法操作簡單亥鸠,而且容易被讀者理解和接受妆够。下面我們就通過IBMSPSS 22.0(IBMSPSS, NY, USA)軟件演示下中位數(shù)確定截斷值,如圖1~圖7所示负蚊。

圖1. 定義變量Time: 生存時間神妹;Status: 生存結局;Xgene:X基因的表達水平

圖2. 錄入數(shù)據(jù)

圖3. 計算Xgene的中位數(shù)家妆,依次選擇“Analyze”-“Descriptive Statistics”-“Explore”鸵荠。

圖4. 計算Xgene的中位數(shù),選擇“Xgene”進入“Dependent List”伤极,其他選項默認蛹找,點擊“OK”。

圖5. 計算結果哨坪。Xgene的中位數(shù)=10.7112庸疾,為了方便閱讀,我們?nèi)≈?0.71当编。

圖6. 新建分組變量“group”:小于10.71為基因低表達組届慈,不小于10.71為高表達組。

圖7. 重新整理數(shù)據(jù):錄入每個患者具體分組信息忿偷。后續(xù)按照分組變量進行生存分析等拧篮。注意:此處使用Excel軟件進行分組操作更方便,按照Xgene表達相對水平從低到高排序牵舱,找到中位數(shù)10.71,小于10.71分組為1缺虐,大于10.71分組為2芜壁。

2.2 X-tile軟件法確定截斷值

上述通過中位數(shù)的方法確定截斷值優(yōu)點是操作簡便、讀者易接受,但通過中位數(shù)這類簡單的方法確定的截斷值是否為最佳截斷值呢慧妄?筆者認為顷牌,如果研究者足夠幸運也許中位數(shù)就是最佳的截斷值,這種簡單的方法多少帶有一些“運氣”的成分塞淹。那我們接下來介紹一種更為科學的生存資料中連續(xù)型自變量最佳截斷值的確定方法:通過X-tile軟件確定生存資料中連續(xù)型自變量的最佳截斷值窟蓝。該軟件支持對連續(xù)型自變量進行二分類和三分類,其背后的統(tǒng)計學原理在此我們不做詳細介紹饱普,感興趣的讀者可以閱讀文末參考文獻的全文运挫。如果我們在論文寫作過程中使用了X-Tile這個軟件確定截斷值,引用這篇參考文獻即可[2]套耕。X-tile軟件下載地址:http://medicine.yale.edu/lab/rimm/research/software.aspx谁帕。下面我們就演示其操作過程,我們繼續(xù)采用【案例1】的數(shù)據(jù)冯袍,如圖8~圖13所示匈挖。

圖8. 數(shù)據(jù)準備。將數(shù)據(jù)存儲為文本文件(制表符分隔)康愤。X-tile軟件要求此格式數(shù)據(jù)儡循。

圖9. 啟動X-tile軟件,點擊“Analyze”征冷。

圖10. 導入數(shù)據(jù)文件择膝。依次點擊“File”-“Open”,選擇要打開的數(shù)據(jù)资盅。

圖11. 選擇文本文件(制表符分隔)格式的數(shù)據(jù)打開调榄。

圖12. 如圖設置參數(shù)。依次設置:Censor選入“Status”變量呵扛,SurvivalTime選入“Time”變量每庆,單位選擇“Days”,Marker1選入“Xgene”變量今穿。然后依次點擊“Do”-“Kaplan-Meier”-“Marker1”缤灵。

圖13. 將光標移至上圖左下方X軸上紅色區(qū)域單擊,即可得計算結果蓝晒,本例中最佳截斷值為11.17腮出,按照此截斷值劃分后的Kaplan-Meier曲線如上圖右下方所示。此處需要注意的是芝薇,如果把光標移至上圖左下方三角形紅色與黑色相間區(qū)域胚嘲,則可對此連續(xù)型變量三分,讀者可自行嘗試洛二。確定截斷值后的后續(xù)數(shù)據(jù)分組與整理數(shù)據(jù)操作與2.1相同馋劈,此處不再贅述攻锰。

2.3 SurvivalROC法確定截斷值

以上通過X-Tile軟件確定截斷值的方法操作簡便,結果可靠妓雾,輸出的結果也較豐富娶吞。有些讀者除了需要獲得生存資料中連續(xù)型自變量的最佳截斷值點,可能還需要像普通ROC分析一樣畫出ROC曲線并計算出曲線下的面積械姻,這時我們也可以通過R軟件(version 3.3.3)的survivalROC程序包進行計算(version 1.0.3)[3-4]妒蛇。我們繼續(xù)使用【案例1】的數(shù)據(jù),R軟件操作代碼如下:

library(survivalROC)#載入程序包

data<-read.csv(file.choose())#導入外部數(shù)據(jù)楷拳,首先把整理后的數(shù)據(jù)另存為.csv格式

nobs<- NROW(data) #定義數(shù)據(jù)集的行數(shù)

cutoff<- 3650 #設定為10年生存時間绣夺,讀者可根據(jù)需求設定為3年、5年等唯竹。

#Delete "NA"

data<-data[which(data$Status!="NA"),]

#將結果變量中缺失數(shù)據(jù)刪除乐导,讀者根據(jù)自己數(shù)據(jù)特點決定是否需要此命令。

#Fit survival ROC model with method of "KM"

SROC= survivalROC(Stime = data$Time,

? ? ? ? ? ? ? ? ? ? Status = data$Status,? ?

? ? ? ? ? ? ? ? ? ? marker = data$Xgene,? ?

? ? ? ? ? ? ? ? ? ? predict.time = cutoff, method= "KM" ) #構建生存函數(shù)

cut.op= SROC$cut.values[which.max(SROC$TP-SROC$FP)] #計算最佳截斷值

cut.op#輸出最佳截斷值

#plot survival ROC #繪制survival ROC曲線浸颓,并設置圖形參數(shù)物臂。

plot(SROC$FP,SROC$TP, type="l", xlim=c(0,1), ylim=c(0,1),?

? ? xlab = paste( "FP","\n", "AUC = ",round(SROC$AUC,3)),

? ? ylab = "TP",main = "10-yearsurvival ROC", col="red")

abline(0,1)

legend("bottomright",c("Xgene expression"),col="red",lty=c(1,1))

按照10年生存時間,最后計算的截斷值為11.0686产上,后續(xù)可以按照前述方法整理數(shù)據(jù)進行生存分析等棵磷。同時我們也使用R軟件畫出了survivalROC曲線,計算了曲線下面積(AUC)晋涣,如圖14所示仪媒。

圖14. survivalROC曲線,AUC=0.601谢鹊。

3. 總結與討論

綜上算吩,筆者總結了在生存資料中連續(xù)型自變量截斷值確定的三種方法,筆者推薦第二種截斷值確定的方法佃扼,該方法性價比較高偎巢,結果直觀,對于臨床醫(yī)生來說易學易用兼耀。第一種方法較為簡單压昼,但很難確定中位數(shù)是否為最佳截斷值。第三種方法也是一種較好的方法瘤运,但需要有一定R語言的基礎窍霞,對于臨床醫(yī)生來說可能有一定的難度。細心的讀者可能發(fā)現(xiàn)第二種方法與第三種方法計算的結果并不相同拯坟,事實上這兩種方法背后的統(tǒng)計學原理是不同的但金,計算結果存在差異并不奇怪。即便是第三種方法郁季,我們設定不同的時間節(jié)點傲绣,比如把本例中的10-year survivalROC更換為5-yearsurvivalROC(調(diào)整predict.time= cutoff設置)掠哥,計算的截斷值也不同,讀者可以自行嘗試秃诵。但以上三種方法在論文中使用都是可行的。論文寫作時我們也可以同時采用以上三種方法確定截斷值塞琼,如果三種方法可以得到類似的結論菠净,那說明結論比較穩(wěn)健。

4. 參考文獻

[1]. 周支瑞,胡志德.聰明統(tǒng)計學. 長沙:中南大學出版社, 2016.

[2].?Camp R L, Dolled-Filhart M, Rimm D L. X-tile:a new bio-informatics tool for biomarker assessment and outcome-based cut-pointoptimization [J]. Clin Cancer Res, 2004, 10(21): 7252-9.

[3].?Heagerty, P.J., Lumley, T., Pepe, M. S. (2000) Time-dependent ROC Curves for Censored Survival Data and a Diagnostic Marker Biometrics, 56, 337-344.

[4]. 周支瑞,胡志德.瘋狂統(tǒng)計學. 長沙:中南大學出版社, 2018.

轉自https://www.plob.org/article/22375.html

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末彪杉,一起剝皮案震驚了整個濱河市毅往,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌派近,老刑警劉巖攀唯,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異渴丸,居然都是意外死亡侯嘀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門谱轨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來戒幔,“玉大人,你說我怎么就攤上這事土童∈ィ” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵献汗,是天一觀的道長敢订。 經(jīng)常有香客問我,道長罢吃,這世上最難降的妖魔是什么楚午? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮刃麸,結果婚禮上醒叁,老公的妹妹穿的比我還像新娘。我一直安慰自己泊业,他們只是感情好把沼,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吁伺,像睡著了一般饮睬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上篮奄,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天捆愁,我揣著相機與錄音割去,去河邊找鬼。 笑死昼丑,一個胖子當著我的面吹牛呻逆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播菩帝,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼咖城,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了呼奢?” 一聲冷哼從身側響起宜雀,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎握础,沒想到半個月后辐董,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡禀综,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年简烘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菇存。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡夸研,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出依鸥,到底是詐尸還是另有隱情亥至,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布贱迟,位于F島的核電站姐扮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏衣吠。R本人自食惡果不足惜茶敏,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缚俏。 院中可真熱鬧惊搏,春花似錦、人聲如沸忧换。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亚茬。三九已至酪耳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刹缝,已是汗流浹背碗暗。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工颈将, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人言疗。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓晴圾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親洲守。 傳聞我的和親對象是個殘疾皇子疑务,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355