context("Fitting of parent only models")
calc_dev.percent <- function(fitlist, reference) {
for (i in 1:length(fitlist)) {
fit <- fitlist[[i]]
results <- c(fit$bparms.optim,
endpoints(fit)$distimes$DT50,
endpoints(fit)$distimes$DT90)
dev.percent[[i]] <- abs(100 * ((reference - results)/reference))
}
return(dev.percent)
}
SFO <- mkinmod(parent = list(type = "SFO"))
FOMC <- mkinmod(parent = list(type = "FOMC"))
test_that("SFO fit for FOCUS A deviates less than 0.1% from median of values from FOCUS report", {
fits.A.SFO <- list()
fits.A.SFO[[1]] <- mkinfit("SFO", FOCUS_2006_A, quiet=TRUE)
fits.A.SFO[[2]] <- mkinfit(SFO, FOCUS_2006_A, quiet=TRUE)
fits.A.SFO[[3]] <- mkinfit(SFO, FOCUS_2006_A, quiet=TRUE, solution_type = "eigen")
fits.A.SFO[[4]] <- mkinfit(SFO, FOCUS_2006_A, quiet=TRUE, solution_type = "deSolve")
median.A.SFO <- as.numeric(lapply(subset(FOCUS_2006_SFO_ref_A_to_F,
dataset == "A",
c(M0, k, DT50, DT90)), "median"))
dev.percent <- calc_dev.percent(fits.A.SFO, median.A.SFO)
expect_equivalent(dev.percent[[1]] < 0.1, rep(TRUE, 4))
expect_equivalent(dev.percent[[2]] < 0.1, rep(TRUE, 4))
expect_equivalent(dev.percent[[3]] < 0.1, rep(TRUE, 4))
expect_equivalent(dev.percent[[4]] < 0.1, rep(TRUE, 4))
})
test_that("SFO fit for FOCUS C deviates less than 0.1% from median of values from FOCUS report", {
fits.C.SFO <- list()
fits.C.SFO[[1]] <- mkinfit("SFO", FOCUS_2006_C, quiet=TRUE)
fits.C.SFO[[2]] <- mkinfit(SFO, FOCUS_2006_C, quiet=TRUE)
fits.C.SFO[[3]] <- mkinfit(SFO, FOCUS_2006_C, quiet=TRUE, solution_type = "deSolve")
median.C.SFO <- as.numeric(lapply(subset(FOCUS_2006_SFO_ref_A_to_F,
dataset == "C",
c(M0, k, DT50, DT90)), "median"))
dev.percent <- calc_dev.percent(fits.C.SFO, median.C.SFO)
expect_equivalent(dev.percent[[1]] < 0.1, rep(TRUE, 4))
expect_equivalent(dev.percent[[2]] < 0.1, rep(TRUE, 4))
expect_equivalent(dev.percent[[3]] < 0.1, rep(TRUE, 4))
})