График отдельных кривых выживаемости в 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))
Другие вопросы по тегам