您现在的位置是:首页 > 编程 > 

听说你的KM

2025-07-27 19:41:17
听说你的KM 0.背景知识KM-plot是生存分析最常用的图表,没有之一。它接受的分组依据必须是离散型的数据,就是固定分成有限的几类,不能是数值这样的连续型数据。而年龄、基因表达量都是连续型数据,他们要做KM-plot时,就必须要先离散化。按照某个具体数值作为分界线,大于该值的是一个组, 小于该值的是另一个组。常见的离散化方案分界线的选择方法有三种:1.按照经验值,例如年龄按照60分为年长组和年轻

听说你的KM

0.背景知识

KM-plot是生存分析最常用的图表,没有之一。它接受的分组依据必须是离散型的数据,就是固定分成有限的几类,不能是数值这样的连续型数据。

而年龄、基因表达量都是连续型数据,他们要做KM-plot时,就必须要先离散化。按照某个具体数值作为分界线,大于该值的是一个组, 小于该值的是另一个组。

常见的离散化方案分界线的选择方法有三种:

1.按照经验值,例如年龄按照60分为年长组和年轻组。

2.按照中位数

.按照最佳截断值

最佳截断值是约登指数(敏感度+特异度-1)最大的点,说人话就是让KM-plot上的p值最小的值。例如我编的数据年龄范围是45-100,那么就是说在这个范围内去计算一系列的截断值和它对应的p值,出让p值最小的那个截断值。我经常说这是一种耍流氓行为!你可以不用但是不能不会啊。

1.编造一个示例数据
代码语言:javascript代码运行次数:0运行复制
if(!require(survival))install.packages('survival',update = F,ask = F)
if(!require(tinyarray))install.packages('tinyarray',update = F,ask = F)
if(!require(survminer))install.packages('survminer',update = F,ask = F)
library(tinyarray)
library(survival)
library(survminer)
head(meta1) #tinyarray包里的示例数据

代码语言:javascript代码运行次数:0运行复制
set.seed(1)
meta = mutate(meta1,age = sample(45:100,nrow(meta1),replace = T)) #伪造一列,年龄,做例子
head(meta)
2.用中位数来作为分界线
代码语言:javascript代码运行次数:0运行复制
m = median(meta$age,na.rm = T);m #中位数
代码语言:javascript代码运行次数:0运行复制
## [1] 7
代码语言:javascript代码运行次数:0运行复制
group = ifelse(meta$age>m,"older","younger")
table(group)
代码语言:javascript代码运行次数:0运行复制
## group
##   older younger 
##      88      89
代码语言:javascript代码运行次数:0运行复制
sfit=survfit(Surv(time, event)~group, data=meta)
ggsurvplot(sfit,pval =TRUE, data = meta,  = TRUE)
.用最佳截断值来作为分界线
代码语言:javascript代码运行次数:0运行复制
cut = surv_cutpoint(meta, time = "time", event = "event",variables = "age")
m = cut[["cutpoint"]][1, 1];m
代码语言:javascript代码运行次数:0运行复制
## [1] 92
代码语言:javascript代码运行次数:0运行复制
group = ifelse(meta$age>m,"older","younger")
table(group)
代码语言:javascript代码运行次数:0运行复制
## group
##   older younger 
##      1     146
代码语言:javascript代码运行次数:0运行复制
sfit=survfit(Surv(time, event)~group, data=meta)
ggsurvplot(sfit,pval =TRUE, data = meta,  = TRUE)

哈哈!我举得例子真好,按照中位数不显著,按照最佳截断值就显著。有些东西就是,你感觉不应该这样干但是架不住它太有诱惑力了。

生存分析的图有一个简化的画法,在我的包里,就图一个简单美丽。

代码语言:javascript代码运行次数:0运行复制
group = factor(group,levels = c("younger","older"))
draw_KM(meta,group_list = group)
本文参与 腾讯云自媒体同步曝光计划,分享自。原始发表:2024-07-19,如有侵权请联系 cloudcommunity@tencent 删除table数据图表metaplot

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1236980.html

相关标签:无
上传时间: 2025-07-26 17:25:13
留言与评论(共有 10 条评论)
本站网友 2013最新xp系统下载
25分钟前 发表
event)~group
本站网友 成都酒店预订
14分钟前 发表
如有侵权请联系 cloudcommunity@tencent 删除table数据图表metaplot
本站网友 北汽集团官网
2分钟前 发表
event)~group
本站网友 dala
15分钟前 发表
说人话就是让KM-plot上的p值最小的值
本站网友 中国银行香港有限公司
26分钟前 发表
就必须要先离散化
本站网友 八一农垦大学
18分钟前 发表
levels = c("younger"
本站网友 上海自助餐
10分钟前 发表
就是固定分成有限的几类
本站网友 珠海渔家乐
24分钟前 发表
按照中位数不显著
本站网友 合淮阜高速
25分钟前 发表
ask = F) if(!require(tinyarray))install.packages('tinyarray'