Создать обратную кривую Каплана-Мейера с процентами отклика и временем

#r #survival-analysis #inverse #hazard

#r #анализ выживаемости #обратная #опасность

Вопрос:

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

 Time    response
3   57
4   35
4   85
4   90
5   55
6   65
6   89
6   72
9   97
9   89
9   98
10  99
10  92
13  99
14  50
15  97
18  60
21  70
25  76
28  77
40  82
48  86
 

Время указано в днях, а ответ — в процентах. Сначала я подумал, что могу попробовать это с помощью анализа выживаемости, но решил, что график опасности будет работать лучше. Я не уверен, как это сделать.

Вот ссылка на опубликованную статью, где это показано на третьем рисунке. Я пока не эксперт по KMplots, но любая помощь и критика будут высоко оценены!

https://www.researchgate.net/publication/7789803_Bortezomib_therapy_alone_and_in_combination_with_dexamethasone_for_previously_untreated_symptomatic_multiple_myeloma

Комментарии:

1.Не могли бы вы добавить к своему вопросу 1) a dput() ваших данных, чтобы людям было проще копировать и вставлять их. 2) пример кода, который вы пробовали, и почему это не то, что вы искали. Кроме того, это не похоже ни на какие данные о выживаемости, которые я когда-либо видел раньше. Обычно она форматируется в виде time censoring пар, которые указывают время наблюдения и произошло ли событие (т. е. Пациент ответил) или нет (т. е. Период наблюдения закончился без ответа).). В том виде, в каком она у вас есть, очень сложно определить, что строить, поскольку в большинстве случаев они имеют несколько процентов.

2. Я согласен с Баркером. Если «процент» является кумулятивным значением, оно должно быть монотонным. Если это не кумулятивно … тогда что это?

Ответ №1:

Для решения вашего вопроса я сначала реорганизовал ваши данные в данные о выживании, к которым я привык. Это одна строка на событие / цензуру. Затем я подгоняю модель выживания и строю KM.

 dt <- as.data.frame(matrix(c(3,57
,4,35
,4,85
,4,90
,5,55
,6,65
,6,89
,6,72
,9,97
,9,89
,9,98
,10,99
,10,92
,13,99
,14,50
,15,97
,18,60
,21,70
,25,76
,28,77
,40,82
,48,86),ncol=2,byrow = TRUE))

colnames(dt) <- c("time","response")

#translate percentage of responders at each time to number of responders if we start with a population of 10000
dt$individuals <- round(10000*sapply((1:nrow(dt)),function(x){prod(dt[1:x,"response"]/100)}))

s <- data.frame(time = with(dt,rep(time, individuals))
                ,event = 1)

library(survival)

sobj <- Surv(s$time, s$event)
fit <- survfit(sobj ~ 1)
plot(fit, fun="event")
 

введите описание изображения здесь

Комментарии:

1. Как вы интерпретируете значение «процент»? Я не могу сказать, что представляет ваш график, поскольку вы не интерпретировали это значение как процент от какого-либо конкретного знаменателя.

2. Я не уверен, что на самом деле означает ваша переменная ответа. Я предполагаю, что процент оставшегося населения отвечает на лечение. Если нет, вам следует уточнить свои данные.

3. Ах, прошу прощения — процент основан на ответной реакции на медикаментозную терапию, основанной на снижении значений М-белка по сравнению с исходным исходным лабораторным значением.

4. хорошо, где значения белка в ваших данных? И если вы ищете анализ выживаемости или опасности, что это за событие? Можете ли вы каким-либо образом построить таблицу жизни из ваших данных, как я пытался сделать?