关于数据挖掘:视频R语言生存分析原理与晚期肺癌患者分析案例数据分享附代码数据

51次阅读

共计 13325 个字符,预计需要花费 34 分钟才能阅读完成。

原文链接:http://tecdat.cn/?p=10278

最近咱们被客户要求撰写对于生存剖析的钻研报告,包含一些图形和统计输入。

生存剖析(也称为工程中的可靠性剖析)的指标是在协变量和事件工夫之间建立联系

生存剖析的名称源于临床钻研,其中预测死亡工夫,即生存,通常是次要指标。

生存剖析是一种回归问题(人们想要预测一个间断值),但有一个转折点。它与传统回归的不同之处在于,在生存剖析中,后果变量既有一个事件,也有一个与之相干的工夫值,局部训练数据只能被局部察看——它们是被删失的。本文用 R 语言生存剖析早期肺癌患者数据

一般最小二乘回归办法有余,因为事件产生的工夫通常不是正态分布的,并且模型无奈解决删失,但这在生存数据中很常见。

为什么要做生存剖析:右删失

在某些状况下,可能无奈察看到事件工夫:这通常称为 右删失。在以死亡为事件的临床试验中,当产生以下状况之一时,就会产生这种状况。1。当肯定数量的参与者死亡时,钻研完结。2。参与者退出钻研。3。钻研达到预约的完结工夫,并且一些参与者存活到完结。在每种状况下,幸存的参与者来到钻研后,咱们都不晓得他们会产生什么。而后咱们有一个问题:

当对于某些个体,咱们只察看到他们的事件工夫的上限时,咱们如何对教训散布进行建模或进行非负回归?

上图阐明了右删失。对于参与者 1,咱们看到他们何时死亡。参与者 2 退出了,咱们晓得他们始终活到那时,但不晓得起初产生了什么。对于参与者 3,咱们晓得他们活到了预约的钻研完结,但又不晓得之后产生了什么。

生存函数和危险函数

生存剖析中的两个要害工具是生存函数和危险函数。

生存函数:它是一个函数,用于给出咱们有趣味晓得的任何对象是否会在任何指定工夫之后存活的概率。在数学上它能够由以下公式示意 

其中 S(t) 是一个生存函数,其中 T 是一个间断随机变量,是一个事件的工夫。F(t) 是区间[0,∞) 上的累积散布函数。

咱们也能够用危险函数来写生存函数。假如事件尚未产生,危险率 λ(t) 是事件在工夫 t 产生的刹时概率的次要值。

那么关键问题是如何预计危险和 / 或生存函数。

Kaplan Meier 的非参数估计

在非参数生存剖析中,咱们要预计生存函数没有协变量,并且有删失。如果咱们没有删失,咱们能够从教训 CDF 开始. 这个等式简洁地示意:

有多少人随着工夫的推移而死亡? 那么生存函数就是:还有多少人还活着?

然而,咱们无法回答一些人被工夫 t 删失时提出的这个问题.

尽管咱们不肯定晓得有多少人在任意工夫 t 幸存下来,咱们晓得钻研中有多少人依然处于危险之中。咱们能够应用它来代替。将学习工夫划分区间, 其中每个 ti 是参与者的事件工夫或删失工夫。假如参与者只能在察看到的事件工夫生效。假如没有人在同一时间死去(没有关系),咱们能够查看每次有人死去的工夫。咱们说在那个特定工夫死亡的概率是,并说在任何其余工夫死亡的概率是 0.

在温和的假如下,包含参与者具备独立且雷同散布的事件工夫,并且删失和事件工夫是独立的,这给出了一个统一的估计量。上图给出了一个简略案例的 Kaplan Meier 预计示例。

生存剖析用于各种畛域

例如:

  • 用于患者生存工夫剖析的癌症钻研,
  • “事件历史剖析”的社会学,
  • 在工程中用于“故障工夫剖析”。

