Модель історії дискретних подій дискретного часу (виживання) в R


10

Я намагаюся вписати в R дискретний час модель, але не знаю, як це зробити.

Я читав, що ви можете організувати залежну змінну в різні рядки, по одній для кожного часу спостереження, і використовувати glmфункцію за допомогою посилання logit або cloglog. У цьому сенсі, у мене є три колонки: ID, Event(1 або 0, в кожній часовій набл) і Time Elapsed(з початку спостереження), а також інших ковариаций.

Як написати код, щоб відповідати моделі? Яка залежна змінна? Я думаю, я міг би використовувати Eventяк залежну змінну і включати Time Elapsedковаріати. Але що відбувається з ID? Мені це потрібно?

Дякую.


Коли ви говорите "Я намагаюся підходити до дискретної моделі часу" ... яку модель ви хочете підігнати? (Якщо це стосується якоїсь теми, будь ласка, додайте self-studyтег.)
Glen_b -Встановіть Моніку

Я хочу підходити до моделі дискретного виживання в стилі логіт.
Fran Villamil

1
Здається, малоймовірно, що ідентифікатор є релевантним, але це залежить від того, що саме він представляє і чи це ви хочете моделювати.
Glen_b -Встановити Моніку

Відповіді:


8

Ви в основному праві щодо організації даних. Якщо у вас такі справи організовані так:

ID M1 M2 M3 EVENT

Ви, ймовірно, захочете реорганізувати дані так, щоб вони виглядали приблизно так:

ID TIME EVENT
1  1    0
1  2    1
1  3    1
2  1    0
2  2    0
.  .    .
.  .    .

Я називаю це перетворенням від широкого формату до довгого формату. Це робиться легко в R за допомогою reshape()функції або ще простіше з reshape2пакетом.

Я особисто зберігав би IDполе для його потенційного використання для визначення джерела варіації в моделі змішаних ефектів. Але це не обов'язково (як вказував @BerndWeiss). Далі передбачається, що ви цього хотіли б зробити. Якщо ні, то підійде аналогічна модель із glm(...,family=binomial)умовами без випадкових ефектів.

lme4Пакет в R буде відповідати змішаним ефектів логістичної регресійної моделі , аналогічної тій , що ви говорите, за винятком випадкового ефекту або два для обліку мінливості коефіцієнтів з предметів ( ID). Далі буде прикладом коду для примірника прикладної моделі, якщо ваші дані зберігаються у кадрі даних, який називається df.

require(lme4)
ans <- glmer(EVENT ~ TIME + (1+TIME|ID), data=df, family=binomial)

Ця конкретна модель дозволяє коефіцієнти TIMEта interceptкоефіцієнти змінюватись випадковим чином в межах ID. Іншими словами, це ієрархічна лінійна змішана модель вимірювань, вкладених у особи.

Альтернативна форма дискретної моделі історії історії подій розбивається TIMEна дискретні манекени і підходить кожній як параметр. Це, по суті, дискретний випадок моделі Cox PH, оскільки крива небезпеки не обмежується лінійною (або квадратичною, або ви можете уявити час перетворення). Хоча, можливо, ви хочете згрупувати TIMEкерований набір (тобто малий) дискретних часових періодів, якщо їх багато.

Подальші альтернативи включають час перетворення, щоб отримати правильну криву небезпеки. Попередній метод в основному позбавляє вас від цього робити, але попередній метод менш парсимонічний, ніж цей (і оригінальний лінійний випадок, який я поставив), оскільки у вас може бути багато часових точок, а отже, і багато неприємних параметрів.

Чудовим посиланням на цю тему є прикладний поздовжній аналіз даних Джудіт Сінгер та Джона Віллета : моделювання змін та виникнення подій .


4
Для оцінки простої моделі дискретного часу вам не потрібна "модель логістичної регресії" зі змішаними ефектами (Fiona Steel опублікувала кілька статей про " Аналіз історії дискретних подій багаторівневого рівня "). У вас є довідник? На етапі підготовки даних я також пропоную переглянути функцію survSplit .
Бернд Вайс

6

З цією темою було багато опубліковано співачок та Віллетт. Я настійно рекомендую прочитати деякі їх статті . Ви також можете отримати їх книгу "Прикладний поздовжній аналіз даних: моделювання змін та виникнення подій" . Очевидно, що один з найкращих підручників у цій галузі.

Для більшості розділів книги доступний зразок коду R (див. Глави 11ff), який демонструє, як мають бути структуровані ваші дані ("формат особи-періоду") та як аналізувати такі дані. Для стандартної моделі дискретного часу вам не потрібна змінна ID, а також не потрібно оцінювати модель змішаних ефектів, як запропонував @ndoogan. Простий glm(event ~ time + ..., family = "binomial")працює просто чудово. Зінгер та Віллет також обговорюють багато питань, як моделювати змінну часу (лінійну, квадратичну, ...)

Навести ще два посилання, які настійно рекомендую:


1

Ви можете розбивати час на інтервали та виконувати багатоперіодну модель Logit, як у Shumway (2001) . Наприклад, ви проміжки часу(0,1],(1,2],. Я реалізував це в dynamichazard::static_glmR, що безпосередньо застосоване, якщо у вас є початкові дані в типовому режимі зупинки подій, який використовується в аналізі виживання. Зауважте, що t-статистика з отриманої моделі не має корекції, згаданої у Shumway (2001).

Цей метод відрізняється від методу @ndoogan тимчасовими манекенами, оскільки ви отримуєте лише один загальний перехоплення за всі періоди часу dynamichazard::static_glm. Однак ви можете отримати манекен на кожен період, зателефонувавши dynamichazard::get_survival_case_weights_and_dataз аргументом use_weights = FALSE, додати індикатор манекена часу до повернутого, data.frameа потім зателефонувати, наприклад glm.


Далі, можливо, вас зацікавить ця віньєтка в моєму пакеті dynamichazard.
Бенджамін Кристофферсен

0

Це називається даними "процесу підрахунку". Пакет виживання має дуже гарну функцію tmerge (). Дуже корисно вставляти залежно від часу або кумулятивні коваріати та час подальшого спостереження за розділами. Процес дуже добре пояснений у цій віньєтці

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.