我们可以使用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包的方法,部分原因是为了保持一些一致性。
谢谢
发布于 2019-10-25 10:49:19
在rms包中,您可以使用survplot函数,并将"what“参数指定为" hazard”,以绘制危险函数与时间的关系。
发布于 2021-05-19 10:27:43
晚了几年,但这是给其他人的。
如果估计值是由psm函数创建的,则survplot只能用于绘制危险图。rms库的psm函数符合参数生存模型的加速失效时间族(默认为威布尔分布)。survreg包的文档中提供了其他可用的发行版:
这些包括“威布尔”,“指数”,“高斯”,“逻辑”,“对数正态”和“逻辑”。否则,将假定为符合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)https://stackoverflow.com/questions/56540351
复制相似问题