Nothing
context("maFitMod")
data(biom)
anMod <- lm(resp~factor(dose)-1, data=biom)
drFit <- coef(anMod)
S <- vcov(anMod)
doses <- c(0,0.05,0.2,0.6,1)
test_that("Test input parameters of maFitMod", {
## models
expect_error(
maFitMod(doses, drFit, S),
"Need to specify the models that should be fitted")
expect_error(
maFitMod(doses, drFit, S, models = c("linear", "emax", "XYZ")),
"Invalid dose-response model specified: XYZ")
expect_error(
maFitMod(doses, drFit, S, models = c("ABC", "emax", "XYZ")),
"Invalid dose-response model specified: ABC, XYZ")
## bnds
bnds <- c(10,20)
expect_error(
maFitMod(doses, drFit, S, models = c("emax"), nSim = 10, bnds = bnds),
"bnds needs to be a list")
bnds <- defBnds(1)
bnds$emax <- NULL
expect_message(
maFitMod(doses, drFit, S, models = c("emax"), nSim = 10, bnds = bnds))
bnds$emax <- c(10,20)
tmp <- maFitMod(doses, drFit, S, models = c("emax"), nSim = 10,
bnds = bnds)
out <- sapply(tmp$fits, function(x) coef(x)[3]) # all should be in [10,20]
eps <- 0.0001
for(i in 1:10){
expect_lt(out[i], 20+eps)
expect_gt(out[i], 10-eps)
}
bnds$betaMod <- rbind(c(1,2), c(1,2))
tmp <- maFitMod(doses, drFit, S, models = c("betaMod"), nSim = 10,
bnds = bnds)
out <- sapply(tmp$fits, function(x) coef(x)[3:4]) # all should be in [1,2]
eps <- 0.0001
for(i in 1:10){
expect_lt(out[1,i], 2+eps)
expect_gt(out[1,i], 1-eps)
expect_lt(out[2,i], 2+eps)
expect_gt(out[2,i], 1-eps)
}
## addArgs
tmp <- maFitMod(doses, drFit, S, models = c("betaMod"), nSim = 10)
out <- sapply(tmp$fits, function(x) attr(x, "scal")) # should be 1.2
for(i in 1:10){
expect_equal(out[i], 1.2)
}
tmp <- maFitMod(doses, drFit, S, models = c("betaMod"), nSim = 10,
addArgs = list(scal = 200))
out <- sapply(tmp$fits, function(x) attr(x, "scal")) # should be 200
for(i in 1:10){
expect_equal(out[i], 200)
}
tmp <- maFitMod(doses, drFit, S, models = c("linlog"), nSim = 10,
addArgs = list(off = 123))
out <- sapply(tmp$fits, function(x) attr(x, "off")) # should be 123
for(i in 1:10){
expect_equal(out[i], 123)
}
})
test_that("test model fitting", {
set.seed(295)
bnds <- defBnds(max(doses))
expect_silent(fits1 <- maFitMod(doses, drFit, S, models = c("linear"), nSim = 10))
expect_silent(fits2 <- maFitMod(doses, drFit, S, models = c("linInt"), nSim = 10))
expect_silent(fits3 <- maFitMod(doses, drFit, S, models = c("emax", "sigEmax"), nSim = 10, bnds = bnds))
expect_silent(fits4 <- maFitMod(doses, drFit, S, models = c("linear", "emax", "betaMod"), nSim = 10, bnds = bnds))
expect_silent(fits5 <- maFitMod(doses, drFit, S, models = c("linear", "emax", "betaMod"), nSim = 10, bnds = bnds))
builtin <- c("linlog", "linear", "quadratic", "linInt", "emax",
"exponential", "logistic", "betaMod", "sigEmax")
expect_silent(fits6 <- maFitMod(doses, drFit, S, models = builtin, nSim = 10, bnds = bnds))
expect_true(class(fits6) == "maFit")
expect_equal(length(fits6$fits), 10)
expect_equal(length(fits6$selModels), 10)
expect_named(fits6, c("fits", "selModels", "args"))
## test print method (HOW TO TEST PRINT, WITHOUT PRINTING TO CONSOLE)
## expect_no_condition(print(fits1))
## expect_no_condition(print(fits2, digits=10))
## expect_no_condition(print(fits3))
## expect_no_condition(print(fits4)
## expect_no_condition(print(fits5))
## expect_no_condition(print(fits6))
## test prediction
expect_error(
predict(fits1),
"Need to provide doseSeq argument")
dsq <- seq(0,1,length=101)
expect_silent(p1 <- predict(fits1, doseSeq = dsq, summaryFct = NULL))
expect_silent(p2 <- predict(fits2, doseSeq = dsq, summaryFct = NULL))
expect_silent(p3 <- predict(fits3, doseSeq = dsq, summaryFct = NULL))
expect_silent(p4 <- predict(fits4, doseSeq = dsq, summaryFct = NULL))
expect_silent(p5 <- predict(fits5, doseSeq = dsq, summaryFct = NULL))
expect_silent(p6 <- predict(fits5, doseSeq = dsq, summaryFct = NULL))
expect_equal(dim(p6), c(10,101))
expect_silent(plot(fits1))
expect_silent(plot(fits2, xlab = "ABC"))
expect_silent(plot(fits3, ylab = "XYZ"))
expect_silent(plot(fits4, title = "123"))
expect_silent(plot(fits5))
expect_silent(plot(fits6))
expect_silent(plot(fits1, plotData = "none"))
expect_silent(plot(fits2, plotData = "none"))
expect_silent(plot(fits3, plotData = "none"))
expect_silent(plot(fits4, plotData = "none"))
expect_silent(plot(fits5, plotData = "none"))
expect_silent(plot(fits6, plotData = "none"))
expect_silent(plot(fits1, plotData = "meansCI"))
expect_silent(plot(fits2, plotData = "meansCI"))
expect_silent(plot(fits3, plotData = "meansCI"))
expect_silent(plot(fits4, plotData = "meansCI"))
expect_silent(plot(fits5, plotData = "meansCI"))
expect_silent(plot(fits6, plotData = "meansCI"))
expect_error(plot(fits6, title = 23),
"title needs to be a character")
expect_error(plot(fits6, trafo = 23),
"trafo needs to be a function")
## check target dose estimation
## ED
expect_error(
ED(fits5, p = 0.9)) # should fail (direction not specified)
expect_silent(ED(fits5, p = 0.9, direction = "increasing"))
expect_silent(ED(fits5, p = 0.5, direction = "increasing"))
expect_error(
ED(fits5, p = 0.9, direction = "increasing", EDtype = "discrete"))
expect_silent(ED(fits5, p = 0.9, direction = "increasing",
EDtype = "discrete", doses = doses))
expect_silent(ED(fits5, p = 0.5, direction = "increasing",
EDtype = "discrete", doses = doses))
## check decreasing direction
drFit2 <- 1-drFit
fits6 <- maFitMod(doses, drFit2, S, models = builtin, nSim = 10, bnds = bnds)
expect_true(
is.na(ED(fits6, p = 0.9, direction = "increasing")))
expect_silent(ED(fits6, p = 0.9, direction = "decreasing"))
expect_silent(ED(fits6, p = 0.5, direction = "decreasing"))
expect_silent(ED(fits6, p = 0.9, direction = "decreasing",
EDtype = "discrete", doses = doses))
expect_silent(ED(fits6, p = 0.5, direction = "decreasing",
EDtype = "discrete", doses = doses))
## TD
expect_silent(TD(fits5, Delta=0.5, direction = "increasing"))
expect_error(
TD(fits5, Delta=0.5, direction = "increasing",
TDtype = "discrete"))
expect_silent(
TD(fits5, Delta=0.5, direction = "increasing",
TDtype = "discrete", doses = doses))
expect_true(
is.na(TD(fits5, Delta=0.5, direction = "decreasing")))
})
## compare model fitting to bFitMod
## Helper function to create example data
make_example_data <- function() {
dose <- c(0, 5, 10, 20, 40)
resp <- sort(rnorm(5,0,0.1))
S <- diag(5)*rexp(5,2) + crossprod(matrix(rexp(25,10),5,5))
list(ds = dose, means = resp, vc = S)
}
test_that("Compare fits of maFitMod to bFitMod", {
bnds <- defBnds(40)
set.seed(726)
dat <- make_example_data()
builtin <- c("linlog", "linear", "quadratic", "linInt", "emax",
"exponential", "logistic", "betaMod", "sigEmax")
for(i in 1:length(builtin)){
set.seed(376)
res1 <- maFitMod(dat$ds, dat$means, S=dat$vc, models = builtin[i], nSim = 10,
bnds = bnds)
set.seed(376)
res2 <- bFitMod(dat$ds, dat$means, S=dat$vc, model = builtin[i], type = "bootstrap",
nSim = 10, bnds = bnds[[builtin[i]]])
ds <- seq(0,40,by=1)
pred0 <- predict(res1, doseSeq = ds, summaryFct = NULL)
pred1 <- apply(pred0, 2, function(x){
quantile(x, c(0.025, 0.25, 0.5, 0.75, 0.975))
})
pred2 <- predict(res2, doseSeq = ds)
rownames(pred1) <- NULL
expect_equal(pred1, pred2)
}
})
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.