#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, но любая помощь и критика будут высоко оценены!
Комментарии:
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. хорошо, где значения белка в ваших данных? И если вы ищете анализ выживаемости или опасности, что это за событие? Можете ли вы каким-либо образом построить таблицу жизни из ваших данных, как я пытался сделать?