语言nomogram校准曲线图_R语言实现Cox模型校准度曲线绘制
01
研究背景
? ? ? ?這是關于cox模型的第二篇文章,上一篇文章分享了運用Lasso回歸如何篩選變量,將篩選后的變量繪制Nomogram圖,本章分享構建模型后,如何繪制校準曲線。
? ? ? cox模型的驗證不同于Logistic回歸,cox的結局包括時間和狀態,所以對于某個患者來說,他的結果是否準確,就要看模型在他隨訪的時間點,所預測的結局是否和真實的狀態一致,兩者一致說明擬合不錯,模型準確。雖然大部分患者的患者的隨訪時間都不一樣,但對于生存分析來說,我們更關注一段時間在群體中的效應,比如1年生存率、3年生存率和5年生存率,以及中位生存率。換句話說,在評價手術后或者藥物治療后的效果時,更關注某一段時間后的平均療效。
02
案例研究
? ? ? ?本文數據采用R自帶的lung數據集,一個晚期肺癌數據集,收集了228例癌癥患者的生存資料,包含患者年齡、性別、生存時間、生存狀態等10個變量。本文利用年齡、性別和ecog評分三個變量構建模型,繪制列線圖并繪制指定時間點的校準曲線。
臨床研究一般有提供多個危險因素,首先做單因素的篩選,具體篩選方法,見公眾號之前的文章。詳細Nomogram圖繪制見之前文章,本章詳細說明校準曲線的繪制和參數說明,采用驗證的方法是基于原始數據集的重抽樣驗證。03
R代碼及解讀
##加載包?明確每個包的作用library(rms) ##繪制列線圖library(survival)??##生存分析包##調用數據,數據格式與普通的spss中格式一樣,一行代表一條觀測, ##一列代表一個變量;data(lung)d str(d)aggr(d,prop=T,numbers=T) #判斷數據缺失情況,紅色表示有缺失。d ?str(dt)??##查看每個變量結構?aggr(dt,prop=T,numbers=T) #判斷數據缺失情況,紅色表示有缺失。 d?? ? ? 由圖片可看到所有變量都為藍色,沒有缺失值,紅色表示有缺失,并展示出缺失比例。如果用na.omit()函數按照行刪除。
? ? ? ? 第一步,數據整理。
###添加變量標簽,在列線圖上展示分類標簽,作圖用到d$sex ##########################################################################d[,6] ##結局變量轉換d$status str(d)##可以查看數據結構? ? ? ? 第二步:構建模型并繪制列線圖
ddoptions(datadist='dd') #設置工作環境變量,將數據整合##coxm?###繪制cox回歸生存概率的nomogram圖##?構建Nomo圖的對象只能是rms保重d額cph()函數nom???????????????????????????????function(x)surv(2*365,x)),?##算出不同時間節點生存率值,顯示在列線圖上 funlabel = c('1-year probability', '2-year probability'),?????????????????????????????lp=F,????????????????fun.at=c('0.9','0.85','0.80','0.70','0.6','0.5','0.4','0.3','0.2','0.1'))par(mar=c(2,5,3,2),cex=0.8)##mar 圖形空白邊界 cex 文本和符號大小plot(nom,xfrac=0.6)? ? ? 該圖為1年和2年生存率的列線圖,性別的標簽在圖上展示出來了。接下來分別對1年生存率和2年生存率做驗證曲線。
? ? ? ?第三步:繪制校準曲線
###這里演示,采用age?sex?和ph.ecog?構建coxph模型##構建校準曲線##time.in?和?u?要是一樣的,都是要評價的時間節點coxm_1?cal_1##繪制1年生存期校準曲線par(mar=c(7,4,4,3),cex=1.0)plot(cal_1,lwd=2,lty=1, ##設置線條形狀和尺寸 errbar.col=c(rgb(0,118,192,maxColorValue = 255)), ##設置一個顏色 xlab='Nomogram-Predicted Probability of 1-year DFS',#便簽 ylab='Actual 1-year DFS(proportion)',#標簽 col=c(rgb(192,98,83,maxColorValue = 255)),#設置一個顏色 xlim = c(0,1),ylim = c(0,1)) ##x軸和y軸范圍##繪制2年生存期校曲線##time.in 和 u 要是一樣的,都是要評價的時間節點coxm_2?cal_2plot(cal_2,lwd=2,lty=1,??##設置線條寬度和線條類型 errbar.col=c(rgb(0,118,192,maxColorValue = 255)), ##設置一個顏色 xlab='Nomogram-Predicted Probability of 1-year DFS',#便簽 ylab='Actual 2-year DFS(proportion)',#標簽 col=c(rgb(192,98,83,maxColorValue = 255)),#設置一個顏色 xlim = c(0,1),ylim = c(0,1)) ##x軸和y軸范圍? ? ? ?繪制校準曲線的參數說明:
? ? 1.繪制校準曲線前需要在模型函數中添加參數x=T,y=T和time.inc 參數
? ? 2.u需要和之前模型中定義好的time.inc一致,根據原數據,要以天為單位
即365或者365*2,u和time.inc其實是一個意思,表示要評價的時間節點。如果它倆不一樣,表示你想要評價的時間點不一樣,矯正的結果當然不同了。time.inc全稱是? ? ? ?time increase 即時間增量。當surv=T時候,表示要計算surv .summary數組,此時time.inc用于計算數組內部不同時間點的數據(seq(0,maxtime,by=time.inc))。評價時間點不能小于最大時間的1/25,也不能超過最大隨訪時間,會超出評價評價限度,不能評價。如果time.inc省略,則會根據時間單位自動選擇,這往往不是我們要的,所以還需要指定值。
? ? 3.m要根據樣本量來確定,由于校準曲線一般將所有的樣本均分為5組(對應圖中的5分節點),而m代表每組樣本量數,因此m*5等于或者近似等于樣本量
? ? 4.b代表最大再抽樣的樣本量,一般b=1000,足夠使用。
? ? 5.由兩個校準圖可看,橫坐標為預測的生存率,縱坐標為實際的生存率,對角線是預測概率等于實際概率,偏離對角線越遠說明預測的誤差越大。以上兩個圖中預測曲線基本和對角線重合,結果還行,這一點也可以通過計算C-index指數看出端倪。
##模型驗證,采用surival包#Concordance indexf?sum.survc_indexc_index## C se(C) ##0.64123438?0.03103835?? ? ? 該模型的區分度C-index為0.64,其本質同ROC曲線面積。結果顯示,該模型的具有一定區分度。
04
參考文獻
方積乾等. 衛生統計學. 人民衛生出版社。
http://www.360doc.com/userhome.aspx?userid=46405145
https://www.bilibili.com/read/cv5975714/
http://www.360doc.com/content/19/0124/20/52645714_811083591.shtml
http://blog.sina.com.cn/s/blog_13ea9a2450102wzf6.html
https://blog.csdn.net/fjsd155/article/details/84669331
作者介紹:醫療大數據統計分析師,擅長R語言。
更多閱讀:
如何進行高維變量篩選和特征選擇(一)?Lasso回歸
基于Lasso回歸篩選變量構建Cox模型并繪制Nomogram
總結
以上是生活随笔為你收集整理的语言nomogram校准曲线图_R语言实现Cox模型校准度曲线绘制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: icon.exe是什么进程 有哪些用处
- 下一篇: 局域网服务器文件夹隐藏,局域网服务器共享