Поскольку это такой длинный вопрос, я разбил его на 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 — еще не пробовал
Я полностью понимаю, учитывая большое количество пакетов, которые я безуспешно прошел, что весьма вероятно, что проблема заключается в том, что я сам неправильно понимаю реализацию и пропускаю использование пакетов. Мы будем очень признательны за любую помощь или примеры того, как успешно воссоздать приведенные выше оценки.
?survreg
сайта выживания, где вы предоставляете дистрибутив. - person Parfait   schedule 09.03.2018survreg
хотя и ориентирован на подгонку параметрических моделей, эквивалентом в пакете выживания для полупараметрических моделей являетсяcoxph
, но компонент хрупкости, похоже, классифицируется как устаревший в пользу пакетаcoxme
, который я не смог заставить работать должным образом. - person gowerc   schedule 10.03.2018