格子の問題:JAGSからの格子オブジェクトですが、デバイスを設定できません
質問
R
で runjags
を使用して JAGS
を実行しましたが、巨大なリストが返されました(この例では結果に名前を付けました)。
results $ density
にアクセスするたびに、2つの lattice plots
(パラメーターごとに1つ)がデフォルトの水晶デバイスにポップアップ表示されます。
これらを par(mfrow = c(2、1))
または同様のアプローチと組み合わせて、 pdfデバイス
に送信する必要があります。
私が試したものは何も動作していません。アイデアはありますか?
dev.print
、 pdf()
を dev.off()
などで試してみました。 p>
解決
「V1」を捨てる方法は次のとおりです。 Trellis構造の操作によるパネル:
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
他のヒント
プロットを組み合わせる最も簡単な方法は、results $ 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"))
たとえば、 run.jags
に含まれている例では、次を使用してリストの構造を確認します
sink("results_str.txt")
str(results$density)
sink()
[レイアウト]という名前のコンポーネントが表示されます。各変数の2つのプロットのレイアウトは、
を使用して設定できますresults$density$m$layout <- c(1,2)
print(results$density$m)
さまざまなパラメータのプロットは、 latticeExtra
パッケージの c.trellis
メソッドを使用して組み合わせることができます。
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()