- R 菜鸟教程
- R - 教程
- R - 概述
- R - 环境设置
- R - 基本语法
- R - 数据类型
- R - 变量
- R - 运算符
- R - 判断语句
- R - Loop (循环)
- R - 函数
- R - 字符串
- R - 矢量
- R - 列表
- R - 矩阵
- R - 数组
- R - 因子
- R - 数据帧
- R - 包(Packages)
- R - 数据重塑
- R 数据接口
- R - CSV 文件
- R - Excel 文件
- R - 二进制文件
- R - XML 文件
- R - JSON 文件
- R - Web 数据
- R - 数据库
- R 图表和图形
- R - 饼图
- R - 条形图
- R - 箱线图
- R - 直方图
- R - 折线图
- R - 散点图
- R 统计示例
- R - 平均值、中位数和众数
- R - 线性回归
- R - 多元回归
- R - Logistic 回归
- R - 正态分布
- R - 二项分布
- R - 泊松回归
- R - 协方差分析
- R - 时间序列分析
- R - 非线性最小二乘法
- R - 决策树
- R - 随机森林
- R - 生存分析
- R - 卡方检验
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
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
n events median 0.95LCL 0.95UCL
418 161 3395 3090 3853
上图中的趋势有助于我们预测一定天数结束时的生存概率。