公共数据库SEER文章复现:生存时间资料的倾向性得分匹配,全流程搞定

倾向得分匹配法是通过对样本建模(logit模型)得到倾向性得分,通过倾向性得分为试验组在对照组中找到最接近的样本,从而进行研究的。

倾向得分匹配在真实世界临床研究用途越来越广泛,它是一种事后推动组间比较均衡化的方法。但是对样本量要求会高一点,如果样本太小,会导致处理组许多样本在控制组中找不到能匹配的样本,因此,对于样本量充足的研究,可以考虑一下PSM法来控制混杂偏倚。

2cd9409184279da0b86839b89c88247f.png

接下来通过一份是实操数据集为大家详细介绍PSM法控制混杂的全套分析流程,从基线表——PSM——PSM后的回归分析,通通一文搞定!

一、实操案例介绍

数据集来源于seer公共数据库的一份白血病数据,相关变量及对应编码如下。(如需获取实操数据,可在“医学论文与统计分析”公众号后台回复“seer白血病”)

6da3d2c9f36a92e5d3ef7b4dc6f590be.png

二、R语言实操

1.安装加载R包

本次实操,我们需要先对数据进行倾向性得分匹配,再对匹配后的数据开展生存分析,分析主要用到以下R包,其中“MatchIt”包用于倾向性得分匹配,“survival”和"survminer"是生存分析中的常用包,“autoReg”是一款功能清大的包,各种回归分析不在话下,建议诸位同学可以自行探索一下。(如需获得本次实操代码,可在“医学论文与统计分析”公众号后台回复“seer白血病”)

a9ff8e162c194a838c570cadc7361209.png

2.导入并整理数据

导入数据后,对数据的处理主要包括数据的重编码,数值型数据在R语言分析中会更加灵活;定量数据转分类以及变量类型转换。

8f2cce1d5b69fec0bf0f100ed353df14.png

3.基线差异性分析

这里用到了tableone,这个包可分组给出变量的均值(标准差)/频数(频率)以及组间比较的结果,比较遗憾的是并不显示统计量。

fe8bc99197874e107fa49f1581feb297.png

代码解读:“vars”设定要描述统计的变量,”strata”指定分组变量,”data”设定数据集,”factorVars”指定分类变量。

4.倾向性得分匹配

首先,根据研究需要选择需要匹配的变量,其中~之前的变量(如chemotherapy)是分组变量,也是我们要研究的关键变量,~之后的变量则是其他混杂变量。

8d57824be1c98b737349c198689cac1e.png

代码解读:matchit(formula, data = NULL, method = “nearest”,distance = “glm”, m.order = NULL, ratio = 1,caliper = NULL, replace = FALSE)中,“method”指匹配使用的方法,这里用到了“nearest"是最近邻匹配,也是此R包的默认选项,其他常用的匹配方法还有”exact“精确匹配,”full“完全匹配等。”distance“指用于计算倾向性评分的方法,默认值是“glm”也就是logistic回归法。”m.order"是匹配发生的顺序,这里选择“random”随机,这种情况下可能出现同样代码每次运行出现不同匹配结果的情况,默认为“largest”。“ratio"限制匹配比例,等于1为1:1匹配,数据差距悬殊时,也可以1:2或者1:3、1:4。"caliper”也就是卡钳值,默认为NULL,卡钳值越小,匹配越严格,匹配上的概率也有越小,但是卡钳值过大,同样不利于控制混杂,因此在实际操作中通常设为0.01-0.1,“replace”指对于允许匹配的方法,是否通过替换进行匹配,默认为F。

5.匹配后数据描述及均衡性比较

①SMD版

4da3336e966099389b4fd1d689e28c83.png

结果如下:

dc58ce837f78bd1c9a067b07d7d7f43f.png

②P值版

这里同样用到了tableone包,代码比较简洁,好操作。

27787975a89318ef56d6f6963fcf408c.png

结果如下:

6ed9948d4824b57757e34edd038c83d9.png

6.绘制KM曲线

7af19ca8e1ce0e3f33daa95dc63b5c8d.png

代码解读:conf.int为T,则显示置信区间,”pval “可以自定义在绘图上显示的文字,”risk.table“规定了风险表是否显示,T为显示,“legend.lab””legend.title"定义了图例的名字与分类名字,“linetype”定义线型大小,“xlim”“ylim”定义了x轴与y轴的区间范围,“break.x.by”定义x轴最小单位,“ggtheme”定义了绘图主题。

结果如下:

601643124e0a13986907ef7f2f30e67e.png

那么匹配后,当数据已经均衡可比了,我们应该怎么去分析呢?

倾向得分匹配后,出现了两种现象:第一,样本量减少了;第二,匹配带来了数据的聚集性,造成数据不独立。

这里针对“生存事件资料”,提出几种解决数据不独立、样本量减少的办法。生存事件资料倾向得分匹配后,可开展分层Cox回归、稳健Cox回归、Cox 脆弱模型(Frailty model)回归。

接下来,从普通cox回归到多种形式的cox回归都为大家介绍一下!

7.多因素cox分析

这里用到了survival包与autoReg包。survival包中的coxph函数比较好理解surv(生存时间,生存状态)~混杂因素,data=数据集)。autoReg包是一款功能强大的R包,可以一步到位实现批量单因素,多因素以及逐步回归法

34db77f64a5271b80c32fa330c845478.png

代码解读:autoReg函数可以自动根据设定的阈值控制变量进入多因素回归模型,如果不限制阈值,全部变量进入多因素回归,可将阈值设置为1,如threshold=1;加上“final= TRUE”表示增加逐步向后回归的结果。

8.匹配后cox回归分析——分层分析、脆弱模型、最佳稳健法

在Cox回归应用上,其实,最推荐的应该是稳健法Cox回归方法,下面汇总了各类方法的代码,大家可以都了解一下与普通cox回归代码略有不同。

c592aa7f5976b711acdcf89d0c650cdf.png

好的,以上就是我们本次代码复现的全部内容,包括基线表,KM曲线,PSM,匹配后的回归分析,足够一篇文章的主要统计内容,大家感兴趣的话,不妨试一试!

相关数据与代码已经放在“医学论文与统计分析”公众号后台,回复“seer白血病”即可获取。

三、风暴统计平台一站式分析

以上统计方法在“风暴统计”平台均可实现,包括:

  • 倾向性得分匹配

  • 匹配前后SMD分析图

  • 匹配前后概率密度分析图

  • 绘制KM曲线

  • 匹配前后差异性比较

  • 配后的多种形式回归分析

一应俱全!真正实现菜单式操作,有兴趣不妨点击下方链接查看详细操作流程,快来试试吧!

倾向性得分匹配后,生存时间资料要如何分析?

a240f3bb22f5a6a7ff398b4095ddf133.png

72a0ca512b2b6ab2b71dcd859167e69f.png

以上就是本篇文章的全部内容啦!感兴趣的话,不妨来试试吧!

本公众提供各种科研服务了!

一、课程培训

2022年以来,我们召集了一批富有经验的高校专业队伍,着手举行短期统计课程培训班,包括R语言、meta分析、临床预测模型、真实世界临床研究、问卷与量表分析、医学统计与SPSS、临床试验数据分析、重复测量资料分析、nhanes、孟德尔随机化等10余门课。如果您有需求,不妨点击查看:

发表文章后退款!2023年郑老师团队多门科研统计直播课程,欢迎报名

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ArkTS - @Builder自定义构建函数

这个Builder作用就是可以把组件样式抽离出来,写成公共组件,下边记录下全局自定义构建函数用法及注意的地方。 官方文档:开发者可以将重复使用的UI元素抽象成一个方法,在build方法里调用。 一、用法 下边代码,我在Co…

【C++】类与对象

文章目录 1. 面向过程和面向对象的初步认识2. 类的引入3. 类的定义4. 类的访问限定符及封装4.1 访问限定符4.2 封装 5. 类的作用域6. 类的实例化7. 类对象模型7.1 如何计算类对象的大小7.2 类对象的存储方式猜测7.3 结构体内存对齐规则 8. this指针8.1 this指针的引出8.2 this指…

springboot实现用户操作日志记录

springboot实现用户操作日志记录 简介:之前写了《aop实现日志持久化记录》一文,主要介绍自定义aop标注方法上,通过切面方法对用户操作插入mysql。思路正确但是实际操作上存在一些小问题,本文将从项目出发,对细节进行补…

1、安装与配置

1、安装与配置 Redis 是完全开源的,遵守 BSD 协议,一款NoSql数据库(非关系型数据库),高性能的key-value 数据库。 有以下三个特点: 1、Redis支持数据的持久化,可以将内存中的数据保存在磁盘中…

【AIGC-图片生成视频系列-4】DreamTuner:单张图像足以进行主题驱动生成

目录 一. 项目概述 问题: 解决: 二. 方法详解 a) 整体结构 b) 自主题注意力 三. 文本控制的动漫角色驱动图像生成的结果 四. 文本控制的自然图像驱动图像生成的结果 五. 姿势控制角色驱动图像生成的结果 2023年的最后一天,发个文记录…

