提取Survfit线的点的坐标

时间:2018-05-31 16:47:39

标签: r survival-analysis survival

我希望这个例子能够奏效。 我想知道是否有办法提取生存曲线的每个点的坐标。 我从?plot.survfit知道它将产生一个具有每个类末尾坐标的值,但我想知道该行变化的所有点

library(survival)
status <- c(1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,1,0,0,1,1,0,0,0,0)
classification <- c(1,1,1,2,2,2,2,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8)
df <-data.frame( Sub = c(letters,LETTERS[1:24]), 
                         status= status, 
                         time= round(rnorm(50,300,100),0), 
                         class = classification )
fit <- survfit(Surv(time, status)~class, data= df)
plotFit <- plot(fit)

我知道我可以从中提取幸存值 fit$surv,我可以将它们与fit$timefit$n.event结合使用,但是从这个矩阵开始,我必须创建一个循环,以便在状态发生变化时每转90度创建一个点,所以如果有更快的方法直接获得所有那些线转折点的值,那就是徘徊。 提前谢谢

1 个答案:

答案 0 :(得分:0)

我认为它的小写版本的幸存者,我猜数据框架构造错误。像这样,代码运行。

library(survival)
status <- c(1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,1,0,0,1,1,0,0,0,0)
classification <- c(1,1,1,2,2,2,2,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8)


df <-data.frame( Sub = c(letters,LETTERS[1:24]),
                 status= status,
                 time= round(rnorm(50,300,100),0), 
                 class = classification )

fit <- survfit(Surv(time,status)~class, data= df)
plotFit <- plot(fit)

对于坐标,下面只是一个开始。我认为你必须在n.events上拆分线来正确绘制它。

x <- c(1,fit$time)
y <- c(1,(fit$surv))
plot(x,y, type="S")

您还可以查看包survminer并查看功能ggsurvplot。这些图更好,并且输出了绘图功能。也许这会有所帮助吗?

library(survminer)
ggsurvplot(fit, data = df)
ggsurvplot