从0开始学习R语言--Day22--km曲线

KM曲线

在分析疾病的死亡率时,我们往往会纠结于怎样在逻辑架构中去考虑未死亡的人群,以及想研究两种药物的表现效果,但病人的指标表现都不明显,作用于其他指标且很难量化。

而KM曲线可以很好地反映人群在时间序列上的生存率,且能考虑到中途生存出院的数据,因为死亡率并不会等到病人都死亡了再去计算,而KM曲线对于这类数据的处理是出院人群不影响生存概率,即不会提高它,只是当做数据集的长度变短了,这样可以有效避免对于生存率和药物效果的误判。

这里举一个例子来说明:

library(survival)
library(survminer)# 1. 生成模拟数据集
set.seed(123)  # 确保结果可重复
n <- 100       # 样本量# 创建数据集:时间、事件状态(1=发生事件,0=删失)、组别
time <- round(rexp(n, rate=1/50), 1)  # 生存时间(指数分布)
status <- rbinom(n, size=1, prob=0.7) # 70%的概率发生事件
group <- sample(c("A", "B"), n, replace=TRUE) # 随机分组# 创建数据框
surv_data <- data.frame(time, status, group)# 查看前几行数据
head(surv_data)# 2. 拟合KM模型
km_fit <- survfit(Surv(time, status) ~ group, data=surv_data)# 3. 绘制KM曲线
ggsurvplot(km_fit, data = surv_data,pval = TRUE,          # 显示p值conf.int = TRUE,      # 显示置信区间risk.table = TRUE,    # 显示风险表palette = c("#E7B800", "#2E9FDF"), # 颜色xlab = "Time (days)", # x轴标签ylab = "Survival Probability", # y轴标签title = "Kaplan-Meier Survival Curve", # 标题legend.labs = c("Group A", "Group B")) # 图例标签# 4. 查看汇总统计
summary(km_fit)# 5. 计算中位生存时间
km_fit

输出:

Call: survfit(formula = Surv(time, status) ~ group, data = surv_data)group=A time n.risk n.event survival std.err lower 95% CI upper 95% CI0.2     61       1   0.9836  0.0163      0.95225        1.0002.1     60       1   0.9672  0.0228      0.92354        1.0002.8     58       1   0.9505  0.0278      0.89750        1.0003.4     57       1   0.9339  0.0320      0.87327        0.9997.3     54       1   0.9166  0.0357      0.84912        0.98910.8     53       1   0.8993  0.0390      0.82594        0.97913.0     51       1   0.8816  0.0421      0.80294        0.96814.0     49       1   0.8636  0.0449      0.78001        0.95614.1     48       1   0.8457  0.0474      0.75764        0.94414.2     47       1   0.8277  0.0497      0.73575        0.93115.3     45       1   0.8093  0.0519      0.71369        0.91815.7     44       1   0.7909  0.0539      0.69203        0.90415.8     42       1   0.7720  0.0558      0.67010        0.89016.0     41       1   0.7532  0.0575      0.64852        0.87519.0     40       1   0.7344  0.0591      0.62726        0.86024.0     39       1   0.7156  0.0605      0.60630        0.84528.2     38       1   0.6967  0.0618      0.58561        0.82929.5     36       1   0.6774  0.0630      0.56449        0.81331.5     35       1   0.6580  0.0641      0.54364        0.79632.2     34       1   0.6387  0.0651      0.52304        0.78034.3     33       1   0.6193  0.0659      0.50270        0.76339.5     32       1   0.6000  0.0666      0.48258        0.74648.3     29       1   0.5793  0.0675      0.46103        0.72848.6     28       1   0.5586  0.0682      0.43975        0.71048.7     27       1   0.5379  0.0687      0.41876        0.69151.4     25       1   0.5164  0.0692      0.39703        0.67256.5     23       1   0.4939  0.0698      0.37446        0.65259.6     22       1   0.4715  0.0701      0.35225        0.63162.7     21       1   0.4490  0.0703      0.33039        0.61066.5     20       1   0.4266  0.0703      0.30887        0.58972.0     18       1   0.4029  0.0702      0.28625        0.56774.8     16       1   0.3777  0.0702      0.26235        0.54478.2     13       1   0.3486  0.0706      0.23446        0.51878.5     11       2   0.2853  0.0706      0.17566        0.46381.0      9       1   0.2536  0.0695      0.14820        0.43486.6      8       1   0.2219  0.0676      0.12207        0.40392.8      7       1   0.1902  0.0650      0.09734        0.372108.4      6       1   0.1585  0.0614      0.07417        0.339136.3      4       1   0.1189  0.0574      0.04611        0.306202.1      3       1   0.0792  0.0501      0.02294        0.274224.9      2       1   0.0396  0.0376      0.00617        0.254360.6      1       1   0.0000     NaN           NA           NACall: survfit(formula = Surv(time, status) ~ group, data = surv_data)n events median 0.95LCL 0.95UCL
group=A 61     43   56.5    39.5    78.5
group=B 39     28   53.4    42.5    82.1

从输出中,我们可以观察到两组的中位生存时间很接近,说明两组数据的病人存活率差不多,而图片中两条曲线的趋势相近,且置信区间(图中的阴影部分)大部分重叠,更进一步说明了两组数据的差异性不大。最后观察p值远大于0.05,说明在统计上两组数据没有显著不同。但要注意的是,随着时间的推移,样本量的数量在急剧减少,在过了随访时间后,就很难跟踪到病人进一步的变化,所以要想确定结论是否是对的,还需要扩大数据量去进一步分析。

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

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

相关文章

SpringBoot ​@ControllerAdvice 处理异常

应用中的异常&#xff0c;有两件事要考虑&#xff0c;怎么处理这个异常&#xff0c;怎么把异常可读性高地返回给前端用户 1.怎么把异常可读性高的返回给前端用户或API的消费者 自定义错误代码和错误内容 2.怎么处理异常 比如遇到某个异常时需要发邮件通知IT团队 Controlle…

爬百度图片如何解决{“antiFlag“:1,“message“:“Forbid spider access“}

在学习深度学习的卷积神经算法时&#xff0c;需要猫和狗的训练数据集。这时想到在百度网上爬取猫和狗的图片。 在爬取狗狗图片的时候&#xff0c;我抓包分析了下获取这个url1 “https://image.baidu.com/search/index?tnbaiduimage&ipnr&ct201326592&cl2&lm&…

QWebEngine

Qt自带的QWebEngine 不支持播放MP4, 需要手动编译QWebEngine模块 不支持播放mp4 // mainwindow.cpp , m_webEngine(new MyWebEngine(this)) void MainWindow::init() { //关闭系统代理&#xff0c;提高速度,采用release会更快QNetworkProxyFactory::setUseSystemConfigurati…

Rust 学习笔记1

Basic基础 actix_web基础 #[get("/favicon")] 获取静态图片 #[get("/welcome")] 简单的欢迎 #`/user/{name}/` basic.rs源码 源码 use std::{convert::Infallible, io};use actix_files::{Files, NamedFile}; use actix_session::{storage::Cooki…

3GPP协议PDF下载

https://www.tech-invite.com/3m38/tinv-3gpp-38.html 可以进入3GPP官网界面&#xff0c;也可以进入PDF下载界面 PDF加载比较慢

高性能服务器程序框架知识梳理

服务器编程框架 服务器程序种类有很多&#xff0c;但是基本框架都一样&#xff0c;核心不同点在于逻辑处理单元。基本框架包含&#xff1a;I/O处理单元、逻辑单元、网络存储单元以及请求队列。 I/O处理单元&#xff08;主线程&#xff09;&#xff1a;服务器用来管理客户连接…

【AI】从0开始玩转混元3D⼤模型,如何让一张静态实物图片一键转为3D实物图,大模型都表示服了,超级简单易上手,快来试试!

HAI 与 NVIDIA &#xff0c;为开发者提供一键部署及生图的能力&#xff0c;让开发者体验3D 模型的同时&#xff0c;也了解云的便利性。 混元3D 2.0是腾讯推出的尖端3D⽣成模型&#xff0c;能够创建带有⾼分辨率纹理贴图的⾼保真3D资产 参赛报名&#xff1a;https://marketing.c…

电路图识图基础知识-电动机的保护电路保护方式(二十六)

电动机保护电路是确保电动机安全、可靠运行的关键技术之一。在工业和日常生活中&#xff0c;电动机被广泛应用于各种设备中&#xff0c;其安全运行对于保障生产效率和人身安全至关重要。本文将详细介绍电动机保护电路的重要性、保护方式以及具体的电路分析&#xff0c;以期为电…

【Pandas】pandas DataFrame droplevel

Pandas2.2 DataFrame Reshaping sorting transposing 方法描述DataFrame.droplevel(level[, axis])用于**从 DataFrame 的索引&#xff08;行或列&#xff09;中删除指定层级&#xff08;level&#xff09;**的方法 pandas.DataFrame.droplevel() pandas.DataFrame.droplev…

Delivering Arbitrary-Modal Semantic Segmentation(CVPR2023)任意模态语义分割论文阅读

文章目录 文章研究思路创建了DeLiVER任意模态分割基准数据集统计信息4种模态25个语义类 提出了任意跨模态分割模型CMNeXt自查询中心&#xff08;Self-Query Hub&#xff0c;SQ-Hub&#xff09;并行池化混合器&#xff08;Parallel Pooling Mixer&#xff0c;PPX&#xff09; 实…

进程控制

一. 进程创建 1.fork的概念与使用 在 Linux 中 fork 可以在一个进程中创建一个新的进程。这个新进程称为子进程&#xff0c;原进程为父进程。使用前需要包含头文件 #include <unistd.h> 。在调用 fork 函数时&#xff0c;子进程与父进程会共享数据和代码&#xff0c;此…

造轮子系列:从0到1打造生产级HTTP客户端,优雅封装OkHttp/HttpClient,支持异步、重试与文件操作

TechZhi HTTP Client Starter 源码特性快速开始1. 添加依赖2. 配置3. 使用 主要功能支持的HTTP方法文件操作功能高级功能配置示例 API使用示例基本请求自定义请求异步请求文件操作示例错误处理 构建和测试依赖说明 本文将介绍一款本人开发的高性能Spring Boot HTTP客户端Starte…

Java过滤器的基本概念

概述 Java 过滤器是 Java EE (Jakarta EE) 中的一种组件&#xff0c;用于在请求到达 Servlet 或 JSP 之前对其进行预处理&#xff0c;或者在响应返回客户端之前对其进行后处理。过滤器主要应用于以下场景&#xff1a; 请求参数过滤和转换字符编码处理身份验证和授权日志记录压…

gbase8s数据库获取jdbc/odbc协议的几种方式

PROTOCOLTRACEFILED:\sqltrace1.log;PROTOCOLTRACE5 jdbc 参数 &#xff0c;明文协议&#xff0c;并发时 会错乱&#xff0c;适合单线程调试 SQLIDEBUGC:\Users\lenovo\Desktop\sqlidebug.log1 jdbc参数&#xff0c;密文协议&#xff0c;需使用解密工具解析&#xff0c;解析…

【android bluetooth 框架分析 04】【bt-framework 层详解 7】【AdapterProperties介绍】

前面我们提到了 蓝牙协议栈中的 Properties &#xff0c; 这篇文章是 他的补充。 【android bluetooth 框架分析 04】【bt-framework 层详解 6】【Properties介绍】 在 AOSP&#xff08;Android Open Source Project&#xff09;中&#xff0c;AdapterProperties 是一个 Java…

C盘瘦身?

突然发现回收站底部有横幅辣眼睛&#xff01; 点击深度清理跳转C盘瘦身 点击一键瘦身跳转支付 回收站右键还有菜单 回收站右键可以通过设置关闭 回收站底部横幅关不了&#xff01; 流氓没人管了吗&#xff1f;

用户通知服务,轻松实现应用与用户的多场景交互

用户在使用应用时&#xff0c;经常想要了解应用程序在执行的操作&#xff0c;如下载完成、新邮件到达、发布即时的客服支付通知等&#xff0c;这些通知除了携带基本的文本图片信息外&#xff0c;最好还可以支持文件上传下载进度场景下的进度条通知&#xff0c;以及点击通知栏可…

苹果获智能钱包专利,Find My生态版图或再扩张:钱包会“说话”还能防丢

苹果公司近日成功获批一项突破性专利&#xff0c;揭示了一种支持Find My网络的全新智能钱包设计方案。该钱包不仅能智能管理用户的信用卡、身份证等实体卡片&#xff0c;更具备了追踪定位和通过扬声器发声提醒的能力&#xff0c;有望成为苹果“查找”&#xff08;Find My&#…

当机床开始“思考”,传统“制造”到“智造”升级路上的法律暗礁

——首席数据官高鹏律师团队创作&#xff0c;AI辅助 一、被时代推着走的工厂&#xff1a;从“铁疙瘩”到“智能体”的阵痛 某汽车零部件厂的李厂长至今记得三年前的凌晨。为了赶上新能源车企的订单&#xff0c;厂里咬牙引进了两条智能生产线&#xff0c;可调试第三天&#xff…

概率基础——不确定性的数学

第05篇&#xff1a;概率基础——不确定性的数学 写在前面&#xff1a;大家好&#xff0c;我是蓝皮怪&#xff01;前几篇我们聊了统计学的基本概念、数据类型、描述性统计和数据可视化&#xff0c;今天我们要进入统计学的另一个重要基础——概率论。你有没有想过&#xff0c;为什…