library(metaBMA)
library(testthat)
set.seed(123452)
SE <- runif(20, .3, 1.3)
d <- data.frame(yyy = rnorm(20), SE = SE, study = 1:20)
d$xx <- rnorm(20, d$yyy, 1)
d$cat <- rep(c("a", "b"), 10)
test_that("JZS works for continuous predictors", {
suppressWarnings( # Savage Dickey warning
fe_xx <- meta_fixed(yyy ~ xx, SE, study, data = d, logml = "s", summ = "s", iter = 1000)
)
expect_true(fe_xx$jzs$centering) # default: centering
expect_equal(rownames(fe_xx$estimates), c("d", "beta_xx")) # posterior summary statistics for slope
plot_posterior(fe_xx)
skip_on_cran()
fe <- meta_fixed(yyy, SE, study, data = d, rel.tol = .01)
expect_silent(bm <- bma(list("fixed_w" = fe_xx, "fixed_wo" = fe), summ = "integrate"))
expect_silent(plot_posterior(bm))
expect_silent(bm <- inclusion(list("fixed" = fe_xx, "random" = fe), include = "H1"))
re_xx <- meta_random(yyy ~ xx, SE, study, data = d, logml = "s", summ = "s", iter = 1000)
expect_true(re_xx$jzs$centering)
expect_equal(rownames(re_xx$estimates), c("d", "tau", "beta_xx"))
plot_posterior(re_xx)
s1 <- summary(re_xx$stanfit)$summary[c("d", "tau", "beta[1]"), c(1, 3:8)]
s2 <- summary(re_xx$stanfit_dstudy)$summary[c("d", "tau", "beta[1]"), c(1, 3:8)]
expect_equal(s1, s2, tolerance = .02)
# compare meta_random() to metafor::rma()
# d$xx.c <- scale(d$xx, scale = FALSE)
# metafor::rma(yyy, sei = SE, mod = ~ xx, data = d)
})
test_that("JZS works for discrete predictors", {
skip_on_cran()
set.seed(1234)
suppressWarnings({
fe_xx <- meta_fixed(yyy ~ cat, SE, study, data = d, logml = "s", summ = "s", iter = 100)
re_xx <- meta_random(yyy ~ cat, SE, study, data = d, logml = "s", summ = "s", iter = 1000, logml_iter = 1000)
})
expect_equal(rownames(fe_xx$estimates), c("d", "beta_cat1"))
expect_equal(rownames(re_xx$estimates), c("d", "tau", "beta_cat1"))
expect_silent(bm <- bma(list(fe_xx, re_xx)))
s1 <- summary(re_xx$stanfit)$summary[c("d", "tau", "beta[1]"), c(1, 3:8)]
s2 <- summary(re_xx$stanfit_dstudy)$summary[c("d", "tau", "beta[1]"), c(1, 3:8)]
expect_equal(s1, s2, tolerance = .05)
})
test_that("JZS works for continuous + discrete predictors", {
skip_on_cran()
suppressWarnings(
fe_both <- meta_fixed(yyy ~ cat + xx, SE, study,
data = d, logml = "s",
summ = "s", iter = 10
)
)
expect_equal(rownames(fe_both$estimates), c("d", "beta_xx", "beta_cat1"))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.