R - 生存分析



生存分析涉及预测特定事件将发生的时间。它也被称为失效时间分析或死亡时间分析。例如,预测癌症患者可以存活的天数或预测机械系统将失效的时间。

名为 survival 的 R 包用于执行生存分析。此包包含函数 Surv(),该函数将输入数据作为 R 公式,并在所选变量中创建一个生存对象进行分析。然后我们使用函数 survfit() 创建用于分析的绘图。

安装软件包

install.packages("survival")

语法

在 R 中创建生存分析的基本语法是 -


Surv(time,event) survfit(formula)

以下是所用参数的描述 -

  • time 是事件发生之前的跟进时间。
  • event 表示预期事件的发生状态。
  • formula 是预测变量之间的关系。

例子

我们将考虑上面安装的生存包中存在的名为 “pbc” 的数据集。它描述了有关肝脏原发性胆汁性肝硬化 (PBC) 患者的生存数据点。在数据集中存在的许多列中,我们主要关注字段 “time” 和 “status”。时间表示从患者登记到患者接受肝移植或患者死亡之间事件发生之间的天数。


# 加载库。
library("survival")

# 打印前几行。
print(head(pbc))

当我们执行上述代码时,它会产生以下结果和图表 -

  id time status trt      age sex ascites hepato spiders edema bili chol
1  1  400      2   1 58.76523   f       1      1       1   1.0 14.5  261
2  2 4500      0   1 56.44627   f       0      1       1   0.0  1.1  302
3  3 1012      2   1 70.07255   m       0      0       0   0.5  1.4  176
4  4 1925      2   1 54.74059   f       0      1       1   0.5  1.8  244
5  5 1504      1   2 38.10541   f       0      1       1   0.0  3.4  279
6  6 2503      2   2 66.25873   f       0      1       0   0.0  0.8  248
  albumin copper alk.phos    ast trig platelet protime stage
1    2.60    156   1718.0 137.95  172      190    12.2     4
2    4.14     54   7394.8 113.52   88      221    10.6     3
3    3.48    210    516.0  96.10   55      151    12.0     4
4    2.54     64   6121.8  60.63   92      183    10.3     4
5    3.53    143    671.0 113.15   72      136    10.9     3
6    3.98     50    944.0  93.00   63       NA    11.0     3

根据上述数据,我们正在考虑分析的时间和状态。

应用 surv() 和 survfit() 函数

现在我们继续将 Surv() 函数应用于上述数据集,并创建一个显示趋势的图。


# 加载库。
library("survival")

# 创建生存对象。
survfit(Surv(pbc$time,pbc$status == 2)~1)

# 为图表文件命名。
png(file = "survival.png")

# 绘制图表。
plot(survfit(Surv(pbc$time,pbc$status == 2)~1))

# 保存文件。
dev.off()

当我们执行上述代码时,它会产生以下结果和图表 -

Call: survfit(formula = Surv(pbc$time, pbc$status == 2) ~ 1)

      n  events  median 0.95LCL 0.95UCL 
    418     161    3395    3090    3853 

使用 R 进行生存分析

上图中的趋势有助于我们预测一定天数结束时的生存概率。