tests/testthat/test-bridges.R

test_that("Constructing target distribution from log density formula works", {
  log_density_formula <- ~ -(x^2 + y^2 + z^2) / 2
  target_distribution <- target_distribution_from_log_density_formula(
    log_density_formula
  )
  check_target_distribution(target_distribution)
  withr::with_seed(seed = default_seed(), position <- rnorm(3))
  check_log_density_and_gradient(
    position, target_distribution, function(x) -sum(x^2) / 2
  )
  trace_values <- target_distribution$trace_function(chain_state(position))
  expect_named(trace_values, c("x", "y", "z", "log_density"))
  expect_equal(
    trace_values, c(position, -sum(position^2) / 2),
    ignore_attr = TRUE
  )
})

test_that("Using sample_chains with formula as target_distribution works", {
  log_density_formula <- ~ -(x^2 + y^2 + z^2) / 2
  dimension <- 3
  n_warm_up_iteration <- 50
  n_main_iteration <- 50
  results <- sample_chain(
    target_distribution = log_density_formula,
    initial_state = rep(0, dimension),
    n_warm_up_iteration = n_warm_up_iteration,
    n_main_iteration = n_main_iteration
  )
  expect_named(
    results,
    c("final_state", "traces", "statistics"),
    ignore.order = TRUE,
  )
  expect_nrow(results$traces, n_main_iteration)
  expect_ncol(results$traces, dimension + 1)
  expect_nrow(results$statistics, n_main_iteration)
  expect_ncol(results$statistics, 1)
})

Try the rmcmc package in your browser

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

rmcmc documentation built on April 3, 2025, 5:27 p.m.