R 语言 生存分析

  • 生存分析

    生存分析用于预测特定事件将要发生的时间。这也称为故障时间分析或死亡时间分析。例如,预测癌症患者存活的天数或预测机械系统将要发生故障的时间。名为生存的R包用于进行生存分析。该程序包包含函数Surv(),该函数将输入数据作为R公式,并在所选变量之间创建生存对象以进行分析。然后,我们使用函数survfit()来创建分析图。
  • 安装套件

    
    install.packages("survival")
    
    在R中创建生存分析的基本语法是-
    
    Surv(time,event)
    survfit(formula)
    
    以下是所用参数的描述-
    • time 是事件发生之前的跟进时间。
    • event 指示预期事件的发生状态。
    • formula 是预测变量之间的关系。
    我们将考虑以上安装的生存软件包中存在的名为“pbc”的数据集。它描述了有关肝原发性胆汁性肝硬化(PBC)患者的生存数据点。在数据集中存在的许多列中,我们主要关注“time”和“status”字段。时间表示从患者登记到患者接受肝移植或患者死亡之间的事件发生之间的天数。
    
    # Load the library.
    library("survival")
    
    # Print first few rows.
    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()函数应用于上述数据集,并创建一个显示趋势的图。
    
    # Load the library.
    library("survival")
    
    # Create the survival object. 
    survfit(Surv(pbc$time,pbc$status == 2)~1)
    
    # Give the chart file a name.
    png(file = "survival.png")
    
    # Plot the graph. 
    plot(survfit(Surv(pbc$time,pbc$status == 2)~1))
    
    # Save the file.
    dev.off()
    
    当我们执行上述代码时,它会产生以下结果和图表-
    
    Call: survfit(formula = Surv(pbc$time, pbc$status == 2) ~ 1)
    
          n  events  median 0.95LCL 0.95UCL 
        418     161    3395    3090    3853 
    
    survival
    上图中的趋势有助于我们预测一定天数结束时的生存概率。