如何快速构建COX预测模型并绘制ROC曲线?

临床预测模型,也是临床统计分析的一个大类,除了前期构建模型,还要对模型的预测能力、区分度、校准度、临床获益等方面展开评价,确保模型是有效的!

其中评价模型的好坏主要方面还是要看区分度和校准度,而校准度方面目前最常见的是校准曲线(calibration curve),就是将实际发生率和预测发生率绘制的散点图,用于评价模型预测概率和实际概率一致性

在坐标系中,如果我们将模型预测概率放在横轴,实际概率放在纵轴,一个完美的预测模型的矫正曲线应该是一个45°向上过0的直线(Ideal),意味着模型预测概率和实际概率完全吻合。但是我们在论文中看到的矫正曲线一般是下图样子的:

与对角线不完全贴合的状态,因此实际分析中,打眼一看,两条线都在Ideal线的周围没有偏离的太离谱就可以。

29a4c8b633e8cea5dfe6ed278c52e745.png

理论知识比较好理解,但是实际分析中,想要绘制出精美的校准曲线,还要花一番功夫,像是常见的R语言软件就需要大量参数进行调整......

因此,这里为大家推荐一个统计分析小工具——风暴统计,可以超快速完成临床预测模型的校准曲线绘制!

风暴统计是由浙江中医药大学的郑卫军教授基于R语言开发的,不仅结果准确性有保障,并且全部实现菜单化操作,统计小白也可以轻松上手,绘制精美的列线图!

下面我们就结合一份实操数据来为大家详细介绍一下具体的操作步骤吧!

百度、必应Bing搜索“风暴统计”

本平台上线的所有工具都是免费的

f8bca2e8376de33f51c76bb3f8ea9b2f.png

1、进入风暴统计平台

首先,浏览器搜索风暴统计,依次点击"风暴智能统计"——"临床预测模型"!平台有"内、外部验证"版及“只建模不验证”版。

通常构建预测模型都需要对模型进行验证,内部验证是必须的,条件允许情况下,进行外部验证也是很好的,因此,构建预测模型研究中,推荐大家使用"内、外部验证"版。

"只建模不验证"版更多用在影响因素研究中,可以绘制ROC曲线进行探索分析,或者计算约登指数。

进入分析界面后,根据提示,完成数据的导入与整理。这里我们不再赘述数据的导入与整理过程,详细教程大家可以点击下方链接:

详细指南!风暴统计如何高效导入数据,统计分析快人一步?

详细版!如何利用风暴统计进行数据的整理转换?

58781ed79fa0cefa8b1eb3342d187601.png

2、数据集拆分

预测模型都需要内部验证,内部验证的方法有随机拆分、交叉验证、Boostrap等。但风暴统计平台目前仅能做随机拆分法内部验证。

随机拆分法内部验证,顾名思义就是将原始数据集按照7:3(常见)或者6:4等比例进行拆分,一部分用于建模,另外一部分用于验证模型。

c24890735d47330a787d7be3b231e598.png

风暴统计支持两种拆分方式:随机拆分法、导入已拆分好的数据。

  • 如果选择“随机拆分”,需要设置随机种子拆分比例。随机种子对于数字位数没有要求,作用是可以保证拆分数据的分析结果可以复现,平台默认是1234,拆分比例更好理解,只需要拖动滑条,蓝色部分就是训练集的数据占总数据的比例。

13322a63871ad4d849aa75b03766ef84.png

  • 如果选择“导入已拆分好的数据”,需要设置事先在导入的数据集中增加一列用于区分训练集和验证集的变量,比如新增列叫"group",通过编码赋值1代表训练集,2代表验证集。那么第一步:选入区分训练集与验证集的变量,第二步:勾选代表训练集的编码值!

    注:“导入已拆分好的数据”不仅可以做内部验证,更重要还可以用来做外部验证哦!同样需要一列变量来区分训练集和外部验证集!

b72508c3bb8cdc25e13bf8de641d73e3.png

这里,我们额外介绍一下随机种子,随机种子的目的是为了保证分析结果可复现,因为数据的拆分具有随机性,在R语言分析中,如果不设置随机种子,那么每次拆分产生的训练集与验证集就不一样,分析结果也会不一样。

平台设有默认随机种子1234,如果不修改,每次分析结果是一样的。此外,对随机种子没有特别要求,任意几位数字都可以。

3、构建预测模型

完成数据记得拆分后,我们就可以开始构建预测模型啦!请注意,预测模型的构建仅在训练集开展哦!

预测模型的本质,简单来说,也就是多因素回归模型!多因素回归听上去是不是平易近人许多?风暴统计可以超快速完成这一步!

首先,选择模型变量——生存结局变量生存时间变量自变量。结局变量必须是以0和1赋值的二分类变量哦!生存时间变量也就是我们的随访时间,应该是定量连续数据,自变量就可以放入我们数据中所有可能的预测因子!

58ac007cfc76034c911252f52d31c436.png

然后,平台超快速就给出了批量单因素分析的结果!

c9490ab60a87c98133fa80026c44c523.png

接着,定义模型自变量筛选的方式,满足筛选条件的自变量会进入多因素回归模型!

注:多因素模型中的所有变量就是我们最终预测模型中全部的预测因子了,并不只是多因素中有意义的变量哦!如果希望预测模型中的变量P值均小于0.05,可以选择逐步回归分析中"根据P<0.05筛选"的选项!

7998f75cd5ae453f07b72c552fc06a0a.png

自变量筛选方式也有3种:

  • 基于分组差异性结果

  • 基于单因素回归结果

  • 自定义

前两个比较相似,区别就在是根据差异性P值还是单因素P值进行筛选!

如果选择了"基于分组差异性"或"基于单因素回归",只需要完成2步设置。

