Nothing
context("Missing value handling")
sc <- data.frame(x1=rnorm(3), group=factor(c("a","b","a")))
oc <- data.frame(x2=rnorm(9))
state <- ubmsSubmodel("Occ", "state", sc, ~x1+(1|group), "plogis",
uniform(-5,5), normal(0,2.5), gamma(1,1))
det <- ubmsSubmodel("Det", "det", oc, ~x2, "plogis",
uniform(-5,5), normal(0,2.5), gamma(1,1))
sl <- ubmsSubmodelList(state, det)
y <- matrix(c(1,0,0,1,1,1,0,0,1), nrow=3, byrow=T)
resp <- ubmsResponse(y, "binomial", "binomial")
sc2 <- sc
sc2$x1[1] <- NA
oc2 <- oc
oc2$x2[4] <- NA
state2 <- ubmsSubmodel("Occ", "state", sc2, ~x1+(1|group), "plogis",
uniform(-5,5), normal(0,2.5), gamma(1,1))
det2 <- ubmsSubmodel("Det", "det", oc2, ~x2, "plogis",
uniform(-5,5), normal(0,2.5), gamma(1,1))
sl2 <- ubmsSubmodelList(state2, det2)
y2 <- matrix(c(1,0,0,1,1,1,NA,0,1), nrow=3, byrow=T)
resp2 <- ubmsResponse(y2, "binomial", "binomial")
test_that("update_missing works for submodel lists",{
#No changes
expect_equivalent(update_missing(sl, resp), sl)
#With missing
sl_new <- update_missing(sl2, resp2)
expect_equal(sl_new["state"]@missing, c(T,F,F))
expect_equal(sl_new["det"]@missing, c(T,T,T,T,F,F,T,F,F))
})
test_that("setting submodel missing attribute works",{
state_new <- submodel_set_missing(sl['state'],
c(T,T,T,F,F,F,T,F,F), resp)
expect_equal(state_new@missing, c(T,F,F))
det_new <- submodel_set_missing(sl['det'],
c(T,T,T,F,F,F,T,F,F), resp)
expect_equal(det_new@missing, c(T,T,T,F,F,F,T,F,F))
})
test_that("submodel_set_missing works with transition-type parameters",{
ysc <- data.frame(x3 = rnorm(9))
col <- ubmsSubmodelTransition("Col", "col", ysc, ~x3, "plogis", 3,
uniform(-5,5), normal(0,2.5), gamma(1,1))
y3 <- y2
y3[1,] <- NA
resp3 <- ubmsResponse(y3, "binomial", "binomial", 3)
new_miss <- submodel_set_missing(col, rep(FALSE,9), resp3)@missing
expect_equal(new_miss, c(TRUE,TRUE,rep(FALSE,4)))
})
test_that("error thrown if dimensions of missing slot changes",{
ysc <- data.frame(x3 = rnorm(12))
col <- ubmsSubmodelTransition("Col", "col", ysc, ~x3, "plogis", 3,
uniform(-5,5), normal(0,2.5), gamma(1,1))
y3 <- y2
y3[1,] <- NA
resp3 <- ubmsResponse(y3, "binomial", "binomial", 3)
expect_error(submodel_set_missing(col, rep(FALSE,9), resp3))
})
test_that("update_missing works for response object",{
#No changes
expect_equivalent(update_missing(resp, sl), resp)
#With missing
resp_new <- update_missing(resp2, sl2)
expect_equivalent(resp_new@missing, c(T,T,T,T,F,F,T,F,F))
})
test_that("find_missing identifies missing values",{
miss1 <- find_missing(resp, sl)
expect_equivalent(miss1, rep(FALSE, 9))
miss2 <- find_missing(resp2, sl2)
expect_equivalent(miss2, c(T,T,T,T,F,F,T,F,F))
})
test_that("find_missing ignores transition-type parameters",{
ysc <- data.frame(x3 = rnorm(3))
col <- ubmsSubmodel("Col", "col", ysc, ~x3, "plogis",
uniform(-5,5), normal(0,2.5), gamma(1,1))
col2 <- ubmsSubmodelTransition("Col", "col", ysc, ~x3, "plogis", 3,
uniform(-5,5), normal(0,2.5), gamma(1,1))
sl3 <- ubmsSubmodelList(state2, det2, col)
sl4 <- ubmsSubmodelList(state2, det2, col2)
expect_equal(find_missing(resp, sl3), find_missing(resp, sl4))
expect_equal(find_missing(resp, sl2), find_missing(resp, sl4))
})
test_that("expand_model_matrix works correctly",{
expand1 <- expand_model_matrix(sl["state"], resp)
expected <- model.matrix(sl["state"])[rep(1:3, each=3),]
expect_equivalent(expand1, expected)
expand2 <- expand_model_matrix(sl["det"], resp)
expected <- model.matrix(sl["det"])
expect_equivalent(expand2, expected)
})
test_that("get_row_reps calculates correct replication factor",{
expect_equal(get_row_reps(sl["state"], resp), 3)
expect_equal(get_row_reps(sl["det"], resp), 1)
y3 <- matrix(c(1,0,0,1), nrow=2)
resp3 <- ubmsResponse(y3, "binomial", "binomial")
expect_error(get_row_reps(sl["det"], resp3))
expect_error(get_row_reps(sl["state"], resp3))
})
test_that("ubmsSubmodelScalar is returned unchanged by update_missing",{
sub_scalar <- ubmsSubmodelScalar("Fake", "fake", "plogis", normal(0,2.5))
sl_scalar <- ubmsSubmodelList(state, det, sub_scalar)
um <- update_missing(sl_scalar, resp2)
expect_equivalent(um@submodels$fake, sub_scalar)
})
test_that("Placeholder submodel is returned unchanged by update_missing",{
sub_place <- placeholderSubmodel("fake")
expect_true(is_placeholder(sub_place))
sl_place <- ubmsSubmodelList(state, det, sub_place)
um <- update_missing(sl_place, resp2)
expect_equivalent(um@submodels$fake, sub_place)
})
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.