使用survminer绘制R中的危险功能?

时间:2019-06-11 09:17:50

标签: r survival

我们可以使用survminer来绘制生存函数或累积危害函数,但是我看不到使用它来绘制危害函数的方法。

例如,

library(survival)
library(tidyverse)
library(survminer)

data(lung)

# Run Kaplan-Meier on the data
mod.lung <- survfit(Surv(time, status) ~ 1, data = lung)

# Kaplan-Meier Survival Curve
ggsurvplot(mod.lung)

# Cumulative Hazard
ggsurvplot(mod.lung, fun = function(y) -log(y))

由于累积危害函数为H(t) = -log(S(t)),所以我只需要添加fun = function(y) -log(y)即可获得累积危害图。

危险函数是h(t) = -d/dt log(S(t)),所以我不确定如何使用它来获取survminer图中的危险函数。

危险函数的另一种定义是h(t) = f(t)/S(t),但是,我不确定如何使用它来获取图。

例如,我已经找到了使用ggplot2获取危险图的方法

survival.table1 <- broom::tidy(mod.lung) %>% filter(n.event > 0)
survival.table1 <- survival.table1 %>% mutate(hazard = n.event / (n.risk * (lead(time) - time)))
ggplot() +
  geom_step(data = survival.table1, aes(x = time, y = hazard)) +
  labs(x = "Time", y = "Hazard")

但是,我主要希望找到一种使用survminer软件包的方法,部分是为了保持一致性。

谢谢

2 个答案:

答案 0 :(得分:2)

在rms软件包中,可以将survplot函数与“ what”参数指定为“ hazard”一起使用,以绘制危害函数的时间。

https://rdrr.io/cran/rms/man/survplot.html

答案 1 :(得分:0)

晚了几年,但对于其他人来说。

如果估计值是由 survplot 函数创建的,则

psm 只能用于绘制风险图。 psm 库的 rms 函数适合参数生存模型的加速失效时间系列(默认为 Weibull 分布)。 survreg 包的文档中提供了其他可用的发行版:

<块引用>

这些包括“weibull”、“exponential”、“gaussian”、“logistic”、“lognormal”和“loglogistic”。否则,假定为符合 survreg.distributions

中描述的格式的用户定义列表
library(rms)
mod.lung <- psm(Surv(time, status) ~ 1, data = lung)
survplot(mod.lung, what="hazard")

对于非参数生存模型,muhaz 库可能更有用。此示例使用默认的“epanechnikov”边界核函数。您可能希望探索不同的带宽选项 - 请参阅 muhaz package documentation

library(muhaz)
mod.lung <- muhaz(lung$time, lung$status - 1) # status must be 1 for failure and 0 for censored
plot(mod.lung)

或者,要对风险应用 B 样条而不是核密度平滑,请查看 bshazard

library(bshazard)
mod.lung <- bshazard(Surv(time, status) ~ 1, data = lung)
plot(mod.lung)