在癌症钻研中,典型的钻研问题如下:

  • 某些临床特色对患者生存有何影响
  • 一个人能活 3 年的概率是多少?
  • 患者组之间的生存率是否存在差别?

 

 

第 1 局部:生存剖析简介 

本演示文稿将介绍生存剖析,参考:

Clark, T., Bradburn, M., Love, S., & Altman, D. (2003). Survival analysis part I: Basic concepts and first analyses. 232-238. ISSN 0007-0920.

咱们明天将应用的一些软件包包含:

  • lubridate
library(survival)

什么是生存数据?

事件工夫数据由不同的开始工夫和完结工夫组成。

癌症的例子

  • 从手术到死亡的工夫
  • 从医治开始到停顿的工夫
  • 从响应到复发的工夫

其余畛域的例子

事件产生工夫数据在许多畛域都很常见,包含但不限于

  • 从艾滋病毒感化到艾滋病倒退的工夫
  • 心脏病发生的工夫
  • 药物滥用产生的工夫
  • 机器故障工夫

生存剖析别名

因为生存剖析在许多其余畛域很常见,因而也有其余名称

  • 可靠性剖析
  • 持续时间剖析
  • 事件历史剖析
  • 事件产生工夫剖析

肺数据集

数据蕴含来自北中部癌症医治组的早期肺癌患者。明天咱们将用来演示办法的一些变量包含

  • 工夫:以天为单位的生存工夫
  • 状态:删失状态 1 = 删失,2 = 生效
  • 性别:男 = 1 女 = 2

删失类型

某个主题可能因为以下起因而被删失:

  • 后续损失
  • 退出钻研
  • 固定学习期完结前没有流动

具体来说,这些是删失的示例。

调配随访工夫

  • 受删失的主题仍会提供信息,因而必须适当地蕴含在剖析中
  • 随访工夫的散布存在偏差,在承受查看的患者和有事件的患者之间可能有所不同

生存数据的组成部分

对于主题 ii:

  • 流动工夫 Ti
  • 删失工夫 Ci
  • 事件指标 δi:

<!—->

  • 1,如果察看到的事件(即  Ti≤CiTi≤Ci)
  • 如果查看,则为 0(即  Ti>CiTi>Ci)
  1. 观测工夫 Yi=min(Ti,Ci)Yi=min(Ti,Ci)

lung数据中提供了察看工夫和事件批示

  • 工夫:以天为单位的生存工夫(YiYi)
  • 状态:删失状态 1 = 删失,2 = 死亡(δiδi)

在 R 中解决日期

数据通常带有开始日期和完结日期,而不是事后计算的生存工夫。第一步是确保将这些格局设置为 R 中的日期。

让咱们创立一个小的示例数据集,其中 sx_date 蕴含手术日期和 last_fup_date 上次随访日期的变量。

date_ex <- 
  tibble(sx_date = c("2007-06-22", "2004-02-13", "2010-10-27"), 
    last_fup_date = c("2017-04-15", "2018-07-04", "2016-10-31")
    )

date_ex
## # A tibble: 3 x 2
##   sx_date    last_fup_date
##   <chr>      <chr>        
## 1 2007-06-22 2017-04-15   
## 2 2004-02-13 2018-07-04   
## 3 2010-10-27 2016-10-31

咱们看到它们都是字符变量,通常都是这种状况,然而咱们须要将它们格式化为日期。

格式化日期 - 基数 R

date_ex %>% 
  mutate(sx_date = as.Date(sx_date, format = "%Y-%m-%d"), 
    last_fup_date = as.Date(last_fup_date, format = "%Y-%m-%d") 
    )
## # A tibble: 3 x 2
##   sx_date    last_fup_date
##   <date>     <date>       
## 1 2007-06-22 2017-04-15   
## 2 2004-02-13 2018-07-04   
## 3 2010-10-27 2016-10-31
  • 请留神,R格局必须蕴含分隔符和符号。例如,如果您的日期格局为 m / d / Y,则须要format = "%m/%d/%Y"

