大数跨境
0
0

【R语言生存分析】生存曲线以及COX模型评价DCA曲线组合画法

【R语言生存分析】生存曲线以及COX模型评价DCA曲线组合画法 医学统计数据分析
2025-02-27
1
导读:【R语言生存分析】生存曲线以及COX模型评价DCA曲线组合画法

点击上方蓝字关注我们


探究变量之间的关系是数据挖掘中的一个基本分析内容,对于常规的离散型或者连续型变量,有很多的方法可以用于挖掘其中的关系,比如线性回归,逻辑回归等等。然而有一类数据非常的特殊,用回归分析等常用手段出处理这类数据并不合适,这类数据就是生存数据

常规数据在表示时,只需要一个值,比如患者的血压,性别等数据,不是连续型就是离散型;生存数据则有两个值,第一个是生存时间,可以看做是一个连续型的变量,第二个是生存事件,可以看做是离散型的变量。




生存可以指人或动物的存活(相对于死亡),可以是患者的病情正处于缓解状态(相对于再次复发或恶化),还可以是某个系统或产品正常工作(相对于失效或故障),甚至可是是客户的流失与否等。

生存分析是研究生存时间的分布规律,以及生存时间和相关因素之间关系的一种统计分析方法。

在生存分析中,研究的主要对象是寿命超过某一时间的概率。还可以描述其他一些事情发生的概率,例如产品的失效、出狱犯人第一次犯罪、失业人员第一次找到工作等等。

在某些领域的分析中,常常用追踪的方式来研究事物的发展规律,比如研究某种药物的疗效,手术后的存活时间,某件机器的使用寿命等。

在医学研究中,常常用追踪的方式来研究事物发展的规律。如,了解某药物的疗效,了解手术的存活时间,了解某医疗仪器设备使用寿命等等。

今天我们来探讨一下最常用的Kaplan-Meier法,用SPSS和R语言分别实现。




SPSS中生存分析的步骤,想必大家都比较熟练哈,在此简单介绍一下主要步骤:

  1. 打开读取生存数据

  2. 点击分析,生存分析,KM法

  3. 选择变量(时间,结局,分组),点击确定运行。

  4. 读取结果。(如下图所示)

  5. 可以对输出图片些许优化。











那么在R语言中进行生存分析,主要有哪些步骤呢?

比如分析治疗后的患者生存情况,在观测期间,可以看到不同患者的存活时间,这个值就是生存时间,而有些患者可能在观察期内出现死亡,复发等情况,死亡或者复发则称之为事件。

生存分析是既考虑结果又考虑生存时间的一种统计方法,并可充分利用截尾数据所提供的不完全信息,对生存时间的分布特征进行描述,对影响生存时间的主要因素进行分析。

Kaplan-Meier生存曲线(KM曲线)被用于估计不同组别之间的生存函数差异,在R中通常使用R包survminer和survival绘制生存曲线。


R包survminer和survival做生存分析核心函数:

survfit()
主要三个变量: 时间、状态、分组
需要注意的是,函数结局变量status: censoring status 1=censored,2=dead
用2来代表有结局发生,用1来代表删失数据。


今天我们仍以如下示例数据为例,探讨一下R语言生存曲线的画法。









我们先在RStudio中打开示例数据








我们先在RStudio中打开示例数据

#加载所需要的包library(survival)library("ggplot2")

library("ggpubr")

library("survminer")

library("openxlsx")

 library("survminer")

#我们先在桌面创建一个生存分析的文件夹,载入生存分析、画图、读取Excel数据的包。

data <- read.xlsx("C:\\Users\\L\\Desktop\\示例数据.xlsx")

f0 <- survfit(Surv(时间,否结局) ~ 指标8,data = data)

#打开数据,并将此次生存分析赋值给fit

summary(f0)

#对此次分析结果建立表格查看(如下图:)







#然后我们可以用plot()函数将此次生存分析曲线画出来:

plot(f0,xlab = "时间", ylab = "生存概率", main = "生存曲线")

可以看到比较单调,我们并没有对颜色等进行规定,因此也不显示。









那么下边是今天的主角1:ggsurvplot()函数。

ggsurvplot(f0,data=data,   size = 1, # 改变曲线的尺寸

   linetype ='strata', # 改变曲线的类型

   break.time.by = 10, # 更改x轴的时间间隔

   palette = c("RED","BLUE"), # 自定义调色板

   conf.int = TRUE, # 添加置信区间

   pval = TRUE  # 添加p值

   )

