龙空技术网

R数据分析:生存数据的预测模型建立方法与评价

Codewar 356

前言:

目前各位老铁们对“分类算法逻辑回归”都比较注重,兄弟们都需要知道一些“分类算法逻辑回归”的相关内容。那么小编在网摘上收集了一些对于“分类算法逻辑回归””的相关文章,希望朋友们能喜欢,朋友们一起来学习一下吧!

之前写了生存分析列线图的做法,列线图作为一个预测模型可视化工具,我们使用它的过程其实就是一个给新数据做预测的过程,其内在本身的模型就是我们基于现有数据训练的一个预测模型,今天也算是接着上一篇文章继续写生存分析的预测模型的效果评价。

生存数据预测模型和我们之前写的连续变量结局和分类结局的预测模型不同的地方就在于我们得考虑生存数据的删失和时间因素,通过这么一个预测模型,我们期望的目标是帮助临床医生去回答特定病人在某个时间的生存概率。从这个角度讲我们对模型评估和评价的标准就有一个锚定了。

Thus, survival prediction models differ from traditional prediction models for continuous or binary outcomes by appropriately accommodating censoring that is present in time-to-event data.to answer questions such as “What is the probability that this patient will be alive in 5 years, given their baseline covariate information?” This predicted probability can then be used by clinicians to make important decisions regarding patient care

比如说我收集了某个癌症病人的很大的有代表性的数据集,我通过我的数据学习出来了一个预测模型,再来一个新的癌症病人,模型可以告诉我,这个病人能活多久。

如果这个新数据本身有标签,我们通过对比实际标签(具体时间的生存概率)和模型预测结果(预测的具体时间的生存概率),就可以来评价模型优劣。逻辑和常规(分类结局和连续结局)的预测模型还是一样的。

先回顾生存分析

依然是先回顾下生存分析中的常见的术语:

我们的结局变量两个水平,一个是发生事件,另外一个是删失;同时这个结局还依赖于一个时间变量。

刚刚写了,我们做生存数据的预测,回答的是we are predicting the probability that an event happens at a particular time .----某个时刻发生事件的概率。所以这个时候常规的评价模型的指标都不好使了。

Due to the presence of the censoring in survival data, the standard evaluation metrics for regression such as root of mean squared error and ܴ R2 are not suitable for measuring the performance in survival analysis.

对于生存数据的预测模型,此时的评估模型的指标有下面3个:Concordance index (C-index),Brier score,Mean absolute error。今天的任务就是一个一个带大家捋一遍,希望能帮助大家理解在“个体特定时间的生存概率这个锚定标准下,这些指标为什么可以用来评价模型。”

Concordance index (C-index)

首先看C指数,这个一致性指数在分类结局的预测模型中给大家提到过,就是ROC曲线下面积,对于生存数据的预测模型来讲,这个指数和灵敏度特异度就没关系了,它比的是实际值和预测值的排序一致不一致。理解方法可以参考秩和检验。

For a binary outcome, C-index is identical to the area under the ROC curve (AUC).

The concordance index or C-index is a generalization of the area under the ROC curve (AUC) that can take into account censored data. It represents the global assessment of the model discrimination power.

其逻辑在于:每个个案通过模型都给它一个风险分,如果模型表现好,那么风险分高的个案应该会先发生事件,按照这个逻辑,然后我们用模型给每个个案都赋一个风险分,形成很多个可以对比的组(2个为一组):在组内确实满足刚刚讲的“风险分越大,事件越先发生”那么这个组就是一致性的组,否则就是不一致的组,这样一致性的组占所有对比组的比例就是C-index:

指数的计算方法如下:

其中,分子上是一致性的组,分母是所有组。那么这个值就是越大越好。

上面就是生存分析预测模型评价中C-index的内在逻辑,大家作为应用型科研工作者关注逻辑就好,请自动忽略掉数学表达。

Brier score

再来看第二个评价指标,叫做Brier score。这个Brier score是个案在t时间的生存状态减去t时间的预测生存概率的差的平方的均值。

其可以用来评价模型的逻辑在于:如果我的模型真的可以很好的预测特定时刻的生存概率,那么对于某个时刻我的生存状态确实是1,那么模型应该说我此时的生存概率无限大;反之模型应该说我的生存概率无限小。

因为牵扯到具体时间,这个指标只能截一个时间点去看,其算法如下:

we found that BS depends on the selection of time point t. Generally, the median of the observation time is selected as the time point.

