如何用R语言拆分数据集并作均衡性检验

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语言均衡性检验结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值