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

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

人们通常使用接收者操作特征曲线(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.

相关文章
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
数据采集 机器学习/深度学习 数据可视化
探索大数据分析的无限可能:R语言的应用与实践
探索大数据分析的无限可能:R语言的应用与实践
875 9
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
667 3
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
1464 1
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
489 3