风暴统计案例复现 | logistic回归构建预测模型全流程(1)

Logistic构建临床预测模型案例复现系列主要以一篇基于logistic回归构建预测模型的文章为案例,从构建预测模型——验证模型,包括了随机数据拆分、②基线描述、③筛选预测因子、④绘制列线图、⑤绘制ROC曲线并计算AUC值、⑥HL检验、⑦绘制校准曲线、⑧绘制DCA曲线,基本涵盖了Logistic构建预测模型的全过程,复现过程将会分两篇文章开展,分别是模型构建、模型验证,敬请期待!

本文为Logistic构建预测模型案例复现的第一篇文章——logistic回归预测模型的构建,包括数据集拆分基线描述筛选预测因子构建模型绘制列线图

c6e8915d56dee4268d1bb895be0000c5.png1、复现文章介绍8a545e43d1b34c4d1454e6bcc8247ece.png

 

案例文献是一篇基于SEER公共数据库的一项回顾性研究,旨在开发和验证列线图以预测脑转移的非小细胞肺癌患者早期死亡。

30f95a356c38a43b4ffb7bbceb00ebff.jpeg

背景:在非小细胞肺癌(NSCLC)的整个病程中,很多患者会出现预后差、死亡率高的脑转移(BM)。然而,很少有模型能预测有脑转移的NSCLC患者的早期死亡(ED)。我们旨在开发列线图来预测NSCLC脑转移患者ED。

方法:从监测、流行病学和最终结果(SEER)数据库中选取了2010年至2015年间患有BM的NSCLC患者。纳入标准如下:(I)患者经病理诊断为NSCLC;(II)患者患有BM。患者按7:3的比例随机分为两组,分别为训练组和验证组。采用单因素和多因素Logistic回归方法来确定伴有BM的NSCLC患者发生ED的危险因素。建立了两个列线图,并通过校准曲线、ROC曲线和决策曲线分析(DCA)进行了验证。随访数据包括生存月数、死因和生命状态。初次诊断后3个月内的死亡定义为ED,终点为全因ED和癌症特异性ED。

结果:共纳入了4,920名患有BM的NSCLC患者,并随机分为两个队列(7:3),包括训练队列(n=3,444)和验证队列(n=1,476)。全因ED和癌症特异性ED的独立预后因素包括年龄、性别、种族、肿瘤大小、组织学、T分期、N分期、分级、手术、放疗、化疗、骨转移和肝转移。所有这些变量都用于建立列线图。在全因ED和癌症特异性ED的列线图中,训练数据集的ROC曲线下面积分别为0.813(95% CI:0.799-0.837)和0.808(95% CI:0.791-0.830),验证数据集的ROC曲线下面积分别为0.835(95% CI:0.805-0.862)和0.824(95% CI:0.790-0.849)。此外,校准曲线证明预测的ED与实际值一致。DCA临床应用前景良好。

结论:列线图可用来预测患者死亡的具体概率,有助于治疗决策和重点护理,以及医患沟通。‍

原文与实操数据获取方式:"Zstats风暴统计"公众号回复关键词“案例复现”

本文构建logistic预测模型并做内部验证,思路框架清晰,案例十分典型。下面我们分步介绍:

1.1 数据集拆分

这篇案例文章按照7:3的比例将原数据集随机拆分为训练集与验证集。训练集用于构建预测模型,验证集用于模型的内部验证。

0ac40cfa4f757819e42ca5a913e63ae2.png

1.2 基线描述

数据集拆分后,对训练集与验证集数据分开进行人群特征的基线描述。

753624df55d90f568a2467b6fc30abfc.png

1.3 筛选预测因子

原文章采用了先单后多的筛选方式,将单因素回归结果P值小于0.05的变量纳入多因素回归构建预测模型。

85c3d89333d22311a7984792756490d6.png

 单因素logistic回归结果

d23ad549d8dfe6e1fd0ee3cdff02194c.png

多因素logistic回归结果

1.4 绘制列线图

最终根据多因素模型绘制了列线图。

cbfe5250232be3b3923d7e8f6e516c19.png

b1443b50318c8d6851e43f6a5f089e3e.png2、风暴统计平台快速复现f4003d975fcd81903b3366ba796388d1.png

风暴统计平台是由浙江中医药大学郑卫军教授基于R语言开发的统计分析平台,它具有以下优点:

  • 结果输出简洁,直接生成三线表,支持word版下载!

  • 平台是基于R语言进行开发,结果准确性有保障

  • 全部菜单式操作,统计小白也可以轻松上手!

e53ec56e68119596dd66c67163cbbfc7.png

原文与实操数据获取方式:"Zstats风暴统计"公众号回复关键词“案例复现”

首先,浏览器搜索风暴统计,依次点击"风暴智能统计"——"临床预测模型"——"logistic临床预测模型"!进入分析界面后,根据提示,完成数据的导入与整理。

我们复现用到的数据集是根据原文献变量及纳排标准整理的,最终样本量n=6814(原样本量n=4920)。

这里我们不再赘述数据的导入与整理过程,详细教程大家可以点击下方链接:

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

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

