Проблемы с решеткой: объекты решетки поступают из JAGS, но устройство не может быть установлено - PullRequest
1 голос
/ 29 октября 2009

Я запустил JAGS с runjags в R, и я получил гигантский список (названные результаты для этого примера).

Всякий раз, когда я получаю доступ к results$density, на устройстве кварца по умолчанию появляются два lattice plots (по одному для каждого параметра).

Мне нужно объединить их с par(mfrow=c(2, 1)) или аналогичным подходом и отправить их на pdf device.

Ничего из того, что я пробовал, не работает. Есть идеи?

Я пытался dev.print, pdf() с dev.off() и т. Д. Без удачи.

Ответы [ 3 ]

2 голосов
/ 10 ноября 2009

Вот способ отбросить панели "V1" путем манипулирования структурой решеток:

p1 <- results$density$c
p2 <- results$density$m

p1$layout <- c(1,1)
p1$index.cond[[1]] <- 1   # remove second index
p1$condlevels[[1]] <- "c"   # remove "V1"
class(p1) <- "trellis"   # overwrite class "plotindpages"

p2$layout <- c(1,1)
p2$index.cond[[1]] <- 1   # remove second index
p2$condlevels[[1]] <- "m"   # remove "V1"
class(p2) <- "trellis"   # overwrite class "plotindpages"

library(grid)
layout <- grid.layout(2, 1, heights=unit(c(1, 1), c("null", "null")))
grid.newpage()
pushViewport(viewport(layout=layout))
pushViewport(viewport(layout.pos.row=1))
print(p1, newpage=FALSE)
popViewport()
pushViewport(viewport(layout.pos.row=2))
print(p2, newpage=FALSE)
popViewport()
popViewport()

Пот c.trellis () результат http://img142.imageshack.us/img142/3272/ctrellisa.png

1 голос
/ 30 октября 2009

Самый простой способ объединить графики - использовать результаты, сохраненные в результатах $ mcmc:

# prepare data, see source code of "run.jags"
thinned.mcmc <- combine.mcmc(list(results$mcmc),
                             collapse.chains=FALSE,
                             return.samples=1000)
print(densityplot(thinned.mcmc[,c(1,2)], layout=c(1,2),
                  ylab="Density", xlab="Value"))
1 голос
/ 29 октября 2009

Например, для включенного примера из run.jags проверьте структуру списка, используя

sink("results_str.txt")
str(results$density)
sink()

Затем вы увидите компоненты с именем layout . Расположение для двух графиков каждой переменной может быть установлено с помощью

results$density$m$layout <- c(1,2)
print(results$density$m)

Графики для различных параметров можно комбинировать, используя метод c.trellis из пакета latticeExtra.

class(results$density$m) <- "trellis"   # overwrite class "plotindpages"
class(results$density$c) <- "trellis"   # overwrite class "plotindpages"
library("latticeExtra")
update(c(results$density$m, results$density$c), layout=c(2,2))

выход c.trellis http://img88.imageshack.us/img88/6481/ctrellis.png

Другой подход заключается в использовании grid области просмотра:

library("grid")
results$density$m$layout <- c(2,1)
results$density$c$layout <- c(2,1)
class(results$density$m) <- "trellis"
class(results$density$c) <- "trellis"
layout <- grid.layout(2, 1, heights=unit(c(1, 1), c("null", "null")))
grid.newpage()
pushViewport(viewport(layout=layout))
pushViewport(viewport(layout.pos.row=1))
print(results$density$m, newpage=FALSE)
popViewport()
pushViewport(viewport(layout.pos.row=2))
print(results$density$c, newpage=FALSE)
popViewport()
popViewport()

сетка вывода http://img88.imageshack.us/img88/5967/grida.png

...