这是使用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解决此问题?
答案 0 :(得分:1)
此错误是由于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)
: