tests/testthat/test-opt_design.R

test_that("opt_design works", {
  design1 <- setup_fujikawa(k = 3, p0 = 0.2)
  scenarios <- get_scenarios(design = design1, p1 = 0.5)

  set.seed(20230517)
  # Wihout simulated data
  res1 <- opt_design(design = design1, n = 10, alpha = 0.05,
    design_params = list(epsilon = c(1, 2), tau = 0, logbase = exp(1)),
    scenarios = scenarios, prec_digits = 3)

  ecdres1 <- ecd(design = design1, n = 10, p1 = c(0.2, 0.2, 0.5),
    lambda = res1[1, 4], design_params = list(epsilon = 2, tau = 0,
      logbase = exp(1)))

  expect_equal(mean(as.numeric(res1[1, 5:8])), unname(res1[1, 9]))
  expect_true(abs(res1[1, 6] - ecdres1) < 0.1)

  design2 <- setup_mmlglobal(k = 3, p0 = 0.2)
  res2 <- opt_design(design = design2, n = 10, alpha = 0.05,
    scenarios = scenarios, prec_digits = 3)

  ecdres2 <- ecd(design = design2, n = 10, p1 = c(0.2, 0.2, 0.5),
    lambda = as.numeric(res2[1, 1]))

  expect_equal(mean(as.numeric(res2[1, 2:5])), unname(res2[1, 6]))
  expect_true(abs(res2[1, 3] - ecdres2) < 0.1)

  # With simulated data
  scenario_list <- as.list(data.frame(scenarios))
  data_list <- lapply(scenario_list,
    function(x) get_data(k = 3, n = 15, p = x, iter = 100))
  res3 <- opt_design(design = design1, n = 15, alpha = 0.05,
    design_params = list(epsilon = c(1, 2), tau = 0), scenarios = scenarios,
    prec_digits = 3, data = data_list, iter = 100)
  res4 <- opt_design(design = design1, n = 15, alpha = 0.05,
    design_params = list(epsilon = c(1, 2), tau = 0), scenarios = scenarios,
    prec_digits = 3, data = data_list, iter = 100)

  # Check if results are equal when opt_design is called two times with
  # the same simulate data
  expect_true(all(res3 == res4))

  lambdares <- adjust_lambda(design = design1, n = 15, p1 = NULL, alpha = 0.05,
    design_params = list(epsilon = 2, tau = 0), iter = 100, prec_digits = 3,
    data = data_list[[1]])
  ecdres <- ecd(design = design1, n = 15, p1 = 0.2, lambda = lambdares$lambda,
    design_params = list(epsilon = 2, tau = 0), iter = 100,
    data = data_list[[1]])

  expect_equal(lambdares$lambda, res3$Lambda[1])
  expect_equal(res3[1, 4], ecdres)
})

Try the basksim package in your browser

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

basksim documentation built on June 24, 2024, 5:13 p.m.