Запуск модели Cox.ph со смешанными моделями GAMM в R - PullRequest
0 голосов
/ 26 ноября 2018

Я новичок в использовании GAM и сплайнов.Я управляю моделью выживания, в которой я хочу смоделировать Время до события с возрастом субъектов, контролирующих две переменные.Вот пример использования традиционной модели выживания с coxph:

 library(survival)
 fit_cox<-coxph(Surv(time, event)~ age+ var1 + var2, data=mydata)

Я подозреваю, что связь между var1 и var2 с результатом не является линейной, и я также думаю, что я могу включить в свою модель случайные эффекты(переход к смешанному эффекту моделей гамма).Я попробовал этот синтаксис:

library(mgcv)
fit_surv<-Surv(time, event)
fit_gam<-gam(fit_surv ~ age + s(var1) + s(var2), data = mydata, family = cox.ph())

И включить случайные эффекты:

library(gamm4)
fit_gamm <- gamm4(fit_surv ~ age + s(var1) + s(var2), random = ~(1 | ID), data = mydata, family = cox.ph)

Мои проблемы: 1. В fit_gam я не знаю, как сделать резюме этогомодели и посмотреть таблицу коэффициентов и построить модель.Эта ошибка пришла ко мне:

 summary(fit_gam)

«Ошибка в Ops.Surv (w, object $ y): недопустимая операция по времени выживания»

В fit_gamm я не смог запустить модель, потому что произошла какая-то ошибка в синтаксисе или, может быть, я не смог включить Surv?Ошибка: «Ошибка в ncol (x): объект« x »не найден»

Заранее спасибо!

1 Ответ

0 голосов
/ 08 декабря 2018

Как упомянуто в комментариях, простые гауссовские слабости (случайный гауссовский перехват) могут быть указаны непосредственно в вызове mgcv::gam, например, путем добавления ... + s(ID, bs = "re") + ... к вашей формуле (обратите внимание, что ID должна быть фактор-переменной),

Кроме того, вы можете преобразовать данные в так называемый кусочно-экспоненциальный формат данных (PED) и подогнать модель, используя любое программное обеспечение GA (M) M, которое затем называется кусочно-экспоненциальнойАддитивные смешанные модели (ПАММ) .Вот пример:

library(coxme)
library(mgcv)
library(pammtools)

lung <- lung %>% mutate(inst = as.factor(inst)) %>% na.omit()
## cox model with gaussian frailty
cme <- coxme(Surv(time, status) ~ ph.ecog + (1|inst), data=lung)

## pamm with gaussian frailty
ped <- lung %>% as_ped(Surv(time, status)~., id="id")
pam <- gam(ped_status ~ s(tend) + ph.ecog + s(inst, bs = "re"),
  data = ped, family = poisson(), offset = offset)

## visualize random effect:
gg_re(pam)

# compare coxme and pamm estimates:
re <- tidy_re(pam)
plot(cme$frail$inst, re$fit, las=1, xlab="Frailty (cox)", ylab="Frailty (PAM)")
abline(0, 1)

## with gamm4
library(gamm4)
#> Loading required package: Matrix
#> Loading required package: lme4
#> 
#> Attaching package: 'lme4'
#> The following object is masked from 'package:nlme':
#> 
#>     lmList
#> This is gamm4 0.2-5
pam2 <- gamm4(ped_status ~ s(tend) + ph.ecog, random = ~(1|inst),
  family = poisson(), offset = ped$offset, data = ped)
lattice::qqmath(ranef(pam2$mer)$inst[, 1])

Создано в 2018-12-08 пакетом Представления (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...