Cox回归预测模型的基础统计策略大致可以概括为“一表四图”,即均衡性表、列线图、校准图、ROC图、DCA图。
今天主要讲解均衡性表的制作,在构建预测模型时必须要有训练集与验证集,而验证集又分为内部验证与外部验证,内部验证是必须的。内部验证集与训练集是由同一份数据拆分而成,训练集用于构建模型,验证集用来后续测试模型的泛化能力。而均衡性表是用来比较训练集与验证集差异性的重要表格,也是预测模型文章中的基线表,通常需要两个数据集无统计学差异。
本文将以复现一篇seer公共数据库文章(Q1 IF=5.2)为例,说明预测模型中均衡性表格的绘制过程,
一、文献解读
案例文献是沈阳医学院公共卫生学院学者基于SEER数据库的一项回顾性研究,旨在建立一个列线图来预测老年恶性骨肿瘤(MBT)患者的总生存期(OS)。
1. 摘要
背景:恶性骨肿瘤(MBT)是老年患者死亡的原因之一。我们研究的目的是建立一个列线图来预测老年MBT患者的总生存期(OS)。
方法:从SEER数据库下载了2004年至2018年所有老年MBT患者的临床病理数据。他们被随机分配到训练集(70%)和验证集(30%)。采用单因素和多因素Cox回归分析确定老年MBT患者的独立危险因素。基于这些危险因素构建列线图,以预测老年MBT患者的1年,3年和5年OS。然后,利用一致性指数(C指数)、校准曲线和受试者工作曲线下面积(AUC)来评价预测模型的准确性和判别力。决策曲线分析(DCA)用于评估列线图的临床潜在应用价值。根据列线图上的分数,将患者分为高风险组和低风险组。Kaplan-Meier(K-M)曲线用于测试两名患者之间的生存差异。
结果:从SEER数据库下载了2004年至2018年所有老年MBT患者的临床病理数据。他们被随机分配到训练集(70%)和验证集(30%)。采用单因素和多因素Cox回归分析确定老年MBT患者的独立危险因素。基于这些危险因素构建列线图,以预测老年MBT患者的1年,3年和5年OS。然后,利用一致性指数(C指数)、校准曲线和受试者工作曲线下面积(AUC)来评价预测模型的准确性和判别力。决策曲线分析(DCA)用于评估列线图的临床潜在应用价值。根据列线图上的分数,将患者分为高风险组和低风险组。Kaplan-Meier(K-M)曲线用于测试两名患者之间的生存差异。
结论:我们建立了一个新的列线图来预测老年MBT患者的1年,3年,5年的OS。该预测模型可以帮助医生和患者制定治疗计划和后续策略。、
2. 数据介绍
文献共纳入1641名2004-2018诊断的老年MBT患者的临床病理数据。暴露因素包括年龄、种族、性别、诊断年份、组织学类型、分级、分期、原发位置、TNM分期、肿瘤大小、是否化疗、是否放疗及手术方式。
3.研究结果
筛选预测因子只用到训练集数据,通过单因素Cox回归与多因素Cox回归筛选预测变量。这里作者并未使用先单后多或者是逐步回归法筛选预测变量,可能从临床实际考虑的更多。但在实操过程中推荐大家优先考虑逐步回归法进行筛选,这样更有利于构建一个拟合效果好的预测模型。
二、R语言复现
下面我们利用从SEERStat中提取的相关数据进行复现。根据文献中的纳入排除标准,提取涉及的相关数据,最终共纳入1,574名患者(原文献1,641)。介于SEERStat数据库会有更新,因此提取的样本量与原文会有所出入,这里请大家多关注统计方法的运用!本次用到的是R版本是4.3.1。
1. 安装加载R包并导入数据
这里绘制均衡性表格,主要用到"compareGroups"R包
if(!require("compareGroups")) install.packages("compareGroups")library("compareGroups")
2.数据随机拆分
通过设置随机数种子,将数据集按照7:3的比例拆分为训练集与验证集。
set.seed(666666)index <- sort(sample(nrow(dat), nrow(dat)*.7))train <- dat[index,]test <- dat[-index,]
3.均衡性检验
对训练集与验证集提取group变量,并对两个数据集进行合并生成total数据集,total数据集与原数据集相比多了一列分组变量,分组依据是训练集或验证集,以便于通过total数据集进行两个数据集间的均衡性检验。
train$group <- "train"test$group <- "test"total <- rbind(train,test)
#进行均衡性检验,并绘制三线表base_tab <- descrTable(group ~ age + Race + Sex + Year.of.diagnosis +Histologic.type + Grade + Stage + Primary.Site + t_stage + n_stage + m_stage +Tumor_size + Chemotherapy + Radiation + Surgery, data = total,method = c(Tumor_size=2)) print(base_tab)
代码解读:descrTable(y~x1 + x2 + x3......,data = ,method = c(x=2)),y为分组变量,x为暴露因素,method设置为2对指定的定量变量使用秩和检验。
R语言均衡性检验结果如下: