Извлечение отношения усилие-успех из модели INLA.surv в R - PullRequest
1 голос
/ 31 октября 2019

Мы создали модель inla.surv, которая объясняет случайный случай отлова по меньшей мере одного животного на основе ловушки (тип ловушки, n = 2) и местоположения (4 на сайт), вложенных в сайт (n = 5). переменные. Начало и конец выражают день начала и окончания каждого эксперимента по улавливанию (масштабируется до одного для самого длинного эксперимента по улавливанию = 25 дней) с одним из двух типов ловушек в определенном месте и месте. Таким образом, модель выглядит следующим образом:

ms <- inla(
  inla.surv(Start, Event, End) ~ Trap + 
    f(Site, model = "iid", 
      hyper = list(theta = list(prior="pc.prec", param = c(0.1, 0.01)))
    ) + 
    f(Location, model = "iid", 
      hyper = list(theta = list(prior="pc.prec", param = c(0.1, 0.01)))
    ), 
  family = "weibullsurv",
  data = datatrap,
  control.family = list(variant = 0),
  control.compute = list(waic = TRUE, config = TRUE)
)

Теперь я хотел бы изобразить шанс поймать хотя бы одного животного (успех) с одной из этих ловушек в зависимости от количества дней, в течение которых ловушка будет размещена (усилия). Я нашел похожий код, но для экспоненциальной модели inla.surv, и он не различает переменную (в моем случае Trap). Ясно, что я не могу использовать это, но я показываю это здесь, поскольку это может помочь как вдохновение или помочь разъяснить то, что я хочу.

times <- seq(0.05, 1, by = 0.05)
alpha.marg <- ms$marginals.fixed[["(Intercept)"]]
S.inla <- mclapply(times, function(t){
  S.marg <- inla.tmarginal(function(x) {exp(- exp(x) * t)}, alpha.marg)
  S.stats <- inla.zmarginal(S.marg, silent = TRUE)
  return(unlist(S.stats[c("quant0.025", "mean", "quant0.975")]))
S.inla <- as.data.frame(do.call(rbind, S.inla))
plot(S.inla$mean~times)
lines(S.inla$quant0.025~times)
lines(S.inla$quant0.975~times)

Этот простой график дает следующий результат:

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

...