查看: 1900|回复: 0

临床预测模型:KM曲线

[复制链接]

88

主题

26

回帖

58

日志

版主

积分
882
QQ
发表于 2024-4-21 16:39:01 | 显示全部楼层 |阅读模式 来自 中国
本帖最后由 kexue 于 2024-4-21 16:43 编辑

生存分析是一种统计方法,用于预测事件(如死亡、疾病复发等)的发生时间。Kaplan-Meier曲线(KM曲线)是生存分析中常用的一种工具,用于估计在一段时间内的生存率.
一、KM曲线的主要步骤和特点包括
1)时间排序:首先将所有参与者按照发生事件的时间排序。
2)计算生存率:对于每一个独特的时间点,计算生存率。生存率是指从研究开始到特定时间点,尚未发生特定事件的参与者比例。
3)绘制曲线:以时间为横轴,生存率为纵轴绘制曲线。每当发生事件时,曲线向下跳跃,大小与该时间点发生事件的比例成正比。
4)处理删失数据:对于那些在研究结束前未发生事件的参与者(右侧删失),他们将被纳入到最后一个已知时间点的生存率计算中,但在此之后不再影响生存率的计算。
二、如何绘制KM曲线
1)基本代码
  1. library("survival")   
  2. library("survminer")   
  3. surv_fit <- survfit(Surv(time/365, status) ~ 1, data = lung)   # 计算生存曲线  这里用的lung数据集是R里自带的
  4. surv_fit_sex <- survfit(Surv(time/365, status) ~ sex, data = lung)  # 根据性别分层,计算生存曲线
  5. ggsurvplot(surv_fit_sex)    # 制作Kaplan_Meier曲线, 这里是最简单的KM曲线
复制代码

生成的图片如下:

851eb4b7270c30b9e44650d9de49a4d5.png

下面介绍的是如何让KM曲线更美观
2)
  1. ggsurvplot(surv_fit_sex,
  2.            pval = T,      #显示P值
  3.            conf.int = TRUE,    #显示置信区间
  4.            conf.int.style='ribbon',   #置信区间风格
  5.            linetype = "strata",    #根据性别分组
  6.            surv.median.line = "hv",  #显示中位生存期
  7.            ggtheme = theme_classic(), #设置ggplot2主题
  8.            legend.labs=c('F','M'),  #改变图例标签
  9.            legend.title='Sex',     #图例标题
  10.            legend = c(0.80,0.88),   #指定图例位置
  11.            palette = c("steelblue", "orange3"))  #指定KM曲线颜色
复制代码

3083eaee0c8db6a0d080230350f14b82.png

3)增加风险表格
  1. ggsurvplot(surv_fit_sex,
  2.            pval = TRUE,      #显示P值
  3.            conf.int = TRUE,    #显示置信区间
  4.            risk.table = TRUE,   #加风险表格
  5.            linetype = "strata",    #根据性别分组
  6.            legend.title = "Sex",   #图例标题
  7.            surv.median.line = "hv",   #显示中位生存期
  8.            ggtheme = theme_minimal(),   #设置图片主题
  9.            palette = c("steelblue", "orange3"))  #指定KM曲线颜色
复制代码

12a420021bdaa84bdcd89c2579ce801b.png
展示了在每个时间点上的风险人数(Number at risk)。这表示在该时间点还未发生事件(如死亡或失访)的受试者数量。
4)显示了每个时间点未发生事件而退出研究的受试者数量
  1. ggsurvplot(surv_fit_sex,
  2.            xlab='Time',     #设置X轴名
  3.            pval = T,   #显示P值
  4.            pval.size=5,   #P值字体大小
  5.            pval.coord=c(1,1),  #P值位置
  6.            pval.method =T,  #显示P值检验方法
  7.            pval.method.coord=c(2.5, 75),  #检验方法位置
  8.            conf.int = TRUE,  #显示置信区间
  9.            conf.int.style='ribbon',  #设置置信区间风格
  10.            linetype = "strata",  #根据性别设置曲线类型
  11.            ggtheme = theme_classic(),   #设置图片主题
  12.            legend.labs=c('F','M'),   #图例标签名字
  13.            legend.title='Sex',  #图例名字
  14.            legend = c(0.80,0.88),   #指定图例位置
  15.            fontsize=3.5,    #风险表字体大小
  16.            ncensor.plot=T,   #展示随访过程中不同时间点死亡和删失情况
  17.            risk.table = 'abs_pct' ,  #在下面添加风险表展示绝对数和百分比
  18.            risk.table.col='strata',  #根据数据分组为风险表添加颜色
  19.            tables.height=0.25,   #下面2个表高度占比
  20.            palette = c("steelblue", "orange3"),
  21.            fun='pct')  ##survival probability in percentage./生存率
  22. #fun='cumhaz',##plots the cumulative hazard function (f(y) = -log(y)),#累计风险
  23. #fun='event', #plots cumulative events (f(y) = 1-y), ##累计死亡人数
复制代码

8c3bedd04a2c1d1ed28456b5c61a9652.png

三、KM曲线的优点:
1)直观:KM曲线非常直观地展示了随时间变化的生存率。
2)不需要假设生存时间分布:KM方法不需要对数据的生存时间分布做出任何假设,使其适用于各种类型的生存时间数据。
3)处理删失数据:KM方法能够处理右侧删失数据,这在临床试验和生存分析中非常常见。
KM曲线在医学研究、生物统计学以及其他需要生存或事件时间分析的领域中非常有用。它们提供了一种简单而直观的方法来展示和比较不同组的生存情况。

来源:木天sy 木天琳neuron
回复 关闭延时

使用道具 举报

您需要登录后才可以回帖 登录 | 注册  

本版积分规则

快速回复 返回顶部 返回列表