Time-dependent ROC 曲線

2021-02-20 生物信息學習

BioNews,專注於報導生命科學領域相關新聞,長按下方二維碼即可關注"BioNews"(id : iBioNews)

概念

通常我們對於biomarker的預測模型會用ROC曲線來評價其性能,但是對於一些生存資料數據的預測模型或者需要加入時間因素,則會使用時間依賴(time dependent)的ROC曲線

傳統的ROC曲線分析方法認為個體的事件(疾病)狀態和markers是隨著時間的推移而固定的,但在臨床流行病學研究中,疾病狀態和markers都是隨著時間的推移而變化的(即time-to-event outcomes)。早期無病的個體由於研究隨訪時間較長,可能較晚發病,而且其markers可能在隨訪期間較基線發生變化。如果使用傳統的ROC會忽略疾病狀態或markers的時間依賴性,此時用隨時間變化的time-dependent ROC(時間相依ROC)比較合適。來自---真實世界大數據分析系列|ROC曲線與Time-dependent ROC 曲線

對於常規的ROC曲線,在之前的筆記(理解ROC和AUC)中對其原理做了簡單的介紹,而time-dependent ROC曲線的原理與常規的ROC曲線比較類似,前者相比後者多了時間因素,以便我們可以根據不同時間節點繪製不同的ROC曲線

本質上ROC曲線可以根據靈敏度和特異度兩個指標來繪製的,所以我們通過比較常規的ROC曲線和time-dependent的ROC曲線對於靈敏度和特異度的計算公式即可明白兩者的差別了

公式可以參考真實世界大數據分析系列|ROC曲線與Time-dependent ROC 曲線和時間依賴性ROC曲線(一),雖然兩者公式的表現形式不同,但是細想下,其實是同一個意思

上述說的是Cumulative case/dynamic control ROC,另外還有一種Incident case/dynamic control ROC(似乎不太常見),可參考:Time-dependent ROC for Survival Prediction Models in R

實現方式

對於R中time-dependent ROC的實現方式,我一般會用timeROC和survivalROC包,當然還有其他的包(聽說。。未嘗試過),如:tdROC, timereg, risksetROC和survAUC

timeROC包相比survivalROC包會多計算個AUC的置信區間

若數據是生存資料數據,那麼還會有不同的處理刪除(censoring)方式,如Kaplan-Meier(KM), Cox model以及NNE(Nearest Neighbor Estimation)等等

下面以survivalROC包的mayo數據為例,其中mayoscore5和mayoscore4是兩個marker,ROC曲線的繪製則用timeROC包

library(timeROC)library(survival)
data(mayo)
time_roc_res <- timeROC(T = mayo$time,delta = mayo$censor,marker = mayo$mayoscore5,cause = 1,weighting="marginal",times = c(3 * 365, 5 * 365, 10 * 365),ROC = TRUE,iid = TRUE)

計算AUC值及其置信區間
> time_roc_res$AUC   t=1095    t=1825    t=3650 0.8982790 0.9153621 0.8576153

查看AUC的95%置信區間

> confint(time_roc_res, level = 0.95)$CI_AUC        2.5% 97.5%t=1095 85.01 94.64t=1825 87.42 95.65t=3650 79.38 92.14

繪製time-dependent ROC曲線

簡單繪製下time-dependent ROC曲線(這裡的plot函數對應的是timeROC::plot.ipcwsurvivalROC函數)

plot(time_roc_res, time=3 * 365, col = "red", title = FALSE)  plot(time_roc_res, time=5 * 365, add=TRUE, col="blue") plot(time_roc_res, time=10 * 365, add=TRUE, col="green") legend("bottomright",c("3 Years" ,"5 Years", "10 Years"),       col=c("red", "blue", "green"), lty=1, lwd=2)

time-dependent-ROC1

也可以通過修改在再美觀點,如:

time_ROC_df <- data.frame(TP_3year = time_roc_res$TP[, 1],FP_3year = time_roc_res$FP[, 1],TP_5year = time_roc_res$TP[, 2],FP_5year = time_roc_res$FP[, 2],TP_10year = time_roc_res$TP[, 3],FP_10year = time_roc_res$FP[, 3])library(ggplot2)ggplot(data = time_ROC_df) +geom_line(aes(x = FP_3year, y = TP_3year), size = 1, color = "#BC3C29FF") +geom_line(aes(x = FP_5year, y = TP_5year), size = 1, color = "#0072B5FF") +geom_line(aes(x = FP_10year, y = TP_10year), size = 1, color = "#E18727FF") +geom_abline(slope = 1, intercept = 0, color = "grey", size = 1, linetype = 2) +theme_bw() +annotate("text",x = 0.75, y = 0.25, size = 4.5,label = paste0("AUC at 3 years = ", sprintf("%.3f", time_roc_res$AUC[[1]])), color = "#BC3C29FF"  ) +annotate("text",x = 0.75, y = 0.15, size = 4.5,label = paste0("AUC at 5 years = ", sprintf("%.3f", time_roc_res$AUC[[2]])), color = "#0072B5FF"  ) +annotate("text",x = 0.75, y = 0.05, size = 4.5,label = paste0("AUC at 10 years = ", sprintf("%.3f", time_roc_res$AUC[[3]])), color = "#E18727FF"  ) +labs(x = "False positive rate", y = "True positive rate") +theme(axis.text = element_text(face = "bold", size = 11, color = "black"),axis.title.x = element_text(face = "bold", size = 14, color = "black", margin = margin(c(15, 0, 0, 0))),axis.title.y = element_text(face = "bold", size = 14, color = "black", margin = margin(c(0, 15, 0, 0)))  )

time-dependent-ROC2比較兩個time-dependent AUC

按照上述方式對mayoscore4marker做類似的分析

time_roc_res2 <- timeROC(T = mayo$time,delta = mayo$censor,marker = mayo$mayoscore4,cause = 1,weighting="marginal",times = c(3 * 365, 5 * 365, 10 * 365),ROC = TRUE,iid = TRUE)> time_roc_res2$AUCt=1095    t=1825    t=3650 0.8454230 0.8285379 0.7667952

然後通過compare函數進行比較,並輸出矯正後的P值和相關係數矩陣,假設檢驗的原假設是兩個AUC是相等的

> compare(time_roc_res, time_roc_res2, adjusted = TRUE)$p_values_AUC                  t=1095       t=1825      t=3650Non-adjusted 0.007250057 2.022776e-05 0.006565526Adjusted     0.020362878 5.796255e-05 0.018496963
$Cor [,1] [,2] [,3][1,] 1.0000000 0.6222982 0.1760154[2,] 0.6222982 1.0000000 0.2813782[3,] 0.1760154 0.2813782 1.0000000

接著可通過plotAUCcurve函數繪製不同時間節點的AUC曲線及其置信區間,也可將多個ROC曲線的AUC值放在一起繪製(節點多一點,曲線會展示的更加細緻一點)

plotAUCcurve(time_roc_res, conf.int=TRUE, col="red")plotAUCcurve(time_roc_res2, conf.int=TRUE, col="blue", add=TRUE)legend("bottomright",c("mayoscore5", "mayoscore4"), col = c("red","blue"), lty=1, lwd=2)

time-dependent-ROC3ROC的最佳閾值(cutoff)

一般來說,對於一個biomarker或者簡單的說診斷指標/試劑,我們使用ROC曲線計算出AUC值後,還會根據ROC曲線的最佳閾值來確定其靈敏度和特異度,有時在研究中,還會用於KM曲線的分類指標

確定閾值的方法很多,一般會用最常見的約登指數(Youden index),即敏感度+特異性-1;有時也會考慮用其他確定閾值的方法,比如Minimum ROC distance, Misclassification Cost Term等等

對於上述timeROC的結果,如3年ROC曲線的約登指數(因為TP代表的是True Positive fraction,即sensitivity;而FP代表的是False Positive fraction,即1-specificity):

> mayo$mayoscore5[which.max(time_ROC_df$TP_3year - time_ROC_df$FP_3year)][1] 6.273571

即對於mayoscore5這個marker而言,最佳閾值(cutoff)為6.27