第一步,P阈值的选择,如果自变量个数过少,可以适当放宽标准,0.1、0.2也都是可以的。当选择不限制时,单因素的全部自变量都将纳入多因素回归分析。

第二步,是否开展逐步回归,选择“否”,就是我们常见的先单后多分析,另外逐步回归方法,平台也提供了多种选择:双向逐步回归,向前逐步回归,向后逐步回归以及考虑到有时P值大于0.05的变量在逐步回归时也会留在模型中,新增了根据P<0.05的原则开展逐步回归!大家可以根据研究需要自行选择。

253e13f5d1271f180d3137bf87e22ed8.png

a257ac178e332d95fa19334df04992bc.png

如果选择了自定义筛选自变量,比如实际研究中,预测因子的筛选也需要结合专业知识以及相关文献进行判断,纯数据驱动也不太好。假如变量A在临床中是十分重要的变量,但是可能受限于样本或其他原因,单因素与差异性均没有统计学意义,这时候,我们可以自定义挑选预测因子,选择我们预期的预测因子,自行选择是否需要逐步回归!也是一条途径!

f59b6d6cadc3727aef63935eef4f81cd.png

选择完毕后,我们就得到了多因素回归的结果,现在多因素模型也就是我们最终的预测模型,列线图中会包含多因素回归中的全部变量(无论多因素回归中是否有意义)

3bdd5b2fd536d50ac2216256b537f652.png

4、模型校准度评价

完成预测模型的构建后,就可以来到"模型呈现、评价与验证"绘制校准曲线了!

110b7f1ed8051adf6dec9443d8cfc9c2.png

这里还有3个参数需要设置:生存时间节点、曲线节点数、绘图抽样次数
 

  • 生存时间节点:时间节点一次只能输入一个数字,根据实际数据不同,一般会选择具有代表性的节点,比如30天,12周,3个月,1年,10年等,这个时间点一定是小于最长的有效随访时间。

  • 曲线节点数:节点数关乎曲线的平滑度,节点数越多,图形划分越细致,展示信息也越多,但是在样本量较小的情况下,建议选择较少节点数避免过度波动。

    42e1e245a438f1c1201a2c74d14be517.png
    acb6d3df9177b23513162f59b73498b1.png
    78dec44c5e667b0d3e57956bb6c035bd.png
  • 绘图抽样次数:通常称为bootstrap次数,指从原数据集中随机抽取样本并进行多次重复来评估模型的稳定性,次数越多,结果越稳定,但是后台迭代运算需要花费的时间也越长,因此需要在稳定性与计算资源间找到平衡点,平台建议的是500,相关文献中使用1000次重抽样会常见一些。

此外,平台还提供了训练集与验证集校准曲线的原生态版优化版!一共4个图形,给大家提供更加多样化的选择!

8142bcda3c59d4b5fa56bc3af9ff9f05.png

a088014d00acd99f9e7ce7277d2da85a.png

更便捷的是,风暴统计将R语言绘制校准曲线的细节参数设置,全部整合为了菜单式操作!

只需简单设置,就可以修改曲线的颜色、粗细、线条类型,以及坐标轴的字号、间隔、轴标题!只是这两部分的修改仅对"优化版"曲线有效,原生态版是不支持修改的哦!

05684c815caff137ad92df5c611889bb.png

1867f1bd2687f2e5d86c50e07e5246d6.png

4.下载结果

最后在曲线下载设置中,选择图片保存类型(支持pdf、jepg、png、tiff),曲线页面(A4或自定义)。

如果需要向图片中添加中文,可以先下载pdf格式进行二次编辑,再另存为图片!

1a2b2c5f7aeb3fb5fcedab8ee4b57969.png

以上就是风暴统计平台绘制COX回归预测模型校准曲线的全部操作流程啦!如果您在使用过程中出现报错,可以参考下方推文,排查一下问题所在哦!

答疑 | 风暴统计更换服务器后,为什么总出现同样的报错?


详情请点击下方:

零基础两天学会R语言构建临床预测模型

  • 16
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cox 回归中,ROC 曲线并不是一种普遍使用的评估指标,因为 Cox 回归是一种生存分析模型,通常使用生存曲线和 Concordance Index (C-index)来评估模型的性能。 如果你仍然想要绘制 ROC 曲线,可以按照以下步骤进行: 1. 使用 Cox 回归模型对数据进行拟合,并预测每个个体的风险得分。 2. 根据预测的风险得分对样本进行排序,从高到低排列。 3. 选择一个阈值,将风险得分高于该阈值的个体视为阳性,其他个体视为阴性。 4. 计算真正率(TPR)和假正率(FPR),并将它们用于绘制 ROC 曲线。 以下是 Python 中使用 scikit-learn 库绘制 Cox 回归模型的 ROC 曲线的示例代码: ```python from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.linear_model import CoxPHSurvivalAnalysis from sklearn.metrics import roc_curve, auc import matplotlib.pyplot as plt # 生成随机数据 X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_classes=2, random_state=42) # 将数据集分成训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 拟合 Cox 回归模型 cox = CoxPHSurvivalAnalysis() cox.fit(X_train, y_train) # 预测风险得分 risk_scores = cox.predict(X_test) # 计算 ROC 曲线和 AUC fpr, tpr, thresholds = roc_curve(y_test, risk_scores) roc_auc = auc(fpr, tpr) # 绘制 ROC 曲线 plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver operating characteristic example') plt.legend(loc="lower right") plt.show() ``` 请注意,ROC 曲线的解释要比二元分类问题复杂得多,因为在 Cox 回归中,我们不能直接将预测结果与真实结果进行比较,而是需要将个体的风险得分与其他个体进行比较。因此,使用生存曲线和 C-index 更容易解释模型性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值