通过上述语句及注释,我们可以看到如下图所示的生存曲线。






COX模型

‌Cox模型‌,也称为Cox回归模型或比例风险模型(Proportional Hazards Model),是由英国统计学家David Cox于1972年提出的一种半参数回归模型。该模型主要用于生存分析,能够同时分析多个风险因素对生存时间的影响,适用于医学随访研究和其他需要分析生存数据的领域。






基本概念和原理

Cox模型的基本形式为:

[ h(t) = h_0(t) \exp(\beta_1 x_1 + \beta_2 x_2 + \dots + \beta_p x_p) ]

其中,( h(t) ) 表示在时间 ( t ) 的危险率函数,( h_0(t) ) 是基准危险率函数,( \beta_1, \beta_2, ..., \beta_p ) 是偏回归系数,( x_1, x_2, ..., x_p ) 是自变量。

应用场景和优缺点

Cox模型在医学研究中有广泛的应用,主要用于以下几个方面:

‌生存分析‌:研究患者的生存时间及其相关因素。

‌风险因素分析‌:确定与特定事件(如死亡、疾病复发)相关的风险因素。

‌生存率比较‌:比较不同组群之间的生存率。

‌预后评估‌:评估影响患者预后的因素,为治疗决策提供依据。

‌调整分析‌:调整其他变量的影响,更准确地评估特定因素对生存时间的影响。

与其他统计模型的比较

与其他统计模型相比,Cox模型具有以下特点:

‌因变量类型‌:Cox模型的因变量为生存资料(包含二分类结局变量和连续型生存时间变量),而多重线性回归的因变量为数值型变量,Logistic回归的因变量为分类或顺序型变量。

‌数据分布要求‌:Cox模型对数据分布不作要求,而多重线性回归和Logistic回归则要求数据分布分别近似正态分布和二项分布。

‌允许数据删失‌:Cox模型允许删失值,而多重线性回归和Logistic回归不允许。







我们今天以示例数据为例,探讨一下拟合COX模型的基本过程。





#cox模型拟合

f1<-coxph(Surv(时间,结局)~指标1,data)

summary(f1)

survfit_result1 <- survfit(f1, data = data)

plot(survfit_result1,xlab = "时间", ylab = "生存概率", main = "生存曲线")











f2<-coxph(Surv(时间,结局)~指标1+指标2,data)

summary(f2)

survfit_result2 <- survfit(f2, data = data)

plot(survfit_result2,xlab = "时间", ylab = "生存概率", main = "生存曲线")











f3<-coxph(Surv(时间,结局)~指标1+指标2+指标3,data)

summary(f3)

survfit_result3 <- survfit(f3, data = data)

plot(survfit_result3,xlab = "时间", ylab = "生存概率", main = "生存曲线")









#比较f1,f2,f3这3个模型决策曲线的区别

newdata<-list(data,data,data)

cox.tcdca(f1,f2,f3,newdata=newdata)

#自定义一个时间

cox.tcdca(f1,f2,f3,newdata=newdata,timepoint = 30)








#分面绘图

cox.tcdca(f1,f1,f1,newdata=newdata,

timepoint=c(20,30,40))

#增加标题

cox.tcdca(f1,f1,f1,newdata=newdata,

timepoint=c(20,30,40),

Splitface=c("20天","30天","40天"))










医学统计数据分析分享交流SPSS、R语言、Python、ArcGis、Geoda、GraphPad、数据分析图表制作等心得。承接数据分析,论文修回,医学统计,空间分析,问卷分析业务。若有投稿和数据分析代做需求,可以直接联系我,谢谢!





【声明】内容源于网络
0
0
医学统计数据分析
分享交流SPSS、R语言、Python、ArcGis、Geoda、GraphPad、数据分析图表制作等心得。承接数据分析,论文返修,医学统计,空间分析,机器学习,生存分析,时间序列,时空面板,深度学习,问卷分析等业务。公众号右下角可联系作者
内容 323
粉丝 0
医学统计数据分析 分享交流SPSS、R语言、Python、ArcGis、Geoda、GraphPad、数据分析图表制作等心得。承接数据分析,论文返修,医学统计,空间分析,机器学习,生存分析,时间序列,时空面板,深度学习,问卷分析等业务。公众号右下角可联系作者
总阅读32
粉丝0
内容323