Актуарный анализ выживания, разделенный на интервалы

Я пытаюсь создать актуарный анализ выживания в R (я следую некоторым рабочим примерам). Я думаю, что лучший способ сделать это — использовать пакет survival. Итак, что-то вроде:

library(survival)
surv.test <- survfit(Surv(TIME,STATUS), data=test)

Однако, чтобы получить правильный ответ, мне нужно будет разделить переменную TIME на 365-дневные интервалы, и я не могу понять, как это сделать, чтобы она соответствовала заданному результату.

Насколько я понимаю, в функции survfit нет опции, которая могла бы это сделать. Я просмотрел несколько примеров документов, и ни один из них не пытался создать график ступенчатого типа (есть вариант type='interval', но, похоже, он делает что-то другое). Итак, я предполагаю, что мне нужно перегруппировать мои данные, прежде чем я применю функцию survival?

Любые идеи?

P.S. В SPSS это будет INTERVAL = THRU 10000 BY 365; в Стате intervals(365) ... connect(stairsteps)


person Joanne Demmler    schedule 09.08.2012    source источник
comment
Не уверен, почему этот вопрос был отклонен. +1, так как я думаю, что это небезосновательный вопрос. Как сейчас настроены переменные TIME и STATUS?   -  person TARehman    schedule 09.08.2012
comment
Что могло бы помочь, так это какой-то пример, который можно было бы запустить, и вы сказали бы нам, почему пример неверен и что мы должны изменить.   -  person BlueTrin    schedule 09.08.2012
comment
Кто спросил, работал ли я на БАЭС? Кстати, нет.   -  person TARehman    schedule 09.08.2012
comment
Зачем нужно разбивать переменную TIME на интервалы? Вы пытаетесь построить кривую Каплана-Мейера (иногда называемую ступенчатой ​​диаграммой)? Или вы пытаетесь добавить в свою модель изменяющиеся во времени ковариаты? Это имеет большое значение.   -  person nograpes    schedule 09.08.2012
comment
Таблица содержит примерно 9400 записей о событиях, и данные должны быть сгруппированы по годам (согласно упражнению). Переменная STATUS — это простая переменная 0,1, которая показывает, была ли у человека определенная операция, а переменная TIME — количество дней, прошедших с момента другой операции. Извините, но я пока не могу размещать изображения. Представьте, что в R изображена толстая ровная линия вместо широких шагов, которые можно увидеть в выводе SPSS и STATA. Я думаю, проблема в том, что таблица содержит ежедневные события, а шаги слишком малы (время работает от 0 до 6249).   -  person Joanne Demmler    schedule 10.08.2012


Ответы (3)


Я предполагаю, что вы хотите разделить переменную TIME на интервалы, потому что хотите построить кривую Каплана-Мейера. В R это не обязательно, вы можете просто вызвать plot для объекта survfit. Например,

s=survfit(Surv(futime, fustat)~rx, data=ovarian)
plot(s)

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


Кажется, я немного лучше понимаю ваш вопрос. Причина, по которой вы получаете толстую черную линию, заключается в том, что у вас много цензуры, и + отображается в каждой точке, где есть цензура, вы можете отключить это с помощью mark.time=F. (Вы можете увидеть другие варианты в ?survival:::plot.survfit)

Однако, если вы все еще хотите агрегировать данные по годам, просто разделите время отслеживания на 365 и округлите в большую сторону. ceiling используется для округления. Вот пример агрегирования на разных временных уровнях без цензуры.

par(mfrow=c(1,3))
plot(survfit(Surv(ceiling(futime), fustat)~rx, data=ovarian),col=c('blue','red'),main='Day',mark.time=F)
plot(survfit(Surv(ceiling(futime/30), fustat)~rx, data=ovarian),col=c('blue','red'),main='Month',mark.time=F)
plot(survfit(Surv(ceiling(futime/365), fustat)~rx, data=ovarian),col=c('blue','red'),main='Year',mark.time=F)
par(mfrow=c(1,1))

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

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

person nograpes    schedule 09.08.2012
comment
Поскольку моя переменная TIME указана в днях, я получаю на выходе только толстую черную линию при использовании стандартного метода ‹survfit›. Данные должны быть представлены в виде годовых интервалов, иначе шаги не будут видны. - person Joanne Demmler; 10.08.2012

Ура, я должен быть в состоянии опубликовать изображения сейчас:

1) так на данный момент выглядит базовый график выживания R введите здесь описание изображения

2) и вот как это должно выглядеть (пример SPSS) введите здесь описание изображения

person Joanne Demmler    schedule 10.08.2012
comment
Было хорошей идеей добавить сюжеты. Однако вы редактируете свой ответ и помещаете туда графики, а затем удаляете этот ответ. - person nograpes; 10.08.2012
comment
Я думаю, что изображения должны быть добавлены к исходному вопросу. - person Roman Luštrik; 10.08.2012
comment
Не удалось добавить изображения в тот момент, но сделаю это в следующий раз. - person Joanne Demmler; 10.08.2012

Это было именно то, чего мне не хватало! Спасибо!

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

Решение:

vas.surv <- survfit(Surv(ceiling(TIME/365), STATUS)~1, conf.type="none", data=vasectomy)
plot(vas.surv, ylim=c(0.975,1), mark.time=F, xlab="Years", ylab="Cumulative Survival")

Приятным штрихом было бы отображение дней по оси X вместо лет (как в примере с SPSS), но меня это не слишком беспокоит.

person Joanne Demmler    schedule 10.08.2012
comment
Довольно много вопросов здесь по осям SO touch, обозначающим оси с компонентами времени. Не стесняйтесь просматривать. - person Roman Luštrik; 10.08.2012
comment
Это немного неприятно, так как это не просто перемаркировка (например, подавление графика оси x с помощью xaxt='n', а затем переназначение меток с помощью команды оси) оси, но также изменится размещение делений. - person Joanne Demmler; 10.08.2012
comment
В частности, взгляните на ?survival:::plot.survfit, чтобы узнать больше об этой команде построения графика. - person nograpes; 10.08.2012
comment
Но все, что вам нужно сделать, чтобы масштабировать его, это использовать параметр xscale. Таким образом, от нескольких лет до нескольких дней вы бы увеличили его на xscale=1/365. - person nograpes; 10.08.2012
comment
Великолепно! ?survival:::plot.survfit — хорошая команда для сохранения! - person Joanne Demmler; 13.08.2012