R2jags
- сверхнормативная функция для запуска rjags
.Он призван упростить выполнение некоторых вещей, как описано в описании пакета, таких как выполнение до конвергенции или распараллеливание цепей MCMC.
Если вы посмотрите на функцию jags
в R2jags
(например,просмотрев исходный код или просто введя jags
без скобок в консоли R), вы найдете следующие вызовы в конце функции (строки 151–177 в связанной версии github):
m <- jags.model(model.file,
data = data,
inits = init.values,
n.chains = n.chains,
n.adapt = 0 )
adapt( m,
n.iter = n.adapt,
by = refresh,
progress.bar = progress.bar,
end.adaptation = TRUE )
samples <- coda.samples( model = m,
variable.names = parameters.to.save,
n.iter = ( n.iter - n.burnin ),
thin = n.thin,
by = refresh,
progress.bar = progress.bar )
Таким образом, R2jags::jags
компилирует модель с jags.model
, адаптирует ее с adapt
, затем выполняет итерации и выборку из апостериорного с помощью coda.samples
Ваши два вызова aren 'т точно эквивалентно.Во-первых, вы:
- скомпилируете и адаптируете с
jags.model
, - обновлением для 100 итераций с
update
, затем - обновите и сэмплируйте из апостериорногоза 100 итераций с
coda.samples
.
Во второй вы
- скомпилируете и адаптируетесь с
jags.model
, - обновлением и сэмплом из задней частидля 200 итераций с
coda.samples
.
Т.е. ваш последующий образец взят из большего числа итераций, но в методе 2 после фазыадаптация подразумевается в jags.model
.Нет смысла использовать n.burnin
в rjags
, только в R2jags
;см. вызов coda.samples
в коде функции jags
выше, тогда как ранее в строке 77 эта функция присваивает n.adapt <- n.burnin
.