Объект runjags слишком большой

Я пытаюсь запустить JAGS, используя новый пакет runjags, потому что R2jags имеет ошибку (полный код модели находится в вопросе https://stats.stackexchange.com/q/62006/5509):

require("runjags")
out <- run.jags("Poisson.OD.t.test.txt", params, win.data, nc, inits,
      nb*4/5, ni, nb*1/5)
plot(out2, layout = c(4, 2))

Это работает как очарование, но недостатки этого пакета в том, что runjags объект, возвращаемый run.jags функция уже связана с подготовленными графиками и выходами и является слишком большой. Для сравнения: размеры соответствующих файлов.Rdata (2 цепочки, каждая из 500 сохраненных итераций, всего 1000 итераций):

  • runjags объект - 1,2 МБ
  • R2jags объект - 212 кБ
  • mcmc.list объект - 33 кБ

runjags объект огромен, но я должен хранить его, чтобы иметь возможность использовать runjags Интерфейс на модели позже.

Любое решение этой проблемы?

1 ответ

Решение

Объекты класса runjags довольно большие, в основном потому, что в них хранится вся информация (состояния модели / данных / состояния ГСЧ), необходимая для продолжения симуляции, где они остановились. Если вам нужны только цепочки MCMC, вы можете избавиться от большей части этого, используя:

as.mcmc.list(yourrunjagsobject)

... или преобразовать во что-то, что вы можете использовать с пакетом rjags напрямую:

as.jags(yourrunjagsobject)

Смотрите также ?runjagsclass

Или, если у вас есть проблемы с печатью / сводкой, связанные с хранением, и вы хотите сохранить состояние модели / данных / ГСЧ, попробуйте summarise=FALSE а также plot=FALSE в run.jags(), что предотвратит их предварительную генерацию / хранение во время первоначального вызова функции.

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

Другие вопросы по тегам