d0e976e0d8514ab35a297aa2aec0373b.png

2.1 数据集拆分

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

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

d5b0a793c98830946a387c2b47e7afd7.png

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

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

ab85154cbe639d2401a5c92c98115da1.png

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

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

f0509a7e5f281a7a677d6f4e5b765845.png

这里我们按照原文献选择按照7:3比例进行随机拆分。

2.2 基线描述

完成"数据拆分"后,我们就来到了"训练集与验证集的比较",这里的分组变量是完成数据拆分后的新增变量,用来区分训练集和验证集,平台会自动选入。

接着,需要我们将需要分析的变量归类纳入正态变量、偏态变量、分类变量。

e85ade4419c77b113842a338d48b6f9f.png

正态数据会使用均值±标准差表示,采用t检验进行组间比较;偏态数据会使用中位数与上下四分位数表示,采用秩和检验进行组间比较;分类数据会使用百分比表示,采用卡方检验及fisher法进行组间比较!

bc6fac7e16530960b7e3e5b24075f8ae.png

2.3 筛选预测因子

下面我们就可以开始构建预测模型啦!请注意,预测模型的构建仅在训练集开展哦!

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

首先,选择模型变量——因变量自变量。因变量必须是以0和1赋值的哦!自变量就可以放入我们数据中所有可能的预测因子!

a6347679eadc5d0077823411984382b1.png

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

377c8bca78e46a763c95b949b952d058.png

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

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

6876ee36f0f4e38159ce68583991db01.png

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

  • 基于分组差异性结果

  • 基于单因素回归结果

  • 自定义

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

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

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

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

de2fde9d9def40eef24e727c7696ce4d.png

03bd45ea285b08697942c41a4060825d.png

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

177832fe615d9f64ee1c6c6e8b38e228.png

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

976b6f3c0df0bf266caa5661e601812f.png

2.4 绘制列线图

进入“模型呈现、评价与验证“部分,就会出现我们最终的列线图啦!

93f344e21126f2d0c9e75100c3e8f670.png

平台将R语言众多的细节参数设置全部转为了菜单式操作,像是刻度、变量值、变量、图全部支持自定义!

注:如果图形显示不完全,可以在"行间距"这里进行调整!

414f1ad261cd53748f7edc5379c03892.png

2.5 下载结果

完成分析后,就可以下载结果了,我们前面分析的全部结果,平台均支持下载,表格类结果可下载word版,图片结果可下载pdf、jpeg、png、tiff

包括拆分后的数据集(总数据集、训练集、验证集)基线描述三线表logistic回归三线表列线图图片

2246b7305107ec697d658c1d60fef3fe.png
02cf094baa9ec2b1cdde746392644fd8.png
db9723f5f9c83923aab2ecb11cefcb1f.png

我们文章的前半部分复现就到这里,下一篇章,我们将开始继续模型验证分析的复现讲解,包括:模型拟合评价HL检验模型区分度检验-ROC曲线模型校准度检验-校准曲线模型的临床获益评价-DCA曲线

原文与实操数据获取方式:"Zstats风暴统计"公众号回复关键词“案例复现”

如果您在风暴统计平台的使用过程中有任何的建议或疑问,欢迎加入我们的讨论群!群里郑老师与助教会在群内解答!

a811f450547f90862467f8208a626cd5.png

统计机器人交流群

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,构建逻辑回归模型预测企业违约概率的过程可以分为以下几个步骤: 1. 收集数据。收集包括企业基本信息、财务数据、信用记录、历史业绩等方面的数据。 2. 数据预处理。对收集到的数据进行清洗、缺失值处理、异常值处理、归一化等处理。 3. 特征工程。根据实际情况,选择合适的特征进行处理,比如将分类特征进行独热编码,对连续特征进行离散化等。 4. 划分数据集。将处理好的数据集划分为训练集和测试集。 5. 构建逻辑回归模型。使用 Python 的 Scikit-learn 库中的 LogisticRegression 类来构建逻辑回归模型。 6. 训练模型。使用训练集对模型进行训练。 7. 评估模型。使用测试集对模型进行评估,可以通过计算准确率、召回率、F1 值等指标来评估模型的性能。 8. 应用模型。使用训练好的模型进行违约概率预测。 下面是一个简单的 Python 代码示例,用于构建和训练逻辑回归模型: ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, f1_score # 读取数据集 data = pd.read_csv('data.csv') # 数据预处理 # ... # 特征工程 # ... # 划分数据集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 构建逻辑回归模型 model = LogisticRegression() # 训练模型 model.fit(X_train, y_train) # 评估模型 y_pred = model.predict(X_test) accuracy = accuracy_score(y_test, y_pred) f1 = f1_score(y_test, y_pred) print('Accuracy:', accuracy) print('F1 score:', f1) # 应用模型进行违约概率预测 prob = model.predict_proba(X_new)[:, 1] ``` 其中,`X` 是特征矩阵,`y` 是标签向量,`X_new` 是新数据的特征矩阵,`prob` 是预测的违约概率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值