就是个案在t时间的生存状态减去t时间的预测生存概率的差,比如在t时间个案实际观测到的是死亡(取0),那么这时候模型预测的生存概率应该越小越好;t时间个案实际观测到的是存活(取1),那么这个时候模型预测的生存概率应该是越大越好;肯定是减了之后的差越小越好嘛,也就是这个Brier score越小越好,并且得小于0.25才说明这个模型好过瞎猜。但是这指标只能看某个时间点模型的预测准确性。

上面就是生存分析预测模型评价中Brier score的内在逻辑,大家作为应用型科研工作者关注逻辑就好,自动忽略掉数学表达。

Mean absolute error

MAE这个指标在连续变量结局的预测模型中也有的,指的是预测值和实际值的差的绝对值的和,在生存分析的预测模型中,就是实际生存时间和模型预测生存时间的差的绝对值的和。算法如下:

这个指标只考虑了非删失数据,实际中就用得比较少。基本不用管。

模型评价实操

解释完指标之后我们再看实操做法,依然我们选取 JAMA Surg.的文章做参考,文章名如下:

Hyder O, Marques H, Pulitano C, et al. A Nomogram to Predict Long-term Survival After Resection for Intrahepatic Cholangiocarcinoma: An Eastern and Western Experience. JAMA Surg. 2014;149(5):432–438. doi:10.1001/jamasurg.2013.5168

文章中对模型评估的方法学介绍如下:

可以看到,这篇文章报告了C指数,用自助抽样样本画了校准曲线,还进行了模型的验证。我们首先来看C指数的做法,文章中报告了C指数的值和置信区间:

Predictive accuracy (discrimination) of the final model was measured by calculating the Harrell C index, which was 0.692 (95% CI, 0.624-0.762).

如果你是用coxph函数跑模型,那么模型的输出结果中自动会出来C指数C指数的标准误的,如下图:

比如我们就单独想要这个指数,可以直接运行下面代码:

cindex(formula, data)

要得到C指数的置信区间的话就得求助concordance.index函数,代码如下:

concordance.index(predict(c),surv.time = dt,surv.event = e,method = "noether")

输出如下,有C指数,标准误和对应置信区间上下限:

看完了C指数的操作我们再看校准曲线的画法,论文中给到的校准曲线长这样:

首先我们来理解什么是校准曲线,上图中横轴是模型预测的生存概率,纵轴是实际的生存概率。图中还有一条灰色的虚线,代表预测概率和实际的生存概率一致,最理想的情况下校准曲线是一条对角线(预测概率等于实际概率),我们实际写文章的时候只要看着不要偏太离谱就行。

Calibration plot is a visual tool to assess the agreement between predictions and observations in different percentiles (mostly deciles) of the predicted values.

还要理解的是我们本身生存概率的分布是连续的,而图中只是画了3个点,这是因为算法将数据进行了分箱处理,上图中就是将原始数据分成了3组,这个操作使用calibrate函数中的参数m进行控制

For survival models, "predicted" means predicted survival probability at a single time point, and "observed" refers to the corresponding Kaplan-Meier survival estimate, stratifying on intervals of predicted survival。

同时,对于生存数据我们本身做预测的时候也是需要限定时间的,所以需要设定参数u。

比如我们要自助抽样20次,数据分箱,每箱200个,做时间点6的校准曲线的示例代码如下:

cal <- calibrate(f, u=6, cmethod='KM', m=200, B=20)plot(cal)

关于模型验证的结果,论文中通过报告重复抽样验证结果中训练数据和测试数据的C指数说明了模型并没有过拟合,原文如下:

Bootstrap validation of the model with 300 iterations revealed minimal evidence of model overfit. The training data set C statistic was 0.699, and the testing data set C statistic was 0.706, which represented the bias-corrected estimate of model performance in the future.

此部分的实现代码如下:

validate(f, B=300) 

通过输出结果中便可推算出相应数据集的C指数。

D_{xy} are equal to 2 * (C - 0.5)where C is the C-index or concordance probability

然后我们再对比下训练数据和测试数据的C指数的差异就可以去得到我们自己模型的结论。

好了,到这儿本期按照JAMA surgery文章给大家写的生存数据预测模型的做法与评价方法就给大家写完了,其实生存数据的预测模型还有别的评价方法比如时间依赖的ROC,决策曲线等等,安排在下期,请持续关注。

小结

今天给大家介绍了生存数据预测模型的评价指标及其逻辑,感谢大家耐心看完,自己的文章都写的很细,重要代码都在原文中,希望大家都可以自己做一做,请转发本文到朋友圈后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先记得收藏,再点赞分享。

