如何绘制 cox 比例风险模型中连续协变量的代表值的生存曲线?具体来说,我想在 ggplot 中使用“survfit.cox”“survfit”对象来执行此操作。
这似乎是一个已经回答的问题,但我已经用“survfit”和“newdata”(以及许多其他搜索词)这两个词搜索了 SO 中的所有内容。这是迄今为止最接近回答我的问题的线程:Plot Kaplan-Meier for Cox regression
与该帖子的答案之一中提供的可重复示例保持一致:
url <- "http://socserv.mcmaster.ca/jfox/Books/Companion/data/Rossi.txt"
df <- read.table(url, header = TRUE)
library(dplyr)
library(ggplot2)
library(survival)
library(magrittr)
library(broom)
# Identifying the 25th and 75th percentiles for prio (continuous covariate)
summary(df$prio)
# Cox proportional hazards model with other covariates
# 'prio' is our explanatory variable of interest
m1 <- coxph(Surv(week, arrest) ~
fin + age + race + prio,
data = df)
# Creating new df to get survival predictions
# Want separate curves for the the different 'fin' and 'race'
# groups as well as the 25th and 75th percentile of prio
newdf <- df %$%
expand.grid(fin = levels(fin),
age = 30,
race = levels(race),
prio = c(1,4))
# Obtain the fitted survival curve, then tidy
# into a dataframe that can be used in ggplot
survcurv <- survfit(m1, newdata = newdf) %>%
tidy()
问题是,一旦我有了这个名为 的数据框survcurv
,我就无法判断哪个“估计”变量属于哪个模式,因为没有保留任何原始变量。例如,哪个“估计”变量代表 30 岁的拟合曲线,race = 'other',prio = '4',fin = 'no'?
在我见过的所有其他示例中,通常将 survfit 对象放入通用plot()
函数中并且不添加图例。我想使用 ggplot 并为每条预测曲线添加一个图例。
在我自己的数据集中,模型要复杂得多,曲线也比我在这里展示的要多得多,所以你可以想象看到 40 个不同的 'estimate.1'..'estimate.40' 变量很难理解什么是什么。