context("Test imputation")
test_that("Imputation works", {
d <- 3
f <- function(x) {sin(x[1]) * x[2]}
cg <- CGGPcreate(d, 100)
# 1 NA
Y <- apply(cg$design, 1, f)
Y[90] <- NA
expect_error(CGGPfit(cg, Y), NA)
# 5 NA
Y <- apply(cg$design, 1, f)
Y[84:88] <- NA
expect_error(CGGPfit(cg, Y), NA)
# 9 NA, the 9 after base block
Y <- apply(cg$design, 1, f)
Y[2:10] <- NA
expect_error(CGGPfit(cg, Y), NA)
# Impute last 15. Check predictions work and aren't NA.
Y <- apply(cg$design, 1, f)
Y[2:10] <- NA
expect_error(cg2 <- CGGPfit(cg, Y), NA)
expect_error(cg2pred <- CGGPpred(cg2, cg2$design*.5+.2), NA)
expect_true(all(!is.na(cg2pred$mean)))
expect_true(all(!is.na(cg2pred$var)))
})
test_that("Imputation works on multidim output", {
d <- 3
f <- function(x) {t1 <- sin(x[1]) * x[2] + .3*exp(x[3]); c(t1, t1^1.1)}
cg <- CGGPcreate(d, 100)
# 1 NA
Y <- t(apply(cg$design, 1, f))
Y[90,1] <- NA
expect_error(CGGPfit(cg, Y), NA)
# 5 NA
Y <- t(apply(cg$design, 1, f))
Y[84:88, 1:2] <- NA
expect_error(CGGPfit(cg, Y), NA)
# Impute some. Check predictions work and aren't NA.
Y <- t(apply(cg$design, 1, f))
Y[82:90,1] <- NA
expect_error(cg2 <- CGGPfit(cg, Y), NA)
expect_error(cg2pred <- CGGPpred(cg2, cg2$design*.5+.2), NA)
expect_true(all(!is.na(cg2pred$mean)))
expect_true(all(!is.na(cg2pred$var)))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.