richarddmorey / BayesFactor

BayesFactor R package for Bayesian data analysis with common statistical models.
https://richarddmorey.github.io/BayesFactor/
131 stars 48 forks source link

Set.seed does dot work with multicore option in anovaBF #153

Open karlosluna opened 3 years ago

karlosluna commented 3 years ago

Hi!

Package BayesFactor 0.9.12.4.2.

I was trying to conduct a 2x2 Bayesian ANOVA and I found that the multicore option disables or does not work well with set.seed. set.seed allows to replicate the results of the Bayesian ANOVA, but if the multicore option is added, then the results are no longer replicable. Here is an example:

Load the required package:

library(doMC)

Generate random data that (more or less) mimic my actual data:

rnorm2 <- function(n,mean,sd) { mean+sd*scale(rnorm(n)) } vd1 <- rnorm2(50,70,10) vd2 <- rnorm2(50,30,20)

a <- factor(rep(rep(1:2, each=25), 2), label=c("A1", "A2")) b <- factor(rep(1:2, each=50), label=c("B1", "B2")) part <- factor(rep(1:50, 2)) vd <- c(vd1, vd2) df <- data.frame(part, a, b, vd)

I use a low number of iterations because my computer is old and there is no need to wait for computations.

Without multicore. Run a couple of times and verify that the results replicate.

set.seed(2021) bf = anovaBF(vd ~ a * b + part, data=df, whichRandom = "part", iterations = 50) bf

With multicore. Run a couple of times and verify that the results do not replicate.

set.seed(2021) bf = anovaBF(vd ~ a * b + part, data=df, whichRandom = "part", iterations = 50, multicore = TRUE) bf

I have no questions, just wanted to inform the developer about this.

richarddmorey commented 3 years ago

Thanks, I'll look into it!