由於醫藥診斷領域一般是二分類診斷模型,所以上述我們討論的都是基於二分類的ROC曲線,對於一些特殊情況,還會有多分類的ROC,則不在此之列

本文出自於http://www.bioinfo-scrounger.com

另:我們創建了生物信息學習交流群,如需進群,請長按下方二維碼,添加管理員微信(禁廣告)。

溫馨提示:添加管理員微信時請備註姓名/學校/專業

相關焦點

  • 機器學習中的AUC-ROC曲線
    AUC-ROC曲線你已經建立了你的機器學習模型-那麼接下來呢?你需要對它進行評估,並驗證它有多好(或有多壞),這樣你就可以決定是否實現它。這時就可以引入AUC-ROC曲線了。AUC-ROC曲線正好解決了這個問題!AUC-ROC曲線是什麼?ROC曲線是二值分類問題的一個評價指標。它是一個概率曲線,在不同的閾值下繪製TPR與FPR的關係圖,從本質上把「信號」與「噪聲」分開。曲線下面積(AUC)是分類器區分類的能力的度量,用作ROC曲線的總結。AUC越高,模型在區分正類和負類方面的性能越好。
  • roc指標如何解讀 散戶們要注意以下幾點
    這裡小編我就給大家介紹一下roc指標的相關內容,看看roc指標如何解讀?提醒散戶們要注意以下幾點分析方法。roc指標如何解讀 ROC指標,又稱變動率指標,以交du易日當天的收盤價與其N天前的收盤價的差除以N天前的收盤價
  • 數據挖掘之模型評估(均方誤差、精確率、召回率及ROC曲線的含義)
    ROC曲線roc曲線是以FDR(FDR=FP/FP+TN)為橫軸,以TDR(TDR=TP/(TP+FN))為縱軸的曲線,如果要理解這個曲線代表的含義,那我們首先必選了解橫縱坐標FDR和TDR的含義,FDR代表在所有實際為負類的樣本中,被錯誤地判斷為正類的比率,TDR表示在所有實際的正類樣本中,被正確的判斷為正類的比率,所以說橫軸的比值越小越好,縱軸越高越好,那麼反應到圖上就是曲線與
  • 一文讀懂AUC-ROC
    英文原文:https://towardsdatascience.com/understanding-auc-roc-curve-68b2303cc9c5在機器學習中,性能測量是一項重要任務。當涉及到分類問題時,我們依靠AUC  -  ROC曲線來做性能評測。當我們需要檢查或可視化多類分類問題的性能時,我們使用AUC(曲線下面積)和ROC(接收器操作特性)曲線。
  • ROC曲線的繪製與解讀
    www.graphpad-prism.cn受試者工作特徵曲線(receiver operating characteristic curve,簡稱ROC曲線),又稱為感受性曲線(sensitivity curve)。得此名的原因在於曲線上各點反映著相同的感受性,它們都是對同一信號刺激的反應,只不過是在幾種不同的判定標準下所得的結果而已。
  • roc指標選股公式 該指標的計算方法如何
    ROC指標一般指變動率指標,那麼這roc指標選股公式怎麼樣?還有roc指標的計算方法如何?我們一起來看看!roc指標選股公式 roc指標是以當日的收盤價和N天前的收盤價比較,通過計算股價某一段時間內收盤價變動的比例
  • roc指標參數設置 該指標的計算公式一覽
    不同的指標有不同的含義,當然有炒股的人肯定要了解不同指標了,ROC指標一般指變動率指標,屬於反趨勢指標之一了,那麼roc指標參數設置是怎麼樣的呢?該指標最佳的設置是哪些?我們一起來看看!
  • ROC曲線應該怎麼看?
    Roc曲線,也稱「受試者工作特徵曲線」,或者感受性曲線,拋開這寫難記的名字不談,今天主要來談談它的用法以及如何解讀。應用場景ROC曲線主要是用於X對Y的預測準確率情況。ROC曲線ROC曲線圖是反映敏感性與特異性之間關係的曲線。
  • 股票變動率roc應用 定義和計算公式介紹
    在股市中,在分析股票的時候,一般情況下都需要使用不同的指標進行股票分析,股票變動率指標(roc)就是其中一個技術分析指標。roc指標是變動速率指標,它具有超買超賣的特性,那麼股票變動率roc應用如何呢?
  • 變動率roc指標 該指標的構成原理及計算方法
    變動率roc指標 變動率roc指標它綜合了RSI、WR、KDJ、CCI四種指標的特性,可以同時監視常態性和極端性兩種行情。roc指標的構成原理據悉,ROC指標是以當前周期的收盤價和N個周期前的收盤價來進行比較,通過計算股價在某一時間內收盤價變動的速率,從而反映股票市場變動快慢程度的一種技術分析工具。ROC指標運用了物理學中加速度的原理,通過應用價格的變動來測量股價移動的動量,衡量多空雙方買賣力量的強弱,從而達到分析預側股價趨勢以及是否有轉勢意願的目的。
  • roc變動率如何看 該指標的計算公式如何?
    炒股的人都知道,股市中的一些技術分析指標是要了解的,不同的指標有不同的含義,ROC也是技術分析最常見的參考指標之一了,那麼roc變動率如何看呢?還有該指標的計算公式如何?我們一起來看看!
  • roc指標詳解 最新計算方法有兩種可了解?
    roc指標有人說不重要?這是真的嗎?其實你錯了,在股市當中,任何一種指標都是很重要的,所以我們無論在任何時候,都會提前了解清楚相關的指標。目前roc指標詳解計算方式,其實有兩種可以加多了解一下,你知道嗎?
  • 用ROC曲線解析預測模型
    對於這篇文章,我將主要關注從單一模型構建ROC曲線,但可以在後面的帖子中使用此數據集深入研究更高級的主題。預測精度測量概述在開始創建曲線之前,了解一些評估預測準確性的常用指標非常重要。積極類:我將正類定義為我試圖檢測的結果類。在這種情況下,缺少 CAD。
  • 如何用SPSS繪製ROC曲線
    ROC曲線相信大家都不太陌生,多多少少都聽說過。ROC曲線在臨床上的主要功能就是幫助大家尋找一個比較可靠的指標去診斷某種疾病。今天我們就來給大家演示一下具體的操作。     案例:(本案例的數據結果尚未發表論文,就以字母代替了)。
  • 聯合診斷ROC分析及曲線下面積的比較
    01基礎知識ROC曲線分析是評價指標診斷能力的重要方法。疾病的診斷通常比較複雜,只依靠單一指標往往效果不佳,很多時候需要多個指標聯合才能做出診斷。評價不同指標聯合診斷的能力,可以通過比較各自的ROC曲線下面積實現。
  • 通過三個直觀步驟理解ROC曲線
    ROC曲線是一個分類模型效果好壞評判的的可視化表示。在這篇文章中,我將分三個步驟頭開始構建ROC曲線。步驟1:獲取分類模型預測當我們訓練一個分類模型時,我們得到得到一個結果的概率。在這種情況下,我們的例子將是償還貸款的可能性。概率通常在0到1之間。價值越高,這個人就越有可能償還貸款。
  • 【1133.】時間依賴ROC(timeROC)
    時間依賴性ROC曲線有(1) cumulative/dynamic(C/D)、(2) incident/dynamic(I/D)和(3) incident/static(I/S)三種定義,其中cumulative/dynamic(C/D)是比較適合用於生存分析的定義,也是當前大多數研究使用的方法。
  • Real-time qPCR基礎知識
    與其同時,國內公司經過長期不懈的努力,也有自主研發的real-time PCR儀器生產比如西安天隆科技公司的TL系列儀器。二、Real-time qPCR概述1. Real-time qPCR原理實時PCR就是在PCR擴增過程中,通過螢光信號,對PCR進程進行實時檢測。
  • 多個時間點的ROC曲線還可以這樣畫!
    之前介紹了用ggplot2來定製多個時間點的ROC曲線那個圖可能更好看,容易和ggplot2系列的圖一起組合。這個圖在模型構建裡面經常出現,模型構建必須有預測的終點,即生存事件,假如團隊能夠有一批擁有生存時間,而且臨床資料都齊全的患者數據,那麼可以做的事情就很多了。