问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

R语言获取生存分析中连续变量的最佳截断值

创作时间:
作者:
@小白创作中心

R语言获取生存分析中连续变量的最佳截断值

引用
CSDN
1.
https://m.blog.csdn.net/dege857/article/details/142746901

在生存分析中,连续变量的截断处理是一个常见的需求,例如在医学研究中分析高表达和低表达基因对生存率的影响。本文将通过一个乳腺癌数据集的实例,详细介绍如何使用R语言中的survminer包来获取连续变量的最佳截断值,并进行生存率分析。

在生存分析中,如果咱们研究的是连续变量,咱们有时候需要对连续变量进行一个截断,比较截断的两部分的生存率。比如基因的高表达和低表达对生存率的影响,高龄患者和低龄患者生存率的影响。
然而怎么取这个截断点也是有讲究的,自己截断的话,有可能生存率并无明显差别,P>0.05。

今天咱们通过survminer包来演示怎么对连续变量怎么获取最佳截断值,继续使用我们的乳腺癌数据(公众号回复:乳腺癌,可以获得数据)我们先导入数据和R包library(foreign)

library(foreign)
library(survival)
library(survminer)
bc <- read.spss("E:/r//test/Breast cancer survival agec.sav",
                use.value.labels=F, to.data.frame=T)


我们先来看看数据:
age表示年龄,pathsize表示病理肿瘤大小(厘米),lnpos表示腋窝淋巴结阳性,histgrad表示病理组织学等级,er表示雌激素受体状态,pr表示孕激素受体状态,status结局事件是否死亡,pathscat表示病理肿瘤大小类别(分组变量),ln_yesno表示是否有淋巴结肿大,time是生存时间,后面的agec是我们自己设定的,不用管它。
假设咱们想研究不同年龄段的乳腺癌对生存率的影响,需要通过一个截点把年龄分成高龄和低龄两个组。
需要使用到survminer 包的surv_cutpoint函数,data填入你的数据,time填入你的时间,event填入结局变量,variables这里填入要分析的变量

res.cut <- surv_cutpoint(data=bc, time = "time", event = "status",
                         variables = c("age"))
res.cut

我们可以看到截点是44岁这里,可以把大于44岁分成一组和小于44岁分成一组。还可以绘图看下分布。

plot(res.cut, "age", palette = "npg")

Palette这个参数还可以选风格,比如咱们选个柳叶刀风格。此外风格还有"npg", “aaas”, “lancet”, “jco”, “ucscgb”, “uchicago”, “simpsons” and "rickandmorty"等

plot(res.cut, "age", palette = "lancet")


转换年龄这个变量咱们不用手动转换,survminer包提供了函数surv_categorize,可以直接转换。

res.cat <- surv_categorize(res.cut)
head(res.cat)


咱们可以看到,age被函数转成了高和低2组,大于截点44的是高组,小于的就是低组。
咱们用这个转化好的数据来进行K-M分析看看,先建立模型

fit <- survfit(Surv(time, status) ~age, data = res.cat)

绘图

ggsurvplot(fit, data = res.cat, risk.table = TRUE, conf.int = TRUE,pval = T)

由上图可以看出,截断后的高组和低组生存率存在明显差异。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号