使用keepalived时虚拟IP漂移注意事项

什么是Keepalived服务 keepalived是一个开源的软件项目,用于实现高可用性(HA)的网络服务器负载均衡和故障转移。它允许将多台服务器组合在一起,形成一个虚拟服务器集群,实现负载均衡和故障转移。 keepalived的核心功…

Conv2Former:一种transformer风格的卷积特征提取方式

一、前言 昨天读到了一篇有意思的文章,文章提出通过利用卷积调制操作来简化self-attention。还证明了这种简单的方法可以更好地利用卷积层中嵌套的大核(≥7 7)。我们都知道ViTs推动了设计识别模型的发展,近几年使用的也相当的多,通常就是CN…

C/C++面向对象(OOP)编程-回调函数详解(回调函数、C/C++异步回调、函数指针)

本文主要介绍回调函数的使用,包括函数指针、异步回调编程、主要通过详细的例子来指导在异步编程和事件编程中如何使用回调函数来实现。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:C/C精进之路 &…

ROS学习记录:使用RViz观测激光雷达传感器数据

一、使用CtrlAltT打开终端 二、输入 cd ~/catkin_ws1/ 进入工作空间 三、输入source ./devel/setup.bash 四、输入: roslaunch wpr_simulation wpb_simple.launch 打开机器人仿真环境 五、这是机器人仿真环境,里面机器人和书柜 六、再开一个终端&#…

开始使用MEVN技术栈开发01 概述

开始使用MEVN技术栈开发01 概述 简介 Welcome to Beginning MEVN Stack! This book focuses on the key tasks and concepts to get you started to learn and build MEVN stack applications in a faster pace. 欢迎阅读《MEVN堆栈入门》!本书重点介绍关键任务…

echarts 二分图布局_力向导图_关系图

Echarts 常用各类图表模板配置 注意: 这里主要就是基于各类图表,更多的使用 Echarts 的各类配置项; 以下代码都可以复制到 Echarts 官网,直接预览; 图标模板目录 Echarts 常用各类图表模板配置一、力向导图(二分图布局…

【力扣题解】P98-验证二叉搜索树-Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P98-验证二叉搜索树-Java题解🌏题目描述💡题解🌏总…

分割数组的最大差值 - 华为OD统一考试

分割数组的最大差值 - 华为OD统一考试 OD统一考试 分值: 100分 题解: Java / Python / C 题目描述 给定一个由若干整数组成的数组nums ,可以在数组内的任意位置进行分割,将该数组分割成两个非空子数组(即左数组和右数组)&#xf…

【2024最新版】neo4j安装配置

neo4j安装 写在最前面下载配置环境(还是不行?)启动neo4jpython中调用 写在最前面 之前我安装过,还写了一篇笔记 结果意外发现没有了,而且和之前安装的步骤不一样了,因此再次记录安装过程 下载 https://ne…

OpenGL FXAA抗锯齿算法(Qt)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 之前已经提供了使用VCG读取Mesh的方式,接下来就需要针对读取的网格数据进行一些渲染操作了。在绘制Mesh数据时总会遇到图形的抗锯齿问题,OpenGL本身已经为我们提供了一种MSAA技术,但该技术对于一些实时渲染性能有…

【数据结构】栈和队列(栈的基本操作和基础知识)

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 目录 前言 栈 栈的概念和结构 栈的实现 ​…

Rust使用gRPC

需要先安装protoc(Protocol Buffers Compiler),可据此Protobuf Compiler Installation下载 第一步:创建项目 创建两个新的Rust项目,分别作为服务端与客户端: cargo new rust_grpc_servercargo new rust_grp…

elasticsearch系列九:异地容灾-CCR跨集群复制

概述 起初只在部分业务中采用es存储数据,在主中心搭建了个集群,随着es在我们系统中的地位越来越重要,数据也越来越多,针对它的安全性问题也越发重要,那如何对es做异地容灾呢? 今天咱们就一起看下官方提供的…

Redis(上)

1、redis Redis是一个完全开源免费的高性能(NOSQL)的key-value数据库。它遵守BSD协议,使用ANSI C语言编写,并支持网络和持久化。Redis拥有极高的性能,每秒可以进行11万次的读取操作和8.1万次的写入操作。它支持丰富的数…

步进电机为什么叫步进电机,内部结构是什么,工作原理是什么,有什么特点,什么用途。

问题描述:步进电机为什么叫步进电机,内部结构是什么,工作原理是什么,有什么特点,什么用途。 问题解答: "步进"一词表示电机按照固定的步进角度运动。步进电机以控制脉冲信号来驱动转子按照一定的…