tests/testthat/test-identifiability_checks.R

context("MPTinR: Identifiability of individual parameters")

test_that("Non-identified parameters are excluded", {

  testthat::skip_on_cran()
  testthat::skip_on_travis()

  op <- mpt_options()
  mpt_options("default")
  mpt_options(
    bootstrap_samples = 100
    , n.optim = 20
    , n.CPU = 1
  )

  EQN_FILE <- system.file("extdata", "prospective_memory.eqn", package = "MPTmultiverse")
  DATA_FILE <- system.file("extdata", "smith_et_al_2011.csv", package = "MPTmultiverse")



  data <- read.csv(DATA_FILE, fileEncoding = "UTF-8-BOM")
  data <- data[c(10:15, 110:115),]
  COL_CONDITION <- "WM_EX"
  data[[COL_CONDITION]] <- factor(
    data[[COL_CONDITION]]
    , levels = 1:2
    , labels = c("low_WM", "high_WM")
  )

  set.seed(99L)

  testthat::expect_warning(only_pb <- fit_mpt(
    method = "pb_no"
    , dataset = DATA_FILE
    , data = data
    , model = EQN_FILE
    , condition = COL_CONDITION
  ), "MPTinR-no: IDs and parameters with pb-CIs > 0.99 (i.e., non-identified)",
  fixed = TRUE)

  mpt_options(n.optim = 20)

  set.seed(99L)
  only_asymptotic <- fit_mpt(
    method = "asymptotic_no"
    , dataset = DATA_FILE
    , data = data
    , model = EQN_FILE
    , condition = COL_CONDITION
  )

  expect_equivalent(only_pb$est_indiv[[1]]$est,
                    only_asymptotic$est_indiv[[1]]$est,
                    tolerance = 0.001)

  expect_false(isTRUE(all.equal(only_pb$est_indiv[[1]]$se,
                                only_asymptotic$est_indiv[[1]]$se,
                                tolerance = 0.001)))
  ## check for group estimates
  expect_false(isTRUE(all.equal(
    only_pb$est_group[[1]]$est,
    only_asymptotic$est_group[[1]]$est,
    tolerance = 0.001)))

  ## check for group differences
  expect_false(isTRUE(all.equal(
    only_pb$test_between[[1]]$est_diff,
    only_asymptotic$test_between[[1]]$est_diff,
    tolerance = 0.001)))

  mpt_options(op)  # reset options
})
mpt-network/MPTmultiverse documentation built on May 25, 2023, 4:10 p.m.