Как подогнать модели выживания хрупкости в R

Поскольку это такой длинный вопрос, я разбил его на 2 части; первый - это просто основной вопрос, а второй - подробности того, что я пытался сделать до сих пор.

Вопрос - Короткий

Как вы вписываете в R модель индивидуального выживания? В частности, я пытаюсь воссоздать оценки коэффициентов и SE в таблице ниже, которые были найдены в результате подгонки полупараметрической модели неустойчивости к этому набору данных ссылка. Модель принимает вид:

h_i(t) = z_i h_0(t) exp(\beta'X_i)

где z_i — неизвестный параметр слабости для каждого пациента, X_i — вектор независимых переменных, \beta — соответствующий вектор коэффициентов, а h_0(t) — базовая функция риска, использующая независимые переменные заболевание, пол , ИМТ и возраст (я включил код ниже, чтобы очистить контрольные уровни факторов). введите здесь описание изображения

Вопрос - Длинный

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

Я могу воссоздать оценки модели отсутствия хрупкости, используя

library(dplyr)
library(survival)
dat <- read.table(
    "./Survival of patients registered for a lung transplant.dat",
    header = T
) %>% 
    as_data_frame %>% 
    mutate( disease = factor(disease, levels = c(3,1,2,4))) %>% 
    mutate( gender = factor(gender, levels = c(2,1)))

mod_cox <- coxph( Surv(time, status) ~ age + gender + bmi + disease   ,data = dat)
mod_cox

однако я действительно изо всех сил пытаюсь найти пакет, который может надежно воссоздать результаты вторых двух столбцов. Поискав в Интернете, я нашел эту таблицу, которая пытается обобщить доступные пакеты:

введите описание изображения здесь источник< /а>

Ниже я разместил свои текущие выводы, а также код, который я использовал, чтобы помочь кому-то определить, если я просто неправильно указал функции:

failtyEM — кажется, лучше всего подходит для гаммы, но не предлагает логарифмически нормальные модели.

frailtyEM::emfrail(
    Surv(time, status) ~ age + gender + bmi + disease + cluster(patient), 
    data = dat ,
    distribution = frailtyEM::emfrail_dist(dist = "gamma")
)

Survival — выдает предупреждения о гамме, и из всего, что я читал, кажется, что его хрупкая функциональность классифицируется как устаревшая с рекомендацией вместо этого использовать coxme.

coxph( 
    Surv(time, status) ~ age + gender + bmi + disease + frailty.gamma(patient), 
    data = dat 
)
coxph( 
    Surv(time, status) ~ age + gender + bmi + disease + frailty.gaussian(patient), 
    data = dat 
)

coxme — кажется, работает, но дает оценки, отличные от приведенных в таблице, и не поддерживает гамма-распределение.

coxme::coxme(
    Surv(time, status) ~ age + gender + bmi + disease + (1|patient),
    data = dat
)

failtySurv. Я не мог работать должным образом и, казалось, всегда подбирал параметр дисперсии с фиксированным значением 1 и предоставлял оценки коэффициентов, как если бы была подобрана модель отсутствия хрупкости. Кроме того, в документации не указано, какие строки поддерживают аргумент хрупкости, поэтому я не мог понять, как заставить его соответствовать логарифмически нормальному

frailtySurv::fitfrail(
    Surv(time, status) ~ age + gender + bmi + disease + cluster(patient),
    dat = dat,
    frailty = "gamma"
)

frailtyHL — выдавать предупреждающие сообщения о том, что "не сходится", однако он по-прежнему дает оценки коэффициентов, однако они отличаются от оценок в учебниках.

mod_n <- frailtyHL::frailtyHL(
    Surv(time, status) ~ age + gender + bmi + disease + (1|patient),
    data = dat,
    RandDist = "Normal"
)
mod_g <- frailtyHL::frailtyHL(
    Surv(time, status) ~ age + gender + bmi + disease + (1|patient),
    data = dat,
    RandDist = "Gamma"
)

frailtypack - я просто не понимаю реализацию (или, по крайней мере, она сильно отличается от того, что преподается в учебнике). Функция требует указания узлов и сглаживания, что, по-видимому, сильно влияет на итоговые оценки.

parfm — подходит только для параметрических моделей; сказав, что каждый раз, когда я пытался использовать его для соответствия модели пропорциональных рисков Вейбулла, он просто ошибался.

phmm — еще не пробовал

Я полностью понимаю, учитывая большое количество пакетов, которые я безуспешно прошел, что весьма вероятно, что проблема заключается в том, что я сам неправильно понимаю реализацию и пропускаю использование пакетов. Мы будем очень признательны за любую помощь или примеры того, как успешно воссоздать приведенные выше оценки.


person gowerc    schedule 09.03.2018    source источник
comment
Если ваш вопрос только о том, как использовать R, какой пакет, какой код и т. д., то здесь он не по теме. Это большой вопрос, он может не получить много ответов на Stack Overflow. Вы могли бы сделать лучше всего на r-help. Дайте мне знать, если вы хотите, чтобы я перенес это на SO.   -  person gung - Reinstate Monica    schedule 09.03.2018
comment
Привет, @gung. Действительно, я думаю, что вряд ли я получу ответ на SO, поэтому я разместил здесь сообщение, поскольку я предполагал, что у более статистически ориентированных пользователей здесь будет гораздо больше шансов узнать ответ или быть в состоянии помочь. Если вы все еще непреклонны в том, что это не по теме, то да, пожалуйста, можете ли вы передать это в SO; если я не получу там никаких ответов, я попытаюсь связаться с r-help, как вы предложили.   -  person gowerc    schedule 09.03.2018
comment
Имеются ли у вас данные об выживаемости пациентов, зарегистрированных для трансплантации легких? Загляните в ?survreg сайта выживания, где вы предоставляете дистрибутив.   -  person Parfait    schedule 09.03.2018
comment
Привет @Parfait, я обновил вопрос, чтобы попытаться прояснить его, а также прикрепил прямую ссылку на загрузку набора данных. Спасибо за предложение; survreg хотя и ориентирован на подгонку параметрических моделей, эквивалентом в пакете выживания для полупараметрических моделей является coxph, но компонент хрупкости, похоже, классифицируется как устаревший в пользу пакета coxme, который я не смог заставить работать должным образом.   -  person gowerc    schedule 10.03.2018


Ответы (1)


Касательно

Я действительно изо всех сил пытаюсь найти пакет, который может надежно воссоздать результаты вторых двух столбцов.

См. представление задачи анализа выживания CRAN в разделе Модели со случайными эффектами. или выполните поиск в R Site Search, например, "слабость выживания".

person Benjamin Christoffersen    schedule 09.03.2018
comment
Спасибо за предложение; из этого ресурса видно, что frailtypack — это пакет с наивысшей оценкой для моделирования слабости выживания. Я пытался использовать этот пакет, но изо всех сил пытался понять его или заставить его работать должным образом, поскольку реализация сильно отличается от того, что делал учебник. В частности, вам, похоже, нужно указать количество узловых точек и более гладкие значения, которые, по-видимому, сильно влияют на результаты (которые я не уверен, как использовать для воссоздания приведенных выше чисел). - person gowerc; 10.03.2018
comment
Существует эта статья и эта статья из Journal of Statistical Software, которая может вам помочь. - person Benjamin Christoffersen; 10.03.2018
comment
Спасибо; посмотрю и посмотрю, смогу ли я использовать их для решения моей проблемы - person gowerc; 10.03.2018
comment
Первая статья, вероятно, наиболее актуальна для вас. Хотя, насколько я помню, пакет касается коррелированных данных о выживании, тогда как ваша проблема касается только индивидуальной слабости, если я правильно понимаю вашу проблему? Я не уверен, сможете ли вы подогнать такую ​​модель под любую из функций в frailtypack. - person Benjamin Christoffersen; 10.03.2018
comment
Например, вам нужна вложенная модель слабости, но без общего эффекта $v_i$ на странице 3. - person Benjamin Christoffersen; 10.03.2018