if (require("rstanarm") && require("BayesFactor") && require("testthat") && require("insight") && require("httr") && require("brms")) { # bayesfactor_parameters data frame --------------------------------------- test_that("bayesfactor_parameters data frame", { Xprior <- data.frame( x = distribution_normal(1e4), y = distribution_normal(1e4) ) Xposterior <- data.frame( x = distribution_normal(1e4, mean = 0.5), y = distribution_normal(1e4, mean = -0.5) ) # point bfsd <- bayesfactor_parameters(Xposterior, prior = Xprior, null = 0, direction = 0) expect_equal(bfsd$log_BF, c(0.12, 0.12), tolerance = 0.1) bfsd <- bayesfactor_parameters(Xposterior, prior = Xprior, null = 0, direction = 1) expect_equal(bfsd$log_BF, c(0.44, -0.35), tolerance = 0.1) bfsd <- bayesfactor_parameters(Xposterior, prior = Xprior, null = 0, direction = -1) expect_equal(bfsd$log_BF, c(-0.35, 0.44), tolerance = 0.1) bfsd <- bayesfactor_parameters(Xposterior, prior = Xprior, null = 0.5, direction = 0) expect_equal(bfsd$log_BF, c(-0.12, 0.37), tolerance = 0.1) expect_warning(bfsd <- bayestestR::bayesfactor_parameters(Xposterior)) expect_equal(bfsd$log_BF, c(0, 0), tolerance = 0.1) # interval bfsd <- bayesfactor_parameters(Xposterior, prior = Xprior, null = c(-.1, .1), direction = 0) expect_equal(bfsd$log_BF, c(0.13, 0.13), tolerance = 0.1) bfsd <- bayesfactor_parameters(Xposterior, prior = Xprior, null = c(-.1, .1), direction = 1) expect_equal(bfsd$log_BF, c(0.47, -0.39), tolerance = 0.1) bfsd <- bayesfactor_parameters(Xposterior, prior = Xprior, null = c(-.1, .1), direction = -1) expect_equal(bfsd$log_BF, c(-0.39, 0.47), tolerance = 0.1) # interval with inf bfsd <- bayesfactor_parameters(Xposterior, prior = Xprior, null = c(-.1, Inf)) expect_equal(bfsd$log_BF, c(-0.81, 0.80), tolerance = 0.1) bfsd <- bayesfactor_parameters(Xposterior, prior = Xprior, null = c(-Inf, .1)) expect_equal(bfsd$log_BF, c(0.80, -0.81), tolerance = 0.1) }) # bayesfactor_parameters RSTANARM ----------------------------------------- test_that("bayesfactor_parameters RSTANARM", { skip_on_cran() fit <- stan_glm(mpg ~ ., data = mtcars, refresh = 0) set.seed(333) fit_p <- unupdate(fit) BF2 <- bayesfactor_parameters(fit, fit_p) set.seed(333) BF1 <- bayesfactor_parameters(fit) expect_equal(BF1, BF2) model_flat <- stan_glm(extra ~ group, data = sleep, prior = NULL, refresh = 0) expect_error(bayesfactor_parameters(model_flat)) }) # bayesfactor_parameters BRMS --------------------------------------------- # .runThisTest <- Sys.getenv("RunAllbayestestRTests") == "yes" # if (.runThisTest) { # test_that("bayesfactor_parameters BRMS", { # skip_on_cran() # # brms_mixed_6 <- insight::download_model("brms_mixed_6") # # set.seed(222) # brms_mixed_6_p <- unupdate(brms_mixed_6) # bfsd1 <- bayesfactor_parameters(brms_mixed_6, brms_mixed_6_p, effects = "fixed") # # set.seed(222) # bfsd2 <- bayesfactor_parameters(brms_mixed_6, effects = "fixed") # # expect_equal(log(bfsd1$BF), log(bfsd2$BF), tolerance = .11) # # # brms_mixed_1 <- insight::download_model("brms_mixed_1") # expect_error(bayesfactor_parameters(brms_mixed_1)) # }) # } }