格式化日期 -lubridate 程序包

咱们还能够应用该 lubridate 包来格式化日期。在这种状况下,请应用 ymd 性能

date_ex %>% 
  mutate(sx_date = ymd(sx_date), 
    last_fup_date = ymd(last_fup_date)
    )
## # A tibble: 3 x 2
##   sx_date    last_fup_date
##   <date>     <date>       
## 1 2007-06-22 2017-04-15   
## 2 2004-02-13 2018-07-04   
## 3 2010-10-27 2016-10-31
  • 请留神,与根本 R 选项不同,不须要指定分隔符

计算生存工夫 

当初日期已格式化,咱们须要以某些单位(通常是几个月或几年)计算开始工夫和完结工夫之间的差。在 base 中 R,用于difftime 计算两个日期之间的天数,而后应用将其转换为数字值 as.numeric。而后将除以365.25 年的均匀天数转换为年。

date_ex %>% 
  mutate(
    os_yrs = 
      as.numeric(
        difftime(last_fup_date, 
                 sx_date, 
                 units = "days")) / 365.25
    )
## # A tibble: 3 x 3
##   sx_date    last_fup_date os_yrs
##   <date>     <date>         <dbl>
## 1 2007-06-22 2017-04-15      9.82
## 2 2004-02-13 2018-07-04     14.4 
## 3 2010-10-27 2016-10-31      6.01

计算生存工夫 

操作员能够 %--% 指定一个工夫距离,而后应用将该工夫距离转换为通过的秒数as.duration,最初除以dyears(1),将其转换为年数,从而得出一年中的秒数。

## # A tibble: 3 x 3
##   sx_date    last_fup_date os_yrs
##   <date>     <date>         <dbl>
## 1 2007-06-22 2017-04-15      9.82
## 2 2004-02-13 2018-07-04     14.4 
## 3 2010-10-27 2016-10-31      6.02

事件标标

对于生存数据的组成部分,我提到了事件指示器:

事件指标 δiδi:

  • 1,如果察看到的事件(即  Ti≤CiTi≤Ci)
  • 如果查看,则为 0(即  Ti>CiTi>Ci)

lung 数据中,咱们有:

  • 状态:删失状态 1 = 删失,2 = 生效

生存函数

受试者能够存活超过指定工夫的概率

S(t)=Pr(T>t)=1−F(t)S(t)=Pr(T>t)=1−F(t)

S(t)S(t):生存函数 F(t)=Pr(T≤t)F(t)=Pr(T≤t):累积散布函数

实践上,生存函数是平滑的;在实践中,咱们以离散的时间尺度察看事件。

生存概率

  • 生存概率在某个工夫,S(t)S(t),是存活超过该工夫,思考到个体已存活刚刚在此之前,工夫的条件概率。
  • 能够预计为过后活着但没有损失的随访患者人数除以过后的活着患者人数
  • 生存概率的 Kaplan-Meier 预计是这些条件概率的乘积
  • 在工夫 0,生存概率为 1,即  S(t0)=1S(t0)=1

创立生存对象

Kaplan-Meier 办法是预计生存工夫和概率的最罕用办法。这是一种非参数办法,可产生阶跃函数,每次事件产生时,阶跃降落。

  • 创立一个生存对象。对于每个主题,将有一个条目作为生存工夫,+如果主题是通过删失的,则前面跟一个。让咱们看一下前 10 个察看值:
##  [1]  306   455  1010+  210   883  1022+  310   361   218   166

用 Kaplan-Meier 办法估算生存曲线

  • survfit 函数依据公式创立生存曲线。让咱们为整个同类群组生成总体生存曲线,将其调配给 object f1,而后查看 names 该对象的:
names(f1)
##  [1] "n"          "time"       "n.risk"     "n.event"    "n.censor"  
##  [6] "surv"       "std.err"    "cumhaz"     "std.chaz"   "start.time"
## [11] "type"       "logse"      "conf.int"   "conf.type"  "lower"     
## [16] "upper"      "call"

