这是使用bayesAB
包在两组之间进行的简单贝叶斯比较:
library(bayesAB)
A_binom <- rbinom(100, 1, .5)
B_binom <- rbinom(100, 1, .6)
AB1 <- bayesTest(A_binom, B_binom,
priors = c('alpha' = 1, 'beta' = 1),
distribution = 'bernoulli')
plot(AB1)
并使用
ggplot2
(3.1.1)的先前版本,该过程用于返回期望的图,如此处所述和所示:https://frankportman.github.io/bayesAB/reference/bayesTest.html。但是,更新为
ggplot2
(3.2.0)后,在运行plot(AB1)
后出现以下错误:错误:ymin或ymax必须作为美观因素给出。
使用
p = plot(AB1)
分别检查每个图后,我发现p$posteriors
和p$samples
可以正常工作,而问题与p$priors
有关。同一包(plotBeta(6,4)
)中的plotGamma(1,1)
,bayesAB
等命令也存在类似问题。是否可以使用
ggplot2
3.2.0解决此问题? 最佳答案
此错误是由于geom_ribbon
的代码更改(请参见CRAN news file for 3.2.0的“重大更改”部分)引起的。
ggplot2团队已经通过bayesAB's GH issues page通知了软件包作者,因此希望该软件包可以尽快更新以解决此问题。
在此之前,一种快速的解决方法是通过在R会话开始时运行plotDist_
并在下面的代码行中修改未导出的trace(bayesAB:::plotDist_, edit=TRUE)
函数中的潜在问题代码。
原版的:
function (support, hseq, dist, params)
{
discretes <- c("Poisson")
ribbon_or_bar <- ggplot2::geom_ribbon(ymin = 0,
ymax = hseq, # <- modify this line
size = 2, color = I("lightblue"), fill = "lightgreen",
alpha = 0.25)
# ... omitted
}
改性:
function (support, hseq, dist, params)
{
discretes <- c("Poisson")
ribbon_or_bar <- ggplot2::geom_ribbon(ymin = 0,
mapping = ggplot2::aes(ymax = hseq), # new version, with ymax placed inside aes()
size = 2, color = I("lightblue"), fill = "lightgreen",
alpha = 0.25)
# ... omitted
}
plot(AB1)
应该在更改后像以前一样工作。以下是与p$priors
对应的图:plotBeta(6,4)
:plotGamma(1,1)
:关于r - ggplot2版本3.2.0和bayesAB绘图冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56649126/