在 R 版本 3.1.0 中使用 ggsurv 函数

Using ggsurv function in R version 3.1.0

我正在尝试在 R 中为数周内因接触真菌病而死亡的人创建一个生存图。我有死亡周(连续),他们是否还活着(TRUE/FALSE),以及饮食(high/low)和性别(male/female)的分类变量。我有 运行 一个 coxph 模型:

surv1 <- coxph(Surv(week_died,alive) ~ exposed + diet + sex,
        data=surv)

我想绘制一条生存曲线,高饮食和低饮食的暴露男性的单独线条,以及高饮食和低饮食的女性的单独线条(在同一图上产生 4 条单独的生存曲线)。如果我使用它,那么我只会得到一条曲线。

plot(survfit(surv1), ylim=c(), xlab="Weeks") 

我也曾尝试使用 Edwin Thoen (http://www.r-statistics.com/2013/07/creating-good-looking-survival-curves-the-ggsurv-function/) 创建的 ggsurv 函数,但一直收到 "invalid line type" 的错误。我试图找出可能导致这种情况的原因,并认为这将是最后一个 ifelse 语句 - 但我不确定。

pl <- if(strata == 1) {ggsurv.s(s, CI , plot.cens, surv.col ,
                              cens.col, lty.est, lty.ci,
                              cens.shape, back.white, xlab,
                              ylab, main)
} else {ggsurv.m(s, CI, plot.cens, surv.col ,
               cens.col, lty.est, lty.ci,
               cens.shape, back.white, xlab,
               ylab, main)}

有没有人知道是什么导致 error/how 修复它,或者我是否完全试图做错误的事情来绘制这些曲线。

非常感谢!

survfit 在没有任何其他规范的 coxph 模型上给出了一个案例的生存曲线,该案例的协变量预测变量是创建模型时所用的人口的平均值。来自 survfit.coxph

的帮助

Serious thought has been given to removing the default value for newdata, which is to use a single "psuedo" subject with covariate values equal to the means of the data set, since the resulting curve(s) almost never make sense. ... Two particularly egregious examples are factor variables and interactions. Suppose one were studying interspecies transmission of a virus, and the data set has a factor variable with levels ("pig", "chicken") and about equal numbers of observations for each. The “mean” covariate level will be 1/2 – is this a flying pig? ... Users are strongly advised to use the newdata argument.

所以在你计算完 surv1,

sf <- survfit(surv1,
              newdata = expand.grid(diet = unique(surv$diet),
                                    sex = unique(surv$sex)))

plot(sf)

sf 也应该作为 ggsurv 的参数,虽然我没有测试它。