花费-效益分析筛选肿瘤标记物最佳组合

news2025/3/18 10:10:13

基于花费-效益分析的肿瘤标记物最佳组合筛选

本文的想法来自于一篇发表的论文[1]。论文作者有感于临床上存在的不恰当的肿瘤标记物的检测,搜集了各种肿瘤标记物(TM)的价格、检测结果和最终诊断等数据,使用逻辑回归模型分别计算出2,3和4种TM组合的敏感度,最终使用TM组合的价格和其敏感度的比值(越低越好)来筛选最具有效价比的TM组合,以实现降低花费等目的。

疾病的花费显然是政府、医院和患者三方面共同关心的问题之一。通过相关数据分析,把钱花在该花的地方,对各方面都有益处,但是这方面的数据并不易得。本文旨在通过复现一篇论文中的研究方法,利用Python代码分析不同TM组合的花费与效益,进而筛选出最具性价比的组合。同时,我们尝试优化分析流程,并对效益指标的选择进行讨论。
在这里插入图片描述

分析规划

  1. 复现工作:使用论文中提供的数据集,通过Python代码实现不同TM组合的敏感度计算及花费-效益比分析。
  2. 优化流程:引入变量筛选方法(如Boruta算法),以减少不必要的TM检查,提高分析效率。
  3. 算法讨论:探讨敏感度作为效益指标的合理性,并考虑是否应纳入其他指标(如真阴性率或F1评分)以更全面地评估TM组合的效益。

方法与结果

  1. 复现研究:我们采用了逻辑回归算法与5折交叉验证相结合的方法,计算了不同TM组合(包括2种、3种和4种标记物的组合)的敏感度,并结合这些组合的价格计算了花费-效益比。由于原文章数据预处理和TM单价描述的不够充份,我们的结果与原文不完全一致,但基本实现了研究目的。其中各种TM的单价比网络上低许多,不知道是什么原因导致的。
  2. 流程优化:为减少计算量,我们引入了Boruta算法进行变量筛选。该算法有效地识别并淘汰了部分不重要的TM,保留了原文推荐的TM组合中的关键标记物,证明了其在TM筛选中的有效性。
  3. 算法讨论:敏感度作为效益指标虽然能反映标记物诊断患病个体的能力,但忽视了其对非患病个体的诊断效果。因此,同时考虑真阴性率和真阳性率的的F1评分是不是一个更全面地反映TM组合的效益的指标?未来的研究可以进一步探讨这些指标在花费-效益分析中的应用。

完整的分析过程参见和鲸社区相关的项目。

核心函数如下:5折交叉验证计算敏感度和AUC


#自定义计算acu和recall(敏感度)的函数
def cv_auc_score(X,y):
    n_fold = 5
    folds = KFold(n_splits=n_fold, shuffle=True, random_state=2022)
    #这个是汇总预测概率的结构
    oof_lg = {'.pred_0':np.zeros(len(X)),'.pred_1':np.zeros(len(X)),'truth':np.zeros(len(X)),'pred_class':np.zeros(len(X))}
    for fold_n, (train_index, valid_index) in enumerate(folds.split(X)):
        X_train, X_valid = X.iloc[train_index], X.iloc[valid_index]
        y_train, y_valid = y[train_index], y[valid_index]
        eval_set = [(X_valid, y_valid)]
        model_lg = logistic_model.fit(X_train,y_train )
        y_pred_valid = model_lg.predict_proba(X_valid)
        y_pred_class=model_lg.predict(X_valid)
        oof_lg['.pred_0'][valid_index] = y_pred_valid[:,0]
        oof_lg['.pred_1'][valid_index] = y_pred_valid[:,1]
        oof_lg['truth'][valid_index]=y_valid
        oof_lg['pred_class'][valid_index]=y_pred_class
    oof_lg_df=pd.DataFrame(oof_lg)
    oof_lg_df['truth']=oof_lg_df['truth'].astype(int)
    oof_lg_df['pred_class']=oof_lg_df['pred_class'].astype(int)
    # oof_lg_df.info()
    # print(f'逻辑回归中用到的预测变量{X.columns}')
    # print('----------------------------------------------------')
    # print(classification_report(oof_lg_df['truth'], oof_lg_df['pred_class']))
    # print('----------------------------------------------------------------------')
    # print(roc_auc_score(oof_lg_df['truth'], oof_lg_df['pred_class']))
    return roc_auc_score(oof_lg_df['truth'], oof_lg_df['pred_class']),recall_score(oof_lg_df['truth'], oof_lg_df['pred_class'])

结论

通过对不同TM组合的花费-效益比分析,不同组合之间确实存在显著的差异。如果理论上这个指标可以服务临床床的话,通过自动化其计算过程,可以应用这一分析方法,使其服务于临床实践,提高诊断效率,降低医疗成本。

[1] Zhang, Haichen et al. (2018), Extent and cost of inappropriate use of tumour markers in patients with pulmonary disease: a multicentre retrospective study in Shanghai, China, BMJ Open, Article-journal, https://doi.org/10.1136/bmjopen-2017-019051

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1789664.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中国90米土壤渗流因子Fsic数据

Fsic(土壤渗流因子):土壤渗流因子的计算是根据美国农业部(USDA)土壤质地分类, 进行分类、赋值并归一化,得到土壤渗流因子Fsic的值。将13种土壤质地类型分别在0-1之间均等赋值得到。其中Fsic值越高,代表土壤渗水能力越强,Fsic值域范…

彻底吃透A*算法的最优性

