R语言---生存分析---笔记整理

目录

1.什么是生存分析?

2.生存分析方法的种类?

3.生存分析使用的方法?

4.什么是生存曲线?

5.卡普兰-迈耶生存分析的计算方法?

6.代码实现


原文链接:R语言-Survival analysis(生存分析) | KeepNotes blog

1.什么是生存分析?

生存分析是研究生存时间的分布规律,以及生存时间和相关因素之间关系的一种统计分析方法。生存分析可用来预测在某一时间点上的事件是否会出现,它需要通过时间的维度来完成事件在某一时间发生概率的预测。

2.生存分析方法的种类?

(1)参数法:知道生存时间的分布模型,然后根据数据来估计模型参数,最后以分布模型来计算生存率。

(2)非参数法:不需要生存时间分布,根据样本统计量来估计生存率,常见方法Kaplan-Meier法(乘积极限法)、寿命法。

(3)半参数法:也不需要生存时间的分布,但最终是通过模型来评估影响生存率的因素,最为常见的是Cox回归模型。

ps:生存率,可以看作条件生存概率(conditional probability of survival)的累积,比如三年生存率则是第1-3年每年存活概率的乘积。

3.生存分析使用的方法?

(1)Kaplan-Meier plots to visualize survival curves(根据生存时间分布,估计生存率以及中位生存时间,以生存曲线方式展示,从而分析生存特征,一般用Kaplan-Meier法,还有寿命法)。

(2)Log-rank test to compare the survival curves of two or more groups(通过比较两组或者多组之间的的生存曲线,一般是生存率及其标准误,从而研究之间的差异,一般用log rank检验)。

(3)Cox proportional hazards regression to describe the effect of variables on survival(用Cox风险比例模型来分析变量对生存的影响,可以两个及两个以上的因素,很常用)。

一般做生存分析,可以先用KM(Kaplan-Meier)方法估计生存率,做生存曲线,之后可以根据分组检验一下多组间生存曲线是否有显著的差异,最后用Cox风险比例模型来研究下某个因素对生存的影响。

4.什么是生存曲线?

生存曲线(survival curve)是将每个时间点的生存率连接在一起的曲线,一般随访时间为X轴,生存率为Y轴;曲线平滑则说明高生存率,反之则低生存率;中位生存率(median survival time)越长,则说明预后较好。

5.卡普兰-迈耶生存分析的计算方法?

s(t_{i})=s(t_{i-1})\ast (1-\frac{d_{i}}{n_{i}})

(1)s(t_{i})  指的是在第  t_{i}  年还存活的概率。

(2)n_{i}  指的是在  t_{i}  年之前还存活的人数。

(3)d_{i}  指的是在事件发生的人数,即有多少人发生了事件。

(4)t_{0}=0,s(0)=1

6.代码实现

(1)基本信息获取

#packages
library(ggplot2)
library(ggpubr)
library(survival)
library(survminer)

#data
data("lung")
print(head(lung))

#a <- Surv(time,status),create a survival data object
#survfit(a,data),create KM curve
fit <- survfit(Surv(time, status) ~ sex, data=lung)
print(fit)
#plot(fit)

#获取整体的拟合效果
##显示出详细信息
fit_1 <- summary(fit)
print(fit_1)
##对详细信息进行统计的结果
fit_2 <- summary(fit)$table
print(fit_2)

#获取具体到每个时间点的拟合效果
res.sum <- surv_summary((fit))
print(head(res.sum))

(2)绘制KM曲线

#绘制拟合后的KM曲线
#主要使用Survminer包的ggsurvplot()函数
#代码在使用survfit()函数时用性别因子进行了分组,所以生存曲线有两组,即两条曲线。
#如果不想分组,将sex换成1即可
ggsurvplot(fit,
           pval = TRUE, conf.int = TRUE,
           risk.table = TRUE, # Add risk table
           risk.table.col = "strata", # Change risk table color by groups
           linetype = "strata", # Change line type by groups
           surv.median.line = "hv", # Specify median survival
           ggtheme = theme_bw(), # Change ggplot2 theme
           palette = c("#E7B800", "#2E9FDF")
)

效果图:

#在参数里加上fun = "event"则可绘制cumulative events图
ggsurvplot(fit,
           conf.int = TRUE,
           risk.table.col = "strata", # Change risk table color by groups
           ggtheme = theme_bw(), # Change ggplot2 theme
           palette = c("#E7B800", "#2E9FDF"),
           fun = "event")

效果图:

#如果想对不同组的生存率进行假设检验(Log-Rank test)的话,可以用survdiff()函数。
#Log-Rank test是无参数检验,近似于卡方检验,零假设是组间没有差异。
surv_diff <- survdiff(Surv(time, status) ~ sex, data = lung)
print(surv_diff)

结果展示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值