tests/testthat/test-esr.R

test_that(".esr_numeric", {
  vector <- rep(1, 100)
  expect_identical(.esr_numeric(vector, na_rm = FALSE), 1)
  vector <- rep(2, 100)
  expect_identical(.esr_numeric(vector, na_rm = FALSE), 1)
  vector[1] <- NA
  expect_true(is.na(.esr_numeric(vector, na_rm = FALSE)))
  expect_identical(.esr_numeric(vector, na_rm = TRUE), 1)
  expect_equal(.esr_numeric(1:2, na_rm = FALSE), 1)
  expect_equal(.esr_numeric(1:3, na_rm = FALSE), 1)
  expect_equal(.esr_numeric(c(10, 20, 30), na_rm = FALSE), 1)
  expect_equal(.esr_numeric(1:4, na_rm = FALSE), 2 / 3)
  expect_equal(.esr_numeric(1:5, na_rm = FALSE), 0.555555555555556)
  expect_equal(.esr_numeric(1:10, na_rm = FALSE), 0.283993115318416)
  set.seed(42)
  x <- rnorm(10)
  expect_equal(.esr_numeric(x, na_rm = FALSE), 1)
})

test_that("esr.matrix", {
  matrix <- matrix(1, nrow = 2, ncol = 1000)
  expect_identical(.esr(matrix, na_rm = FALSE), 1)
  matrix[1, ] <- 2
  expect_identical(.esr(matrix, na_rm = FALSE), 1)
  matrix[1, 1] <- NA
  expect_true(is.na(.esr_numeric(matrix, na_rm = FALSE)))
  expect_identical(.esr_numeric(matrix, na_rm = TRUE), 1)
})

test_that("esr.mcmcmarray", {
  expect_identical(esr(mcmcr_example[[1]], by = "term"), c(0.011, 0.011))
  expect_equal(
    esr(mcmcr_example[[2]], by = "term"),
    matrix(c(0.05, 0.05, 0.05, 0.05), nrow = 2, ncol = 2)
  )
  expect_identical(
    esr(mcmcr_example[[2]], by = "term", as_df = TRUE),
    tibble(
      term = as_term(c(
        "parameter[1,1]",
        "parameter[2,1]",
        "parameter[1,2]",
        "parameter[2,2]"
      )),
      esr = rep(0.05, 4)
    )
  )
  expect_identical(esr(mcmcr_example[[3]], by = "term"), c(0.472))
  expect_identical(
    esr(mcmcr_example[[3]], by = "term", as_df = TRUE),
    tibble(term = as_term("parameter"), esr = 0.472)
  )
  expect_identical(esr(mcmcr_example[[2]]), 0.05)
  expect_identical(
    esr(mcmcr_example[[2]], "parameter"),
    esr(mcmcr_example[[2]], "all")
  )
  expect_identical(
    esr(subset(mcmcr_example[[2]], iters = 1L), by = "term", as_df = TRUE),
    tibble(
      term = as_term(c(
        "parameter[1,1]",
        "parameter[2,1]",
        "parameter[1,2]",
        "parameter[2,2]"
      )),
      esr = rep(1, 4)
    )
  )
})

test_that("esr.mcarray", {
  mcarray <- as.mcarray(mcmcr::mcmcr_example[[2]])
  expect_identical(esr(mcarray), 0.05)
  expect_identical(
    esr(mcarray, as_df = TRUE),
    tibble(parameter = "parameter", esr = 0.05)
  )
  expect_identical(esr(mcarray, by = "parameter"), 0.05)
  expect_equal(
    esr(mcarray, by = "term"),
    matrix(c(0.05, 0.05, 0.05, 0.05), nrow = 2)
  )
  expect_equal(
    esr(mcarray, by = "term", as_df = TRUE),
    tibble(
      term = as_term(c(
        "parameter[1,1]",
        "parameter[2,1]",
        "parameter[1,2]",
        "parameter[2,2]"
      )),
      esr = c(0.05, 0.05, 0.05, 0.05)
    )
  )
})

test_that("esr.mcmc", {
  mcmc <- as.mcmc(subset(mcmcr::mcmcr_example, chains = 2L))
  expect_identical(esr(mcmc), 0.01)
  expect_identical(esr(mcmc, as_df = TRUE), tibble(all = "all", esr = 0.01))
  expect_identical(
    esr(mcmc, by = "parameter"),
    list(alpha = 0.01, beta = 0.062, sigma = 0.474)
  )
  expect_equal(
    esr(mcmc, by = "term"),
    list(
      alpha = c(0.01, 0.01),
      beta = matrix(c(0.062, 0.062, 0.062, 0.062), nrow = 2, ncol = 2),
      sigma = 0.474
    )
  )
  expect_equal(
    esr(mcmc, by = "term", as_df = TRUE),
    tibble(
      term = as_term(c(
        "alpha[1]",
        "alpha[2]",
        "beta[1,1]",
        "beta[2,1]",
        "beta[1,2]",
        "beta[2,2]",
        "sigma"
      )),
      esr = c(0.01, 0.01, 0.062, 0.062, 0.062, 0.062, 0.474)
    )
  )
})