也欢迎大家的意见和建议,大家想了解什么统计方法都可以在文章下留言,说不定我看见了就会给你写教程哦,有疑问欢迎私信,有合作意向请直接滴滴我。

如果你是一个大学本科生或研究生,如果你正在因为你的统计作业、数据分析、模型构建,科研统计设计等发愁,如果你在使用SPSS, R,Mplus中遇到任何问题,都可以联系我。因为我可以给您提供最好的,最详细和耐心的数据分析服务。

如果你对Z检验,t检验,方差分析,多元方差分析,回归,卡方检验,相关,多水平模型,结构方程模型,中介调节,量表信效度等等统计技巧有任何问题,请私信我,获取详细和耐心的指导。

如果你或你的团队需要专业的科研数据清洗,建模服务,教学培训需求等等。请联系我。

If you are a student and you are worried about you statistical #Assignments, #Data #Analysis, #Thesis, #Reports, #Composing, #Quizzes, Exams.. And if you are facing problem in #SPSS, #R-Programming, #Excel, Mplus, then contact me. Because I could provide you the best services for your Data Analysis.

Are you confused with statistical Techniques like z-test, t-test, ANOVA, MANOVA, Regression, Logistic Regression, Chi-Square, Correlation, Association, SEM, multilevel model, mediation and moderation etc. for your Data Analysis...??

Then Contact Me. I will solve your Problem...

If You or Your Research Team Need Professional Scientific Data Cleaning, Model Building Services or Statistical Consulting... Please Contact Me.

往期精彩

R数据分析:结合APA格式作图大法讲讲ggplot2和ggsci,请收藏

R数据分析:变量间的非线性关系,多项式,样条回归和可加模型

Mplus数据分析:性别差异gendergap的相关研究如何做?

R机器学习:分类算法之logistics回归分类器的原理和实现

R数据分析:PLS结构方程模型介绍,论文报告方法和实际操作

R数据分析:跟随top期刊手把手教你做一个临床预测模型

R数据分析:Lasso回归筛选变量构建Cox模型并绘制列线图

R数据分析:生存分析的列线图的理解与绘制详细教程

R数据分析:如何用层次聚类分析做“症状群”,实例操练

R数据分析:工具变量回归与孟德尔随机化,实例解析

R数据分析:潜类别轨迹模型LCTM的做法,实例解析

R文本挖掘:中文词云生成,以2021新年贺词为例

R机器学习:分类算法之判别分析LDA,QDA的原理与实现

R可视化:plot函数基础操作,小白教程

R机器学习:重复抽样在机器学习模型建立过程中的地位理解

R数据分析:用lme4包拟合线性和非线性混合效应模型

R数据分析:如何用mice做多重插补,实例解析

R数据分析:孟德尔随机化中介的原理和实操

R数据分析:生存分析的列线图的理解与绘制详细教程

R数据分析:cox模型如何做预测,高分文章复现

R数据分析:广义估计方程式GEE的做法和解释

R数据分析:潜类别轨迹模型LCTM的做法,实例解析

R数据分析:潜变量与降维方法(主成分分析与因子分析)

R数据分析:如何给结构方程画路径图,tidySEM包详解

R数据分析:自我报告的身高数据的离群值探索

R数据分析:生存分析与有竞争事件的生存分析的做法和解释

R机器学习:朴素贝叶斯与支持向量机的原理与实现

R数据分析:混合效应模型的可视化解释,再不懂就真没办法

R数据分析:如何理解模型中的“控制”,图例展示

R数据分析:tableone包的详细使用介绍

R数据分析:如何用lavaan包做结构方程模型,实例解析

R机器学习:分类算法之K最邻进算法(KNN)的原理与实现

R数据分析:潜增长模型LGM的做法和解释,及其与混合模型对比

R数据分析:论文中的轨迹的做法,潜增长模型和增长混合模型

R数据分析:纵向分类结局的分析-马尔可夫多态模型的理解与实操

R数据分析:临床预测模型实操,校准曲线和DCA曲线做法示例

R数据分析:国产新冠口服药比辉瑞好的文章的统计做法分享

R数据分析:再写潜在类别分析LCA的做法与解释

R数据分析:潜在转化分析LTA的做法和解释(一)

R机器学习:分类算法之K最邻进算法(KNN)的原理与实现

R数据分析:交互作用的简单斜率图做法及解释

R数据分析:双连续变量交互作用的简单斜率图作图及解释

标签: #分类算法逻辑回归