下面的博客将主要介绍A*算法在扩展结点(这对于寻路时间很重要)和总代价(这对于保证最后解的最优性很重要)上的最优性,并将淡化对A *完备性的介绍。 A* 算法流程 A*算法的流程如下[1]: 并定义 f ( n ) f(n…

编译openjdk12-33

编译环境 ubuntu20 Ubuntu里用户可以自行选择安装GCC或CLang来进行编译,但必须确保最低的版本为GCC 4.8或者CLang 3.2以上,官方推荐使用GCC 7.8或者CLang 9.1来完成编译。 源码 https://github.com/openjdk/jdk/tree/jdk-12%2B33 安装gcc sudo apt…

喜讯丨泰迪智能科技实力中标“健康大数据与人工智能实验室建设”项目

泰迪智能科技以健康数据分析与应用为主题的实验中心,为学校大健康产业大数据与人工智能应用人才培养提供载体,并基于培养中心根据学生专业的不同,提供不同的健康大数据学习资源,实现健康大数据技术和数据分析应用能力培养普遍提升…

nginx隐藏版本号、错误信息页面隐藏nginx软件、修改 HTTP 头信息中的connection 字段,防止回显具体版本号、curl命令

目录 安装之后隐藏 配置文件 源代码配置安装之前隐藏 修改nginx.h文件中的 13、14行 修改 HTTP 头信息中的connection 字段,防止回显具体版本号 配置文件49行 错误页面程序返回版本号、nginx隐藏 配置文件36行 ​编辑 安装nginx 相关选项说明 curl命令测试…

Spring Security 注册过滤器关键点与最佳实践

在 Spring Security 框架中,注册过滤器是实现身份验证和授权的关键组件。正确配置和使用注册过滤器对于确保应用程序的安全性至关重要。以下是一些关于 Spring Security 注册过滤器的注意事项和最佳实践。 过滤器链顺序: 注册过滤器通常位于过滤器链的末…

医用腕带朔源用的条形码与二维码如何选择

在医疗环境中的医用腕带作为患者身份识别和管理的重要工具,做为条形码和二维码腕带上的溯源技术,更是为患者信息快速获取、准确传递的保障,实现更加高效和准确的患者身份识别和管理,这种技术可以大大提高医疗服务的效率和质量&…

Linux 多线程 生产者消费者 问题

在 Linux 系统中,生产者和消费者问题是一个经典的多线程同步问题,用于描述如何在多线程环境中协调多个线程对共享资源的访问。这个问题通常涉及两个类型的线程:生产者线程和消费者线程。生产者线程负责生成数据并将其放入缓冲区,而…

2024年端午节放假通知

致尊敬的客户以及全体同仁: 2024年端午节将至,根据国务院办公厅通知精神,结合公司的实际情况,现将放假事宜通知如下: 2024年6月8日(星期六)至6月10日(星期一)&#xff…

一个简单的方式看看MySQL的锁

突然发现半个月没写了。最近事情太多了。 在日常工作的处理问题的过程中,我发现了一个简单的论证锁的问题,以前我讲的有点复杂,看来应该去改改之前的讲法了。 首先构造一个无主键无索引的表。并且初始化5条数据。 场景A: RR隔离…

颠沛流离学二叉树(完结撒花篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

[机器学习] 低代码机器学习工具PyCaret库使用指北

PyCaret是一个开源、低代码Python机器学习库,能够自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具,极大地加快了实验周期,提高了工作效率。PyCaret本质上是围绕几个机器学习库和框架(如scikit-learn、XGBoost、L…

【Kubernetes】k8s集群的污点、容忍、驱逐 以及排障思路

污点和容忍以及驱逐 一、污点(Taint) 污点介绍 节点亲和性,是Pod的一种属性(偏好或硬性要求),它使Pod被吸引到一类特定的节点。Taint 则相反,它使节点能够排斥一类特定的 Pod。 Taint 和 Tol…

【ai】livekit服务本地开发模式1:example app信令交互详细流程

文档要安装git lfs 下载当前最新版本1.6.1windows版本:启动dev模式 服务器启动 (.venv) PS D:\XTRANS\pythonProject\LIVEKIT> cd .

python实现——分类类型数据挖掘任务(图形识别分类任务)

分类类型数据挖掘任务 基于卷积神经网络(CNN)的岩石图像分类。有一岩石图片数据集,共300张岩石图片,图片尺寸224x224。岩石种类有砾岩(Conglomerate)、安山岩(Andesite)、花岗岩&am…

【笔记】Sturctured Streaming笔记总结(Python版)

目录 相关资料 一、概述 1.1 基本概念 1.2 两种处理模型 (1)微批处理 (2)持续处理 1.3 Structured Streaming和Spark SQL、Spark Streaming关系 二、编写Structured Streaming程序的基本步骤 三、输入源 3.1 File源 &a…

python-题库篇-为什么数组下标从0 开始而不是 1

为什么很多编程语言要把 0 作为第一个下标索引,而不是直观的 1 呢? 这个问题 Dijkstra 已经解答过了,没错,就是你知道的 Dijkstra,Dijkstra 最短路径算法,荷兰语全名是 Edsger Wybe Dijkstra,于…

linux查看磁盘类型命令

在Linux中,有多种方法可以查看磁盘是固态硬盘(SSD)还是机械硬盘(HDD)。以下是一些常用的方法: 查看/sys/block/目录 /sys/block/目录包含了系统中所有块设备的信息。你可以查看这个目录中的设备属性来判断…

保姆级教程:Redis 主从复制原理及集群搭建

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。 😊 座右铭:不…

LabVIEW在高校电力电子实验中的应用

概述:本文介绍了如何利用LabVIEW优化高校电力电子实验,通过图形化编程实现参数调节、实时数据监控与存储,并与Simulink联动,提高实验效率和数据处理能力。 需求背景高校实验室在进行电机拖动和电力电子实验时,通常使用…