test_that("esr.mcmc.list", {
  expect_identical(esr(as.mcmc.list(mcmcr::mcmcr_example)), 0.011)
  expect_identical(
    esr(as.mcmc.list(mcmcr::mcmcr_example), as_df = TRUE),
    tibble(all = "all", esr = 0.011)
  )
  expect_identical(
    esr(as.mcmc.list(mcmcr::mcmcr_example), by = "parameter"),
    list(alpha = 0.011, beta = 0.05, sigma = 0.472)
  )
  expect_equal(
    esr(as.mcmc.list(mcmcr::mcmcr_example), by = "term"),
    list(
      alpha = c(0.011, 0.011),
      beta = matrix(c(0.05, 0.05, 0.05, 0.05), nrow = 2, ncol = 2),
      sigma = 0.472
    )
  )
  expect_equal(
    esr(as.mcmc.list(mcmcr::mcmcr_example), by = "term", as_df = TRUE),
    tibble(
      term = as_term(c(
        "alpha[1]",
        "alpha[2]",
        "beta[1,1]",
        "beta[2,1]",
        "beta[1,2]",
        "beta[2,2]",
        "sigma"
      )),
      esr = c(0.011, 0.011, 0.05, 0.05, 0.05, 0.05, 0.472)
    )
  )
})


test_that("esr.mcmcr", {
  expect_identical(esr(mcmcr_example2), 0.011)
  expect_identical(esr(mcmcr_example), 0.011)
  expect_identical(
    esr(mcmcr_example, as_df = TRUE),
    tibble(all = "all", esr = 0.011)
  )
  expect_identical(
    esr(mcmcr_example, by = "parameter"),
    list(alpha = 0.011, beta = 0.05, sigma = 0.472)
  )
  expect_equal(
    esr(mcmcr_example, by = "term"),
    list(
      alpha = c(0.011, 0.011),
      beta = matrix(c(0.05, 0.05, 0.05, 0.05), nrow = 2, ncol = 2),
      sigma = 0.472
    )
  )
  expect_equal(
    esr(mcmcr_example, by = "term", as_df = TRUE),
    tibble(
      term = as_term(c(
        "alpha[1]",
        "alpha[2]",
        "beta[1,1]",
        "beta[2,1]",
        "beta[1,2]",
        "beta[2,2]",
        "sigma"
      )),
      esr = c(0.011, 0.011, 0.05, 0.05, 0.05, 0.05, 0.472)
    )
  )
})

test_that("esr.mcmcr NA", {
  x <- mcmcr:::mcmcr_example2
  x$alpha[1, 1, 1, 1, 1] <- NA_real_
  expect_identical(esr(x), NA_real_)
  expect_identical(esr(x, na_rm = TRUE), 0.011)
  expect_identical(
    esr(x, by = "parameter"),
    list(alpha = NA_real_, beta = 0.05, sigma = 0.472)
  )
  expect_identical(
    esr(x, by = "parameter", na_rm = TRUE),
    list(alpha = 0.011, beta = 0.05, sigma = 0.472)
  )
})

test_that("esr.mcmcr constant", {
  x <- mcmcr::mcmcr_example
  x$sigma[,, 1] <- 0

  expect_identical(esr(x$sigma), 1)

  expect_identical(esr(x), 0.011)
})

test_that("esr.mcmcrs", {
  expect_identical(
    esr(mcmcrs(mcmcr_example, mcmcr_example)),
    list(mcmcr1 = 0.011, mcmcr2 = 0.011)
  )
})

test_that("esr.mcmcarray constant", {
  x <- structure(
    rep(-0.75377180237638, 300),
    dim = c(3L, 100L, 1L),
    class = "mcmcarray"
  )
  expect_identical(esr(x), 1)
  x <- structure(
    rep(-0.75377180237638, 30),
    dim = c(3L, 10L, 1L),
    class = "mcmcarray"
  )
  expect_identical(esr(x), 1)
})

Try the mcmcr package in your browser

Any scripts or data that you put into this service are public.

mcmcr documentation built on Aug. 30, 2026, 5:06 p.m.