R语言中生存分析模型的时间依赖性ROC曲线可视化

原文链接:http://tecdat.cn/?p=20650

人们通常使用接收者操作特征曲线(ROC)进行二元结果逻辑回归。但是,流行病学研究中感兴趣的结果通常是事件发生时间。使用随时间变化的时间相关ROC可以更全面地描述这种情况下的预测模型。

时间相关的ROC定义

令 Mi为用于死亡率预测的基线(时间0)标量标记。 当随时间推移观察到结果时,其预测性能取决于评估时间 _t_。直观地说,在零时间测量的标记值应该变得不那么相关。因此,ROC测得的预测性能(区分)是时间_t_的函数 。

累积病例

累积病例/动态ROC定义了在时间_t_ 处的阈值_c_处的 灵敏度和特异性,  如下所示。

累积灵敏度将在时间_t_之前死亡的视为分母(疾病),而将标记值高于 _c_ 的作为真实阳性(疾病阳性)。动态特异性将在时间_t_仍然活着作为分母(健康),并将标记值小于或等于 _c_ 的那些作为真实阴性(健康中的阴性)。将阈值 _c_ 从最小值更改为最大值会在时间_t_处显示整个ROC曲线 。

新发病例

新发病例ROC1在时间_t_ 处以阈值 _c_定义灵敏度和特异性,  如下所示。

累积灵敏度将在时间_t处_死亡的人  视为分母(疾病),而将标记值高于 _Ç_ 的人视为真实阳性(疾病阳性)。

数据准备

我们以数据 包中的 ovarian dataset3 survival为例。事件发生的时间就是死亡的时间。Kaplan-Meier图如下。

## 变成data_frame
data <- as_data_frame(data)
## 绘图
plot(survfit(Surv(futime, fustat) ~ 1,
data = data)

可视化结果:

在数据集中超过720天没有发生任何事件。

## 拟合cox模型
coxph(formula = Surv(futime, fustat) ~ pspline(age, df = 4) +
##获得线性预测值
predict(coxph1, type = "lp")

累积病例

实现了累积病例

## 定义一个辅助函数,以在不同的时间进行评估
ROC_hlp <- function(t) {
survivalROC(Stime
status
marker
predict.time = t,
method = "NNE",
span = 0.25 * nrow(ovarian)^(-0.20))
}
## 每180天评估一次
ROC_data <- data_frame(t = 180 * c(1,2,3,4,5,6)) %>%
mutate(survivalROC = map(t, survivalROC_helper),
## 提取AUC
auc = map_dbl(survivalROC, magrittr::extract2, "AUC"),
## 在data_frame中放相关的值
df_survivalROC = map(survivalROC, function(obj) {

## 绘图
ggplot(mapping = aes(x = FP, y = TP)) +
geom_point() +
geom_line() +
facet_wrap( ~ t) +

可视化结果:

180天的ROC看起来是最好的。因为到此刻为止几乎没有事件。在最后观察到的事件(t≥720)之后,AUC稳定在0.856。这种表现并没有衰退,因为高风险分数的人死了。

新发病例

实现新发病例

## 定义一个辅助函数,以在不同的时间进行评估

## 每180天评估一次

## 提取AUC
auc = map_dbl(risksetROC, magrittr::extract2, "AUC"),
## 在data_frame中放相关的值
df_risksetROC = map(risksetROC, function(obj) {
## 标记栏
marker <- c(-Inf, obj[["marker"]], Inf)

## 绘图

ggplot(mapping = aes(x = FP, y = TP)) +
geom_point() +
geom_line() +
geom_label(data = risksetROC_data %>% dplyr::select(t,auc) %>% unique,
facet_wrap( ~ t) +

可视化结果:

这种差异在后期更为明显。最值得注意的是,只有在每个时间点处于风险集中的个体才能提供数据。所以数据点少了。表现的衰退更为明显,也许是因为在那些存活时间足够长的人中,时间零点的风险分没有那么重要。一旦没有事件,ROC基本上就会趋于平缓。

结论

总之,我们研究了时间依赖的ROC及其R实现。累积病例ROC可能与_风险_ (累积发生率)预测模型的概念更兼容 。新发病例ROC可用于检查时间零标记在预测后续事件时的相关性。

参考

  1. Heagerty,Patrick J. and Zheng,Yingye,  _Survival Model Predictive Accuracy and ROC Curves_,Biometrics,61(1),92-105(2005). doi:10.1111 / j.0006-341X.2005.030814.x.

(0)

相关推荐

  • 【1127.】一张无法解释的ROC曲线,咋回事

    缘起 松哥统计说 诊断试验必备之工具ROC曲线,其曲线下面积AUC(area under curve)最大为1,越大反映该指标诊断效能越好;AUC=0.5表示该指标无诊断价值: 然而该ROC曲线图中, ...

  • 生存模型评价常用指标总结

    生存分析:研究生存现象和响应时间数据及其统计规律的一种分析方法. 常见的生存分析方法有: 寿命表法:主要研究不同时间段内生存率的变化 单因素 Kaplan-Meier 分析:主要研究单个因素对生存率的 ...

  • 实例 | 分析38万条数据,用Python分析保险产品交叉销售和哪些因素有关

    CDA数据分析师 出品 作者:真达.Mika 数据:真达 [导读] 今天教大家用Python分析保险产品交叉销售和哪些因素有关. 公众号后台,回复关键字"保险"获取完整数据. 今天 ...

  • 【1133.】时间依赖ROC(timeROC)

    导读 (谨以此文献给中医统计界老大哥申杰教授,感谢申哥多年来对松哥统计的关心与支持!) 一谈到ROC曲线,大家本能的就会想到诊断试验,就会想到如何去寻找诊断界值(cut off point). 其实R ...

  • R语言绘制ROC曲线

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO数据挖掘. 介绍其它用于ROC绘制的R包 library(tidyverse)  #  ...

  • 在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析

    原文链接:http://tecdat.cn/?p=9024 用GAM进行建模时间序列 我已经准备了一个文件,其中包含四个用电时间序列来进行分析.数据操作将由data.table程序包完成. 将提及的智 ...

  • R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格

    原文链接:http://tecdat.cn/?p=18860 简介 时间序列分析是统计学中的一个主要分支,主要侧重于分析数据集以研究数据的特征并提取有意义的统计信息来预测序列的未来值.时序分析有两种方 ...

  • R语言中的偏最小二乘回归PLS-DA

    原文链接:http://tecdat.cn/?p=8890 主成分回归(PCR)的方法 本质上是使用第一个方法的普通最小二乘(OLS)拟合来自预测变量的主成分(PC).这带来许多优点: 预测变量的数量 ...

  • R语言中进行期权定价的Heston随机波动率模型

    原文链接:http://tecdat.cn/?p=12111 在本文中,我将向您展示如何模拟股票价格的Heston随机波动率模型. Heston模型是一种期权估值方法,它考虑到同一资产在给定时间交易的 ...

  • ggClusterNet:手写算法在R语言中实现Gephi布局之一

    写在前面 像不像Gephi出图,Gephi布局还是有很多人喜欢,R语言确实不好实现,这个算法需要大量的迭代,让模块化点之间连线最短,不断修正,很耗费时间,我将聚类算法和修改后的距离算法合并起来并结合节 ...

  • R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归

    原文链接:http://tecdat.cn/?p=20882 1导言 这篇文章探讨了为什么使用广义相加模型 是一个不错的选择.为此,我们首先需要看一下线性回归,看看为什么在某些情况下它可能不是最佳选择 ...

  • R语言中的隐马尔可夫HMM模型实例

    原文链接:http://tecdat.cn/?p=17592  最近,我们使用隐马尔可夫模型开发了一种解决方案,并被要求解释这个方案. HMM用于建模数据序列,无论是从连续概率分布还是从离散概率分布得 ...

  • R语言中回归和分类模型选择的性能指标

    原文链接:http://tecdat.cn/?p=11334 有多种性能指标来描述机器学习模型的质量.但是,问题是,对于问题正确的方法是什么?在这里,我讨论了选择回归模型和分类模型时最重要的性能指标. ...

  • R语言中使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据

    原文链接:http://tecdat.cn/?p=20828 本文使用lasso或非凸惩罚拟合线性回归,GLM和Cox回归模型的正则化,特别是_最小_最_大凹_度_惩罚_函数_(MCP)_和光滑切片绝 ...