График отдельных кривых выживаемости в R
В R я организовал свою базу данных как процесс подсчета для применения расширенной модели Кокса (с изменяющимися во времени ковариатами): конечные точки - это время до события или время для цензуры, а все точки отсечения - это время события в данных:
newdatabase <- survSplit(database,cut=eventTimes,
end=time_to_event_variable,
event=Status,start="start",id="newID")
object<-coxph(Surv(newdatabase$start, newdatabase[time_to_event_variable],
newdatabase[Status] ~.,
data = newdatabase [c(some_covariates)])
Теперь я хочу построить индивидуальные кривые выживания (для индивидуума i):
S_i_cox <- survfit(object,newdata=newdatabase,id=newID)[i]
Моя проблема в том, что объект SurfFit описывает кривую выживаемости пациента i только для предыдущих событий (других пациентов) до его времени события (пациента i):
другими словами,S_i_cox$time and S_i_cox$surv
будет отличаться для каждого пациента в зависимости от того, сколько событий происходит до события пациента. Например, пациент с самым низким временным событием имеет только одно измерение своей кривой выживаемости (в объекте S_i_cox
).
Как получить больше точек выживания (и получить реальную оценку кривой)? Я понимаю, что я могу изменить срез в SurvSplit, чтобы иметь больше точек, но идея состоит в том, чтобы предсказать также отдельные пережитки после фактического события конечной точки пациента.
Большое спасибо Илан
1 ответ
Я помню, как делал это с расширенной моделью Кокса, как та, что вы описали выше
Кляйнбаум объясняет это в своей книге: скорректированные по Коксу оценки выживаемости и графики могут быть получены путем применения функции сводки или графика к объекту, созданному из функции выживания. Первый шаг - запустить модель Кокса с функцией coxph.
Скорректированные кривые выживаемости обычно зависят от структуры ковариат. Предположим, мы заинтересованы в построении кривой выживания для паттерна SEX='MALE', BLOOD_PRESSURE=130 и TREATMENT=0. Во-первых, нам нужно создать набор данных (или фрейм данных) с функцией data.frame с одним наблюдением. Например:
pattern1=data.frame(SEX='MALE', BLOOD_PRESSURE=130, TREATMENT=0)
Этот один кадр данных наблюдения называется pattern1. Чтобы получить скорректированные по Коксу оценки выживаемости, примените функцию выживания в суммарной функции, как показано ниже:
summary(survfit(mod1,newdata=pattern1))
Первым аргументом функции surfit является объект с именем mod1, созданный с помощью функции coxph. Второй аргумент предоставляет фрейм данных, содержащий шаблон интересующих ковариат (называемый pattern1).
Чтобы построить это:
plot(survfit(mod1,newdata=pattern1))