R - 生存分析:初学者指南
你好,有抱负的数据科学家们!今天,我们将使用R语言开启一段激动人心的生存分析之旅。如果你之前从未编写过一行代码,也不用担心 - 我会在每一步中作为你的友好向导。让我们开始吧!
什么是生存分析?
在开始编码之前,我们先来了解一下生存分析是什么。想象你是一名医生,研究患者在某种治疗后能活多久。或者你可能是一名商业分析师,研究客户在取消订阅之前会持续多久。这时,生存分析就派上用场了!
生存分析帮助我们回答以下问题:
- 事件发生需要多久?
- 哪些因素影响事件发生的时间?
- 不同的群体在生存时间上如何比较?
现在,让我们动手写一些R代码!
安装和加载必要的包
首先,我们需要安装和加载所需的包。在R中,包就像包含特定任务有用函数的工具箱。
# 安装 'survival' 包
install.packages("survival")
# 加载包
library(survival)
如果你在运行这些命令时看到一些消息出现,不用担心。只要没有红色的错误消息,你就没问题!
加载和探索数据
在这个教程中,我们将使用一个名为 'lung' 的内置数据集,它来自生存分析包。这个数据集包含了晚期肺癌患者的信息。
# 加载 lung 数据集
data(lung)
# 查看前几行数据
head(lung)
# 获取数据集的摘要
summary(lung)
当你运行这些命令时,你会看到数据的快照。花点时间熟悉变量。我们将使用:
- 'time':生存时间(天数)
- 'status':审查状态(1=审查,2=死亡)
- 'age':患者年龄
- 'sex':患者性别(1=男性,2=女性)
创建生存对象
现在,让我们创建一个生存对象。这是一个特殊的R对象,它结合了生存时间和事件状态。
# 创建生存对象
surv_object <- Surv(time = lung$time, event = lung$status == 2)
# 打印前几个条目
head(surv_object)
你会看到一系列带有 '+' 符号的数字。'+' 表示审查观察(在研究结束时仍然存活的患者)。
Kaplain-Meier 生存曲线
生存分析中最常见的可视化之一是Kaplain-Meier曲线。它显示了随时间的生存概率。
# 拟合 Kaplain-Meier 曲线
km_fit <- survfit(surv_object ~ 1, data = lung)
# 绘制曲线
plot(km_fit, main = "Kaplain-Meier 生存曲线",
xlab = "时间(天)", ylab = "生存概率")
太棒了!你刚刚创建了你的第一个生存曲线。y轴显示生存概率,x轴显示天数。曲线每次事件(死亡)发生时都会下降。
比较组别:男性和女性
让我们比较男性和女性的生存曲线。
# 根据性别拟合 Kaplain-Meier 曲线
km_sex <- survfit(surv_object ~ sex, data = lung)
# 绘制曲线
plot(km_sex, col = c("blue", "red"), main = "按性别划分的生存曲线",
xlab = "时间(天)", ylab = "生存概率")
legend("topright", c("男性", "女性"), col = c("blue", "red"), lty = 1)
现在你有两条曲线:蓝色代表男性,红色代表女性。你能看到有什么区别吗?
Cox 比例风险模型
最后,让我们拟合一个Cox比例风险模型。这个模型帮助我们理解不同因素如何影响生存。
# 拟合 Cox 比例风险模型
cox_model <- coxph(surv_object ~ age + sex, data = lung)
# 打印摘要
summary(cox_model)
不要被输出结果吓到!以下是要注意的内容:
- 'coef' 列显示每个变量的效果。
- 'exp(coef)' 列更容易解释:值 > 1 表示风险增加,< 1 表示风险减少。
- 'Pr(>|z|)' 列显示 p 值。小值(< 0.05)表示具有统计学意义。
结论
恭喜你!你刚刚完成了在R中的第一次生存分析。我们涵盖了从创建生存对象到拟合复杂模型的很多内容。记住,熟能生巧。尝试着玩转代码,更改变量,看看会发生什么。
以下是我们使用的主要函数的总结:
函数 | 用途 |
---|---|
Surv() | 创建生存对象 |
survfit() | 拟合生存曲线 |
plot() | 可视化生存曲线 |
coxph() | 拟合 Cox 比例风险模型 |
继续探索,继续学习,最重要的是,玩转R语言和生存分析,享受其中的乐趣!
Credits: Image by storyset