Объект 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()
, что предотвратит их предварительную генерацию / хранение во время первоначального вызова функции.
Вы могли бы также взломать объект класса, чтобы избавиться от больших компонентов, я думаю, но гораздо лучше использовать предоставленные методы преобразования...