извлечь координаты точек линии Survfit - PullRequest
0 голосов
/ 31 мая 2018

Надеюсь, пример сработает.я хотел знать, есть ли способ извлечь координаты КАЖДОЙ точки кривой выживания.из ?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$time и fit$n.event, но из этой матрицы мне пришлось создать цикл для создания точки на каждом повороте на 90 градусов при изменении статуса, поэтому я бродилесли бы был более быстрый способ непосредственно получить значения всех этих точек поворота линии.заранее спасибо

1 Ответ

0 голосов
/ 31 мая 2018

Я думаю, что его выживание в нижнем регистре, и я думаю, data.frame был построен неправильно.Таким образом, код запускается.

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.Графики более приятные, а функция plot экспортируется.Может быть, это поможет?

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