小云帶你繪制ROC曲線評估生存預(yù)測能力
ROC(Receiver Operating Characteristic)曲線是一種用于評估分類模型性能的工具。在生存分析中,ROC曲線用于評估基于預(yù)測因子(例如基因表達(dá))對生存或事件發(fā)生的預(yù)測能力。評估分類模型性能:ROC曲線提供了一種直觀的方式來評估分類模型的性能,特別是在不同閾值下的性能變化。曲線越接近左上角,模型的性能越好。比較不同模型:通過比較不同模型的ROC曲線,可以判斷哪個(gè)模型更適合于給定的預(yù)測任務(wù)。曲線下面積(Area Under the ROC Curve,AUC)是一個(gè)常用的指標(biāo),表示ROC曲線下的面積,范圍在0到1之間。AUC值越接近1,模型的性能越好。選擇最佳閾值,可視化模型性能:ROC曲線直觀地展示了模型在不同閾值下的分類性能,可以用于向他人或研究報(bào)告中展示模型的性能。ROC曲線是一種廣泛應(yīng)用于分類模型性能評估的工具,特別在生存分析中用于評估預(yù)測因子對生存或事件發(fā)生的預(yù)測能力。它提供了一個(gè)綜合的評估分類模型性能的指標(biāo)(AUC),同時(shí)可幫助選擇最佳分類閾值。
#install.packages("survival")
#install.packages("survminer")
#install.packages("timeROC")
安裝所需的R包, 分別是survival、survminer和timeROC。如果您之前已經(jīng)安裝了這些包,可以跳過這些代碼。 ?#引用包
library(survival)
library(survminer)
library(timeROC)
加載所需的R包,以便在代碼中使用相應(yīng)的函數(shù)和功能
inputFile="expTime.txt"???
指定了輸入文件的文件名和路徑。在這個(gè)例子中,輸入文件被假設(shè)為名為expTime.txt的文件
setwd("C:\\biowolf\\Gene\\12.ROC")??
設(shè)置R的工作目錄,即代碼執(zhí)行期間的默認(rèn)文件夾。在這個(gè)例子中,工作目錄被設(shè)置為C:\\biowolf\\Gene\\12.ROC
rt=read.table(inputFile, header=T, sep="\t", check.names=F, row.names=1)
gene=colnames(rt)[3]
使用read.table函數(shù)從指定的輸入文件中讀取數(shù)據(jù),并將數(shù)據(jù)存儲在名為rt的數(shù)據(jù)框中。 header = TRUE表示第一行包含列名,sep = "\t"表示使用制表符作為列之間的分隔符, check.names = FALSE表示不檢查列名的有效性,row.names = 1表示使用第一列作為行名。 colnames(rt)[3]將第三列的列名存儲在變量gene中。
ROC_rt=timeROC(T=rt$futime, delta=rt$fustat,
???????????marker=rt[,gene], cause=1,
???????????weighting='aalen',
???????????times=c(1,3,5), ROC=TRUE)
使用timeROC函數(shù)執(zhí)行生存分析,并計(jì)算在不同時(shí)間點(diǎn)的AUC值。
T = rt$futime表示事件發(fā)生時(shí)間(生存時(shí)間)的向量,delta = rt$fustat表示事件狀態(tài)(生存/死亡)的向量,
marker = rt[, gene]表示用于預(yù)測生存的標(biāo)記變量(基因表達(dá))的向量,
cause = 1表示將其視為單一事件(例如,死亡),weighting = 'aalen'表示使用Aalen的加權(quán)方法,
times = c(1, 3, 5)表示計(jì)算1、3和5年的AUC值,ROC = TRUE表示計(jì)算ROC曲線。 ???
pdf(file="ROC.pdf", width=5, height=5)
用pdf函數(shù)創(chuàng)建一個(gè)輸出設(shè)備,將后續(xù)的圖形輸出保存為PDF文件。
file = "ROC.pdf"指定了輸出文件的名稱,width = 5, height = 5指定了輸出圖形的寬度和高度。
plot(ROC_rt,time=1,col='green',title=FALSE,lwd=2)
用plot函數(shù)分別繪制了在1、3和5年時(shí)間點(diǎn)的ROC曲線。col參數(shù)指定了曲線的顏色,
add = TRUE表示將曲線添加到同一圖中,title = FALSE表示不顯示標(biāo)題,lwd = 2表示曲線的線寬。
plot(ROC_rt,time=3,col='blue',add=TRUE,title=FALSE,lwd=2)
plot(ROC_rt,time=5,col='red',add=TRUE,title=FALSE,lwd=2)
legend('bottomright',
???c(paste0('AUC at 1 years: ',sprintf("%.03f",ROC_rt$AUC[1])),
?????paste0('AUC at 3 years: ',sprintf("%.03f",ROC_rt$AUC[2])),
?????paste0('AUC at 5 years: ',sprintf("%.03f",ROC_rt$AUC[3]))),
?????col=c("green",'blue','red'),lwd=2,bty = 'n')
??legend函數(shù)用于添加圖例,顯示每個(gè)時(shí)間點(diǎn)的AUC值。'bottomright'指定了圖例的位置,
?paste0函數(shù)用于將AUC值和文本連接在一起,sprintf函數(shù)用于格式化AUC值的顯示,
?col參數(shù)指定了圖例文本的顏色,lwd = 2表示圖例中線的線寬,bty = 'n'表示不繪制圖例的邊框。
dev.off()
?關(guān)閉了PDF設(shè)備,完成了圖形的保存
下期將為你帶來更多R語言的騷操作技巧