为什么`par(mfrow = c(3,2))`在这里没有使用`densityplot()`?

时间:2014-03-21 12:45:58

标签: r lattice

densityplot()来自格子包。运行以下命令,我得到每页/图的一个图,而不是页/图中排列的所有6个图。为什么?此处outputBRugsFit()coda=TRUE的返回,其中有78个参数和2个链,我从中选择了6个参数:

Sigma12 = mcmc.list(list(output[[1]][,2], output[[2]][,2]))
Sigma22 = mcmc.list(list(output[[1]][,3], output[[2]][,3]))
alpha1 = mcmc.list(list(output[[1]][,4], output[[2]][,4]))
beta1 = mcmc.list(list(output[[1]][,5], output[[2]][,5]))
gamma_alpha_1 = mcmc.list(list(output[[1]][,75], output[[2]][,75]))
gamma_beta_1 = mcmc.list(list(output[[1]][,77], output[[2]][,77]))

> par(mfrow=c(2,3)); 
> densityplot(Sigma12, main="Sigma12")
> densityplot(Sigma22, main="Sigma22")
> densityplot(alpha1, main="alpha1")
> densityplot(beta1, main="beta1")
> densityplot(gamma_alpha_1, main="gamma_alpha_1")
> densityplot(gamma_beta_1, main="gamma_beta_1")
> 
> class(Sigma12)
[1] "mcmc.list"

事情也不能与acfplot()中的coda一起解决:<​​/ p>

par(mfrow=c(2,3)); 
acfplot(Sigma12, main="Sigma12")
acfplot(Sigma22, main="Sigma22")
acfplot(alpha1, main="alpha1")
acfplot(beta1, main="beta1")
acfplot(gamma_alpha_1, main="gamma_alpha_1")
acfplot(gamma_beta_1, main="gamma_beta_1")

但它适用于traceplot()的{​​{1}}。

coda

在上述代码中将par(mfrow=c(2,3)); traceplot(Sigma12, main="Sigma12") traceplot(Sigma22, main="Sigma22") traceplot(alpha1, main="alpha1") traceplot(beta1, main="beta1") traceplot(gamma_alpha_1, main="gamma_alpha_1") traceplot(gamma_beta_1, main="gamma_beta_1") 更改为mcmc.list()也不会产生任何影响。

1 个答案:

答案 0 :(得分:2)

为了跟进,我在评论中很简洁,因为我在手机上。使用?densityplot中的示例,用法如下:

library(lattice)
library(gridExtra)
p1 <- densityplot( ~ height | voice.part, data = singer, layout = c(2, 4),  
             xlab = "Height (inches)", bw = 5)
grid.arrange(p1,p1,nrow = 1)