R語言生存分析
生存分析涉及預測特定事件發生的時間。 它也被稱爲失敗時間分析或分析死亡時間。 例如預測癌症患者的生存天數或預測機械系統出現故障的時間。
R中的軟件包:survival
用於進行生存分析。該包中含有Surv()
函數,它將輸入數據作爲R公式,並在所選變量中創建一個生存對象進行分析。然後使用survfit()
函數來創建分析圖。
安裝包
install.packages("survival")
語法
在R中創建生存分析的基本語法是 -
Surv(time,event)
survfit(formula)
以下是使用的參數的描述 -
- time - 是直到事件發生的後續時間。
- event - 表示預期事件發生的狀態。
- formula - 是預測變量之間的關係。
示例
考慮上面安裝的survival
包中存在的名爲「pbc」
的數據集。 它描述了肝臟原發性膽汁性肝硬化(PBC)患者的生存數據。在數據集中存在的許多列中,我們主要關注"time"
和"status"
字段。時間(time
)表示在患者接受肝臟移植或患者死亡的患者之間登記患者和事件之前的天數。
setwd("F:/worksp/R")
# 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()
函數應用於上述數據集,並創建一個將顯示趨勢圖。參考以下示例代碼 -
setwd("F:/worksp/R")
# 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
上圖中的趨勢有助於我們預測在一定天數結束時的生存概率。