survfit 对象将用于创立生存曲线的一些要害组件包含:

  • time,其中蕴含每个工夫距离的终点和起点
  • surv,其中蕴含每个对应的生存概率 time

Kaplan-Meier 图 

当初,绘制对象 取得 Kaplan-Meier 图。

plot(survfit(Surv(time, status) ~ 1, data = lung), 
    

  • 基数 R 中的默认图显示了具备相干置信区间(虚线)的阶跃函数(实线)
  • 水平线代表距离的生存工夫
  • 工夫距离由事件终止
  • 垂直线的高度显示累积概率的变动
  • 带有刻度线的通过删失的察看后果会缩小距离之间的累积生存期。

Kaplan-Meier 图 

建设在上ggplot2,并可用于创立 Kaplan-Meier 图。


点击题目查阅往期内容

[](http://mp.weixin.qq.com/s?__biz=MzA4MDUzOTIxNA==&mid=26538304…)R 语言生存剖析数据分析可视化案例

左右滑动查看更多

01

02

03

04

  • 默认图  带相干相信带(暗影区域)的阶跃函数(实线)。
  • 默认状况下,显示了被查看患者的刻度线,在此示例中,该刻度线自身有些含糊,能够应用选项将其勾销 censor = FALSE

预计 xx 年生存

生存剖析中常常须要关注的一个数量是生存超过肯定数量(xx)年的概率。

例如,要估算生存到 11 年的可能性

## Call: survfit(formula = Surv(time, status) ~ 1, data = lung)
## 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##   365     65     121    0.409  0.0358        0.345        0.486

咱们发现本钻研中 11 年生存的机率是 41%。

同时显示 95%置信区间的相干上上限。

xx 年生存率和生存曲线

11 年存活率概率为在 y 轴上的点对应于 11 一年 x 轴的生存曲线。

Xx 年生存率经常被谬误预计

如果 应用“天真”的预计会怎么?

228 名患者中的 121 名到 1 年时死亡,因而:

- 当 疏忽 42 名患者在 1 年之前受到查看的事实时,会谬误预计 1 个 1 个年生存率。

  • 正确的预计生存概率 - 年为 41%。

疏忽删失对 xx 年生存的影响

  • 设想两个钻研,每个钻研 228 个主题。每个钻研中有 165 人死亡。一个没有查看(红色线),63 个病人被另一个(蓝色线)查看
  • 疏忽删失会导致总体生存概率被高估,因为被删失的受试者仅在局部随访工夫内提供信息,而后落入危险范畴之外,从而升高了生存的累积概率

预计中位生存工夫

生存剖析中常常须要关注的另一个数量是均匀生存工夫,咱们应用中位数对其进行量化。预计生存工夫不会呈正态分布,因而平均值不是适当的总结。

## Call: survfit(formula = Surv(time, status) ~ 1, data = lung)
## 
##       n  events  median 0.95LCL 0.95UCL 
##     228     165     310     285     363

咱们看到中位生存工夫为 310 天。还会显示 95%置信区间的下限和上限。

中位生存工夫和生存曲线

中位生存工夫是生存概率为 0.50 

中位生存率经常被谬误预计

总结 165 例死亡患者的中位生存工夫

##   median_surv
## 1         226
  • 当 疏忽被查看患者也有助于随访的事实时,会得出谬误的预计中值生存工夫 226 天。
  • 正确的中位生存工夫预计是 310 天。

疏忽删失对中位数生存率的影响

  • 疏忽删失会造成人为升高的生存曲线,因为排除了受删失患者奉献的随访工夫(紫色线)
  • 数据的实在生存曲线以 lung 蓝色显示,以进行比拟

比拟各组之间的生存工夫

  • 咱们能够应用对数秩测验进行组间重要性测验
  • 对数秩测验在整个随访工夫内均匀衡量察看后果,是比拟组间生存工夫的最罕用办法
  • 依据钻研问题,有些版本可能会更器重晚期或前期的随访,可能更适合

咱们应用 函数取得对数秩 p 值。例如,咱们能够依据 lung 数据中的性别测试是否存在生存工夫差别

## Call:
## 
##         N Observed Expected (O-E)^2/E (O-E)^2/V
## sex=1 138      112     91.6      4.55      10.3
## sex=2  90       53     73.4      5.68      10.3
## 
##  Chisq= 10.3  on 1 degrees of freedom, p= 0.001

从 survdiff 对象中提取信息

从 后果中提取 p 值

1 - pchisq(sd$chisq, length(sd$n) - 1)
## [1] 0.001311165

返回格式化的 p 值

## [1] 0.001

Cox 回归模型

咱们可能想量化单个变量的效应大小,或者将多个变量包含在回归模型中以阐明多个变量的效应。

Cox 回归模型是半参数模型,可用于拟合具备生存后果的单变量和多变量回归模型。

h(t)h(t):危险或事件产生的刹时速率 h0(t)h0(t):根本基准危险

该模型的一些要害假如:

  • 非信息删失
  • 比例危险

_留神_:也能够应用用于生存后果的参数回归模型,然而本培训将不波及这些模型。

咱们能够应用 coxph 函数拟合生存数据的回归模型,该函数 Surv 在左侧应用一个对象,而在右侧具备用于回归公式的规范语法R

## Call:
## 
##        coef exp(coef) se(coef)      z       p
## sex -0.5310    0.5880   0.1672 -3.176 0.00149
## 
## Likelihood ratio test=10.63  on 1 df, p=0.001111
## n= 228, number of events= 165

格式化 Cox 回归后果

咱们能够看到输入的整洁版本broom

或应用

危险比

  • 来自 Cox 回归模型的关注数量是危险比(HR)。HR 示意在任何特定工夫点两组之间的危险比率。
  • HR 被解释为感兴趣事件中那些仍处于事件危险中的事件的刹时发生率。
  • 如果您有一个回归参数 ββ(来自 estimate 咱们的列coxph),则 HR = 经验值(β)经验值⁡(β)。
  • HR <1 示意死亡危险升高,而 HR> 1 示意死亡危险减少。
  • 因而,咱们的 HR = 0.59 意味着在任何给定工夫,女性死亡的人数大概是男性的 0.6 倍。

第 2 局部:地标剖析和工夫相干协变量

在第 1 局部中,咱们介绍了应用对数秩测验和 Cox 回归来测验感兴趣的协变量与生存后果之间的关联。

示例:肿瘤反馈

示例:从医治开始就测量总生存期,关注的是对医治的齐全反馈与生存之间的关联。

  • Anderson 等人(JCO,1983)形容了在这种状况下,为什么传统办法(如对数秩测验或 Cox 回归)偏差于响应者,并提出了划时代的办法。
  • 界标办法中的零假如是,从界标生存的过程不依赖于界标的响应状态。

Anderson, J., Cain, K., & Gelber, R. (1983). Analysis of survival by tumor response. Journal of Clinical Oncology : Official Journal of the American Society of Clinical Oncology, 1(11), 710-9.

其余例子

癌症钻研中可能尚未关注的其余一些可能的协变量包含:

  • 移植失败
  • 移植物抗宿主病
  • 第二次切除
  • 辅助医治
  • 合规
  • 不良事件

示例数据 

137 例骨髓移植患者的数据。变量包含:

  • T1 死亡工夫或最初一次随访工夫(天)
  • delta1死亡指标;1 死 0 活
  • TA 急性移植物抗宿主病的工夫(以天为单位)
  • deltaA急性移植物抗宿主病指标;1- 倒退为急性移植物抗宿主病,0- 从未倒退为急性移植物抗宿主病

让咱们加载数据以供整个示例应用

地标法

  1. 抉择基线之后的固定工夫作为界标工夫。_留神_:应在检查数据之前依据临床信息进行操作
  2. 那些人群的子集至多跟踪到里程碑工夫。_留神_:请务必在地标工夫之前报告因为关注或删失事件而排除的号码。
  3. 计算具备里程碑意义的工夫,并利用传统的对数秩测验或 Cox 回归

BMT 数据感兴趣的是急性移植物抗宿主病(aGVHD)和存活之间的关联。然而 aGVHD 是在移植后进行评估的,这是咱们的基线,也就是后续随访的开始工夫。

步骤 1 抉择地标工夫

通常,aGVHD 产生在移植后的前 90 天内,因而咱们应用 90 天的界标。

人们对急性移植物抗宿主病(aGVHD)与生存之间的关系感兴趣。然而 aGVHD 是在移植后进行评估的,这是咱们的基线,也就是后续随访的开始工夫。

第 2 步:至多跟踪到里程碑工夫之前的人群的子集

这将咱们的样本量从 137 缩小到 122。

  • 所有 15 位被排除的患者均在 90 天里程碑之前死亡

人们对急性移植物抗宿主病(aGVHD)与生存之间的关系感兴趣。然而 aGVHD 是在移植后进行评估的,这是咱们的基线,也就是后续随访的开始工夫。

步骤 3 根据地标计算随访工夫,并利用传统办法。

应用 BMT 数据的 Cox 回归界标示例

在 Cox 回归中,能够应用中的 subset 选项 coxph 来排除那些在标志性工夫内没有被随访的患者

工夫相干协变量

界标剖析的代替办法是合并工夫相干的协变量。这可能更适宜

  • 协变量的值随工夫变动
  • 没有显著的里程碑工夫

工夫相干协变量数据设置

对工夫相干协变量的剖析 R 须要建设非凡的数据集。

BMT数据中没有 ID 变量,这是创立非凡数据集所必须的,因而请创立一个名为的变量my_id

tmerge 函数与 event 和函数一起应用 tdc 可创立非凡数据集。

  • tmerge 为每个患者的不同协变量值创立一个具备多个工夫距离的长数据集
  • event 创立新的事件指示器,以与新创建的工夫距离统一
  • tdc 创立与工夫相干的协变量指标,以与新创建的工夫距离统一

工夫相干协变量 - 单例患者

要理解其作用,让咱们看一下前 5 名患者的数据。

 ##   my_id   T1 delta1   TA deltaA
## 1     1 2081      0   67      1
## 2     2 1602      0 1602      0
## 3     3 1496      0 1496      0
## 4     4 1462      0   70      1
## 5     5 1433      0 1433      0

这些雷同患者的新数据集

##   my_id   T1 delta1 id tstart tstop death agvhd
## 1     1 2081      0  1      0    67     0     0
## 2     1 2081      0  1     67  2081     0     1
## 3     2 1602      0  2      0  1602     0     0
## 4     3 1496      0  3      0  1496     0     0
## 5     4 1462      0  4      0    70     0     0
## 6     4 1462      0  4     70  1462     0     1
## 7     5 1433      0  5      0  1433     0     0

工夫相干协变量 -Cox 回归

当初,咱们能够剖析这个工夫依赖性协照常应用 Cox 回归与coxph 

摘要

咱们发现,应用标志性剖析或工夫依赖性协变量,急性移植物抗宿主病与死亡无显着相关性。

通常,人们会心愿应用地标剖析对单个协变量进行可视化,应用带有工夫相干协变量的 Cox 回归进行单变量和多变量建模。

第 3 局部:竞争危险

什么是竞争危险?

当对象在事件产生工夫设置中产生多个可能的事件时

例子:

  • 复发
  • 因疾病死亡
  • 因其余起因死亡
  • 医治反馈

在任何给定的钻研中,所有这些(或其中一些 以及其余)可能都是可能的事件。

所以有什么问题?

事件工夫之间未察看到的依赖性是导致须要非凡思考的根本问题。

例如,能够设想复发的患者更有可能死亡,因而复发工夫和死亡工夫将不是独立事件。

竞争危险的背景

存在多种潜在后果时的两种分析方法:

  1. 给定事件的特定于起因的危险:这示意未因其余事件而失败的事件中事件的每单位工夫的发生率
  2. 给定事件的累积发生率:这示意事件每单位工夫的发生率以及竞争事件的影响

这些办法中的每一种都可能仅说明数据的一个重要方面,而有可能使其余方面难以了解,因而所选的办法应取决于感兴趣的问题。

 黑色素瘤数据示例

它蕴含变量:

  • time 生存工夫以天为单位,可能通过删失。
  • status 1 例死于黑色素瘤,2 例存活,3 例因其余起因死亡。
  • sex 1 = 男性,0 = 女性。
  • age 年纪。
  • year 操作。
  • thickness 肿瘤厚度(毫米)。
  • ulcer 1 = 存在,0 = 不存在。

黑色素瘤数据的累积发生率

在竞争危险的背景下估算累积发生率。

## Estimates and Variances:
## $est
##           1000       2000       3000      4000      5000
## 1 1 0.12745714 0.23013963 0.30962017 0.3387175 0.3387175
## 1 3 0.03426709 0.05045644 0.05811143 0.1059471 0.1059471
## 
## $var
##             1000         2000         3000        4000        5000
## 1 1 0.0005481186 0.0009001172 0.0013789328 0.001690760 0.001690760
## 1 3 0.0001628354 0.0002451319 0.0002998642 0.001040155 0.001040155

绘制累积发生率 - 基数 R

生成 默认值的根本图。

plot(ci_fit)

绘制累积发生率 

比拟组之间的累积发生率

用于组间测试。

例如,Melanoma依据 ulcer 溃疡的存在与否比拟后果。测试后果能够在中找到Tests

ci_ulcer[["Tests"]]
##        stat           pv df
## 1 26.120719 3.207240e-07  1
## 3  0.158662 6.903913e-01  1

按组绘制累积发生率 

按组绘制累积发生率 - 手动

_请留神,_我集体发现该 ggcompetingrisks 性能短少自定义性能,尤其是与相比 ggsurvplot。我通常会本人做图,首先创立cuminc 拟合后果的整洁数据集,而后再绘制后果。无关底层代码的详细信息,请参见此演示文稿的

绘制单个事件类型 

通常,只有一种类型的事件会引起人们的趣味,只管咱们仍要思考竞争事件。在那种状况下,感兴趣的事件能够独自绘制。同样,我首先通过创立 cuminc 拟合后果的整洁数据集,而后绘制后果来手动执行此操作。无关底层代码的详细信息,请参见此演示文稿的源代码。

在危险表中增加数字

您可能想将危险表的数量增加到累积发生率图中,而据我所知,没有简略的办法能够做到这一点。请参阅此演示文稿的源代码中的一个示例

竞争危险回归

两种办法:

  1. 特定起因危险
  • 以后没有事件的受试者中给定事件类型的刹时发生率
  • 应用 Cox 回归估算
  1. Subdistribution 子散布危险
  • 给定类型事件在没有经验过此类事件的受试者中的刹时发生率
  • 应用 Fine-Gray 回归估算

黑色素瘤数据中的竞争危险回归 - 子散布危险法 Subdistribution

假如咱们有趣味钻研年龄和性别对黑色素瘤死亡的影响,而其余起因的死亡则是竞争事件。

  • crr 须要指定协变量作为矩阵
  • 如果 关注多个事件,则能够应用 failcode 选项申请其余事件的后果,默认状况下会返回failcode = 1
shr_fit
## convergence:  TRUE 
## coefficients:
##     sex     age 
## 0.58840 0.01259 
## standard errors:
## [1] 0.271800 0.009301
## two-sided p-values:
##  sex  age 
## 0.03 0.18

在上一个示例中,sex和和 age 均被编码为数字变量。如果存在字符变量,则必须应用model.matrix

格式化来自 crr 的后果

或以后 crr 不反对的输入。

黑色素瘤数据中的竞争危险回归 - 因果剖析

删失所有没有引起关注的对象,在这种状况下是因为黑色素瘤死亡,并且照常应用coxph。因而,当初对因其余起因死亡的患者进行针对特定起因的危险评估办法以应答竞争危险。

第 4 局部:高级主题

 涵盖的内容

  • 生存剖析的基础知识,包含 Kaplan-Meier 生存函数和 Cox 回归
  • 地标剖析和工夫相干协变量
  • 竞争危险剖析的累积发生率和回归

还有什么?

可能会呈现很多系统的货色:

  1. 评估比例危险假如
  2. 生存率绘制平滑的生存图 XX
  3. 有条件的生存

评估比例危险

Cox 比例危险回归模型的一个假如是,在整个随访过程中,危险在每个工夫点都是成比例的。咱们如何检查数据是否合乎此假如?

应用 cox.zph 生存包中的性能。后果有两点:

  1. 每个协变量的成果是否随工夫变动的假设检验,以及一次所有协变量的全局测验。
  • 这是通过证实协变量和 log(time)之间的交互作用来实现的
  • 显着的 p 值示意违反了比例危险假如
  1. Schoenfeld 残差图
  • 偏离零坡度线的证据表明违反了比例危险假如
print(cz)
##            rho chisq     p
## sex     0.1236 2.452 0.117
## age    -0.0275 0.129 0.719
## GLOBAL      NA 2.651 0.266
``````
plot(cz)

平滑的生存图 - 生存分位数

有时可能想依据连续变量来可视化生存预计。求 生存数据的分位数。默认分位数是 p = 0.5 中位生存期。

  • x 代表事件
  • o 代表删失
  • 该线是依据年龄的均匀存活率的平滑预计

条件生存

有时,在曾经存活了一段时间的患者中产生存活率估计值很有意义。

Zabor, E., Gonen, M., Chapman, P., & Panageas, K. (2013). Dynamic prognostication using conditional survival estimates. Cancer, 119(20), 3589-3592.

条件生存预计

让咱们将生存期定为 6 个月

map_df(
  prob_times, 
  ~conditional_surv_est(
    basekm = fit1, 
    t1 = 182.625, 
    t2 = .x) 
  ) %>% 
  mutate(months = round(prob_times / 30.4)) %>% 
  select(months, everything()) %>% 
  kable()

条件生存图

咱们还能够依据不同的生存工夫长度可视化条件生存数据。

所得出的曲线在咱们每次进行条件调整时都有一条生存曲线。在这种状况下,第一条线是总体生存曲线,因为它是依据工夫 0 进行调节的。

数据获取

在上面公众号后盾回复“肺癌 数据”,可获取残缺数据。


本文摘选 R 语言中的生存剖析 Survival analysis 早期肺癌患者 ,点击“ 浏览原文”获取全文残缺材料。


点击题目查阅往期内容

R 语言应用限度均匀生存工夫 RMST 比拟两条生存曲线剖析肝硬化患者
生存分析模型的工夫依赖性 ROC 曲线可视化 R 语言生存剖析: 时变竞争危险模型剖析淋巴瘤患者
R 语言生存剖析可视化剖析
R 语言中生存分析模型的工夫依赖性 ROC 曲线可视化
R 语言生存剖析数据分析可视化案例
R 语言 ggsurvplot 绘制生存曲线报错 : object of type‘symbol‘is not subsettab
R 语言如何在生存剖析与 Cox 回归中计算 IDI,NRI 指标
R 语言绘制生存曲线预计 | 生存剖析 | 如何 R 作生存曲线图
R 语言解释生存剖析中危险率和危险率的变动
R 语言中的生存剖析 Survival analysis 早期肺癌患者 4 例

正文完
 0