Я использовал JAGS, вызываемый через rjags, для создания объекта mcmc.list foldD_samples, который содержит мониторы трассировки для большого количества стохастических узлов (>800 узлов).
Теперь я хотел бы использовать R для вычисления довольно сложной скалярной функции этих узлов и записать результат в объект mcmc, чтобы я мог использовать коду для суммирования апостериорных значений и запуска диагностики сходимости.
Однако я не смог понять, как получить апостериорные рисунки из foldD_samples в кадр данных. Любая помощь очень ценится.
Вот структура mcmc.list:
str(foldD_samples)
List of 3
$ : mcmc [1:5000, 1:821] -0.667 -0.197 -0.302 -0.204 -0.394 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr [1:821] "beta0" "beta1" "beta2" "dtau" ...
..- attr(*, "mcpar")= num [1:3] 4100 504000 100
$ : mcmc [1:5000, 1:821] -0.686 -0.385 -0.53 -0.457 -0.519 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr [1:821] "beta0" "beta1" "beta2" "dtau" ...
..- attr(*, "mcpar")= num [1:3] 4100 504000 100
$ : mcmc [1:5000, 1:821] -0.492 -0.679 -0.299 -0.429 -0.421 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr [1:821] "beta0" "beta1" "beta2" "dtau" ...
..- attr(*, "mcpar")= num [1:3] 4100 504000 100
- attr(*, "class")= chr "mcmc.list"
Привет, Джейкоб
do.call(rbind.data.frame, foldD_samples)
. Возможно, жирнее эффективнее использоватьdata.table::rbindlist
- person user20650   schedule 15.11.2015code.samples
к списку, не принуждая к кадру данных - person user20650   schedule 15.11.2015do.call(rbind.data.frame, foldD_samples)
работал хорошо. Я был бы рад принять это как ответ, если бы он был опубликован как таковой.data.table::rbindlist
не принимает объекты mcmc.list в качестве входных данных. Также обратите внимание на предполагаемый код опечатки для коды в постскриптуме. - person Jacob Socolar   schedule 15.11.2015rbindlist(lapply(foldD_samples,as.data.frame))
может сработать... если вам важна эффективность. - person Ben Bolker   schedule 15.11.2015