Создание графика Каплана Мейера с вероятностями выживания в моменты времени - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь создать график в R, который бы генерировал таблицу вероятностей выживания в указанные моменты времени в таблице.

В настоящее время график выглядит следующим образом:

enter image description here

R-код для графика с использованием пакета Surminminer:

ggsurvplot(fit, 
           pval = TRUE, conf.int = TRUE,
           risk.table = TRUE, # Add risk table
           risk.table.col = "strata", # Change risk table color by groups
           linetype = "strata", # Change line type by groups
           ggtheme = theme_bw(), # Change ggplot2 theme
           palette = c("#E7B800", "#2E9FDF"))

В идеале я хотел бы, чтобы таблица под «Числом, подверженным риску по времени» отображала вероятности выживания для каждой страты в моменты времени 250, 500, 750 и 1000.

Я могу получить вероятности выживаниясо следующим кодом:

summary(fit, times=0:1000)

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Попробуйте эту ggpubr библиотеку.Посмотрите на самый низ этой страницы .Он показывает график с текстовой таблицей.

enter image description here

0 голосов
/ 28 сентября 2018

Я сделал функцию для этого назад.Он принимает в качестве аргумента объект выживания и временную последовательность и возвращает вероятности выживания.

ConstruirTabela = function(a, sequencia = seq(250,1000,by=250)){

quebra=NULL

for(i in 1:(length(a$time)-1)){
  if(a$time[i] > a$time[i+1]){
    quebra = c(quebra,i)
  }
}
quebra= c(quebra,length(a$time))

lsurv = list()
ltime = list()
previous = 0
for(i in 1:length(quebra)){
  periodo = c((previous+1):quebra[i])
  lsurv[[i]] = a$surv[periodo]
  ltime[[i]] = a$time[periodo]
  previous = quebra[i]
}

matriz=matrix(ncol=length(ltime),nrow=length(sequencia))
for(i in 1:length(sequencia)){
  for(j in 1:length(ltime)){
    indice = which.min(abs(ltime[[j]]-sequencia[i]))
    matriz[i,j] = lsurv[[j]][indice]
    }
}
retorno = as.data.frame(matriz)
f=strsplit(names(a$strata),"=")

names(retorno) = sapply(f, "[[", 2)
rownames(retorno) = as.character(sequencia)

return(retorno)}

Вероятно, это не лучший способ добиться этого, но проверьте, работает ли он для вас.

...