Nothing
## Implausibility calculations
## Deterministic emulators
test_that("Implausibility with no cutoff" ,{
n_imps <- nth_implausible(SIREmulators$ems,
SIRSample$validation,
SIREmulators$targets)
expect_equal(
n_imps[[1]],
c(nth_implausible(SIREmulators$ems,
SIRSample$validation[1,],
SIREmulators$targets), use.names = FALSE)
)
expect_equal(
length(n_imps),
nrow(SIRSample$validation)
)
})
test_that("Implausibility with cutoff", {
n_imps_lgl <- nth_implausible(SIREmulators$ems,
SIRSample$validation,
SIREmulators$targets,
cutoff = 3)
expect_true(
isTRUE(all(is.logical(n_imps_lgl)))
)
expect_equal(
sum(n_imps_lgl),
3
)
})
test_that("Nth maximum implausibility", {
ems <- SIREmulators$ems
pts <- SIRSample$validation
targ <- SIREmulators$targets
imps1 <- nth_implausible(ems, pts, targ)
imps2 <- nth_implausible(ems, pts, targ, n = 2)
imps3 <- nth_implausible(ems, pts, targ, n = 3)
expect_true(
sum(imps1 <= 3) <= sum(imps2 <= 3)
)
expect_true(
sum(imps2 <= 3) <= sum(imps3 <= 3)
)
expect_equal(
imps2 <= 3,
nth_implausible(ems, pts, targ, cutoff = 3, n = 2)
)
})
test_that("Warn if nth too large", {
expect_warning(
nth_implausible(
SIREmulators$ems,
SIRSample$validation,
SIREmulators$targets,
n = 4
),
paste("n cannot be greater than the number of targets to match to.",
"Switching to minimum implausibility.")
)
})
test_that("Warning if target is misspecified", {
fake_targets <- SIREmulators$targets
fake_targets$nI <- 169
expect_warning(
nth_implausible(SIREmulators$ems, SIRSample$validation, fake_targets),
"Target nI is a single value. Assuming it's a val with sigma = 5%."
)
})
test_that("Automatic 2nd max works", {
fake_targets <- setNames(rep(SIREmulators$targets, 4), paste0("X", 1:12))
fake_ems <- c()
for (i in 1:12) {
em_to_clone <- SIREmulators$ems[[(i-1) %% 3 + 1]]
fake_ems <- c(fake_ems, em_to_clone$clone())
fake_ems[[i]]$output_name <- paste0("X", i)
}
expect_equal(
nth_implausible(fake_ems, SIRSample$validation, fake_targets),
nth_implausible(fake_ems, SIRSample$validation, fake_targets, n = 2)
)
expect_equal(
nth_implausible(fake_ems, SIRSample$validation, fake_targets),
nth_implausible(SIREmulators$ems,
SIRSample$validation,
SIREmulators$targets, n = 1)
)
})
test_that("Sequential implausibility works as expected", {
expect_equal(
nth_implausible(SIREmulators$ems,
SIRSample$validation,
SIREmulators$targets,
cutoff = 3, n = 2,
sequential = TRUE),
c(nth_implausible(SIREmulators$ems,
SIRSample$validation,
SIREmulators$targets,
cutoff = 3, n = 2), use.names = FALSE)
)
})
test_that("Processed raw = TRUE is same as raw = FALSE", {
raw_imps <- nth_implausible(SIREmulators$ems,
SIRSample$validation,
SIREmulators$targets,
get_raw = TRUE)
expect_equal(
apply(raw_imps, 1, max),
nth_implausible(SIREmulators$ems,
SIRSample$validation,
SIREmulators$targets)
)
})
test_that("Fails if an emulator is without a target", {
expect_error(
nth_implausible(
SIREmulators$ems[[1]],
SIRSample$validation,
SIREmulators$targets[-1]
),
)
})
## Variance Emulation
var_em <- emulator_from_data(BirthDeath$training, c('Y'),
list(lambda = c(0, 0.08), mu = c(0.04, 0.13)),
emulator_type = "variance", verbose = FALSE)
test_that("Variance emulation implausibility basics", {
var_target <- list(Y = c(90, 110))
var_points <- unique(BirthDeath$validation[,c('lambda', 'mu')])
var_imps <- nth_implausible(var_em, var_points, var_target)
expect_equal(
length(var_imps),
nrow(var_points)
)
expect_equal(
sum(var_imps <= 3),
sum(nth_implausible(var_em, var_points, var_target, cutoff = 3))
)
})
test_that("Different combinations of variance targets and emulators", {
variance_targets <- list(
expectation = list(Y = c(90, 110)),
variance = list(Y = c(30, 35))
)
var_points <- unique(BirthDeath$validation[,c('lambda', 'mu')])
expect_equal(
ncol(nth_implausible(var_em, var_points, variance_targets, get_raw = TRUE)),
2
)
expect_equal(
apply(nth_implausible(var_em, var_points, variance_targets, get_raw = TRUE), 1, max),
nth_implausible(var_em, var_points, variance_targets)
)
expect_equal(
nth_implausible(var_em$expectation, var_points, variance_targets),
nth_implausible(var_em$expectation, var_points, variance_targets$expectation)
)
})
## Bimodal Emulation
bim_targets <- list(
I10 = list(val = 35, sigma = 3.5),
I25 = list(val = 147, sigma = 14.7),
I50 = list(val = 55, sigma = 5.5),
R10 = list(val = 29, sigma = 2.9),
R25 = list(val = 276, sigma = 27.6),
R50 = list(val = 579, sigma = 57.9)
)
bim_em <- emulator_from_data(SIR_stochastic$training, names(bim_targets),
SIREmulators$ems[[1]]$ranges, verbose = FALSE,
emulator_type = "multistate")
test_that("Bimodal emulation basics", {
bim_points <- unique(SIR_stochastic$validation[,names(SIREmulators$ems[[1]]$ranges)])
expect_equal(
sort(names(nth_implausible(bim_em, bim_points, bim_targets, get_raw = TRUE))),
sort(names(bim_targets))
)
})
test_that("Separated modes: same result", {
bim_points <- unique(SIR_stochastic$validation[,names(SIREmulators$ems[[1]]$ranges)])
first_imps <- nth_implausible(bim_em$mode1, bim_points, bim_targets, get_raw = TRUE)
second_imps <- nth_implausible(bim_em$mode2, bim_points, bim_targets, get_raw = TRUE)
expect_equal(
apply(as.data.frame(Map(pmin, first_imps, second_imps[,names(first_imps)])), 1, max),
nth_implausible(bim_em, bim_points, bim_targets)
)
})
### Point proposal - makes more sense here since emulators are trained
test_that("Bimodal point proposal", {
skip_on_cran()
bim_points <- generate_new_design(
bim_em,
100,
bim_targets,
resample = 0, verbose = FALSE
)
expect_equal(
nrow(bim_points),
100
)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.