0

我有一个包含时间、状态( 1=death, 0 = censored)、treatment =1,2 的数据集。
我创建了我的生存对象 km_2,我想使用 autoplot() 绘制 Kaplan-Meijer 图。我不知道我的错误是什么,但设置属性(例如 legendLabs)不会对基本的 KM 图进行任何更改。

km_2 <- survfit(Surv(time, status)~treatment, data=prostate)
library(ggplot2)
library(ggfortify)
autoplot(km_2, 
         alpha=0.7, #transparency of CIs
         shape= 10, #shape used to incdicaed censored obs
         xlab= 'month', ylab='% survived',
         title = 'KM- plot to compare tr1, tr 2',
         legendLabs= c('tr1','tr2'),
         pval=T,
         plotTable= T
         
         )
4

1 回答 1

1

这里有几点需要指出。首先,autoplot它是一个泛型函数,因此使用的方法和它接受的参数取决于您传递给它的对象的类型。在这种情况下,您正在传递一个对象,如果您在控制台中survfit键入,您将能够看到要使用的正确参数。?autoplot.survfit

从这里您将看到没有legendLabsplotTable选项,并且置信区间的 alpha 由 控制conf.int.alpha = 。同样,审查形状由 控制censor.shape

另一个问题是似乎没有办法更改图例中的因子标签,但在这种情况下,在创建survfit对象时很容易在数据中更改它们。

最后,如果您想要快速且有用的答案,最好制作一个可重复的示例。重新创建一个合理的数据结构来测试和演示这个答案需要一段时间。

library(survival)
library(ggplot2)
library(ggfortify)

km_2 <- survfit(Surv(time, status) ~ treatment, 
                data = within(prostate, treatment <- c("tr1", "tr2")[treatment]))

autoplot(km_2, 
         conf.int.alpha = 0.7,
         censor.shape = 10,
         xlab = 'month', 
         ylab = '% survived',
         title = 'KM- plot to compare tr1, tr2'
  )

在此处输入图像描述

顺便说一句,您可能会使用以下方法获得更接近预期的结果survminer

library(survminer)
ggsurvplot(km_2, conf.int = TRUE, risk.table = TRUE)

在此处输入图像描述


可重现的数据

set.seed(1)

prostate <- data.frame(time = pmin(runif(100) * rep(c(7, 10), each = 50), 5),
                       treatment = rep(1:2, each = 50),
                       status = c(rbinom(50, 1, 0.3), rbinom(50, 1, 0.5)))

prostate$status[prostate$time > 5] <- 0
于 2022-02-11T22:10:14.693 回答