Nothing
# Author: Quentin Grimonprez
context("Bootstrap functions")
test_that("getSignReference works", {
alpha <- list(matrix(1:9, nrow = 3), matrix(-1 * (9:1), nrow = 3), matrix(c(1:5, 4:1), nrow = 3))
expectedOut <- list(
position = c(9, 1, 5), isNegative = c(FALSE, TRUE, FALSE),
allNegative = list(
matrix(1:9, nrow = 3) < 0,
matrix(-1 * (9:1), nrow = 3) < 0,
matrix(c(1:5, 4:1), nrow = 3) < 0
)
)
out <- getSignReference(alpha)
expect_equal(out, expectedOut)
})
test_that("unifySign works when all are present", {
ref <- list(position = c(9, 1, 5), isNegative = c(FALSE, TRUE, FALSE))
encod <- list(
list(
alpha = list(matrix(1:9, nrow = 3), matrix(1:9, nrow = 3), matrix(1:9, nrow = 3)),
pc = matrix(1:9, nrow = 3)
),
list(
alpha = list(matrix(-1 * (9:1), nrow = 3), matrix(-1 * (9:1), nrow = 3), matrix(-1 * (9:1), nrow = 3)),
pc = matrix(-1 * (9:1), nrow = 3)
)
)
expectedOut <- list(
list(
alpha = list(matrix(1:9, nrow = 3), matrix(-1 * (1:9), nrow = 3), matrix(1:9, nrow = 3)),
pc = matrix(c(1:3, -4, -5, -6, 7:9), nrow = 3)
),
list(
alpha = list(matrix((9:1), nrow = 3), matrix(-1 * (9:1), nrow = 3), matrix((9:1), nrow = 3)),
pc = matrix(c(9:7, -6, -5, -4, 3:1), nrow = 3)
)
)
out <- unifySign(encod, ref)
expect_equal(out, expectedOut)
})
test_that("unifySign works when there are some NULL elements", {
ref <- list(position = c(9, 1, 5), isNegative = c(FALSE, TRUE, FALSE))
encod <- list(
list(
alpha = list(matrix(1:9, nrow = 3), matrix(1:9, nrow = 3), matrix(1:9, nrow = 3)),
pc = matrix(1:9, nrow = 3)
),
NULL,
list(
alpha = list(matrix(-1 * (9:1), nrow = 3), matrix(-1 * (9:1), nrow = 3), matrix(-1 * (9:1), nrow = 3)),
pc = matrix(-1 * (9:1), nrow = 3)
)
)
expectedOut <- list(
list(
alpha = list(matrix(1:9, nrow = 3), matrix(-1 * (1:9), nrow = 3), matrix(1:9, nrow = 3)),
pc = matrix(c(1:3, -4, -5, -6, 7:9), nrow = 3)
),
NULL,
list(
alpha = list(matrix((9:1), nrow = 3), matrix(-1 * (9:1), nrow = 3), matrix((9:1), nrow = 3)),
pc = matrix(c(9:7, -6, -5, -4, 3:1), nrow = 3)
)
)
out <- unifySign(encod, ref)
expect_equal(out, expectedOut)
})
test_that("compute_optimal_encoding throws error", {
set.seed(42)
K <- 2
d_JK <- generate_2State(n = 10)
d_JK2 <- cut_data(d_JK, 1)
# create basis object
m <- 10
b <- create.bspline.basis(c(0, 1), nbasis = m, norder = 4)
expect_error(
compute_optimal_encoding(d_JK2, b, nCores = 1, computeCI = 2),
regexp = "computeCI must be either TRUE or FALSE."
)
expect_error(
compute_optimal_encoding(d_JK2, b, computeCI = TRUE, nBootstrap = 0, propBootstrap = 0.5),
regexp = "nBootstrap must be an integer > 0."
)
expect_error(
compute_optimal_encoding(d_JK2, b, computeCI = TRUE, nBootstrap = 10.5, propBootstrap = 0.5),
regexp = "nBootstrap must be an integer > 0."
)
expect_error(
compute_optimal_encoding(d_JK2, b, computeCI = TRUE, nBootstrap = NA, propBootstrap = 0.5),
regexp = "nBootstrap must be an integer > 0."
)
expect_error(
compute_optimal_encoding(d_JK2, b, computeCI = TRUE, nBootstrap = c(), propBootstrap = 0.5),
regexp = "nBootstrap must be an integer > 0."
)
expect_error(
compute_optimal_encoding(d_JK2, b, computeCI = TRUE, nBootstrap = c(20, 50), propBootstrap = 0.5),
regexp = "nBootstrap must be an integer > 0."
)
expect_error(
compute_optimal_encoding(d_JK2, b, computeCI = TRUE, nBootstrap = NaN, propBootstrap = 0.5),
regexp = "nBootstrap must be an integer > 0."
)
expect_error(
compute_optimal_encoding(d_JK2, b, computeCI = TRUE, nBootstrap = 50, propBootstrap = 0),
regexp = "propBootstrap must be a real between 0 and 1."
)
expect_error(
compute_optimal_encoding(d_JK2, b, computeCI = TRUE, nBootstrap = 50, propBootstrap = 1.5),
regexp = "propBootstrap must be a real between 0 and 1."
)
expect_error(
compute_optimal_encoding(d_JK2, b, computeCI = TRUE, nBootstrap = 50, propBootstrap = c(0.5, 0.8)),
regexp = "propBootstrap must be a real between 0 and 1."
)
expect_error(
compute_optimal_encoding(d_JK2, b, computeCI = TRUE, nBootstrap = 50, propBootstrap = NA),
regexp = "propBootstrap must be a real between 0 and 1."
)
expect_error(
compute_optimal_encoding(d_JK2, b, computeCI = TRUE, nBootstrap = 50, propBootstrap = NaN),
regexp = "propBootstrap must be a real between 0 and 1."
)
expect_error(
compute_optimal_encoding(d_JK2, b, computeCI = TRUE, nBootstrap = 50, propBootstrap = c()),
regexp = "propBootstrap must be a real between 0 and 1."
)
})
test_that("compute_optimal_encoding works with computeCI = TRUE", {
skip_on_cran()
set.seed(42)
n <- 200
Tmax <- 1
K <- 2
m <- 10
d <- generate_2State(n)
dT <- cut_data(d, Tmax)
row.names(dT) <- NULL
b <- create.bspline.basis(c(0, Tmax), nbasis = m, norder = 4)
expect_silent(
fmca <- compute_optimal_encoding(
dT, b,
computeCI = TRUE, nBootstrap = 50, propBootstrap = 0.5, nCores = 1, verbose = FALSE
)
)
expect_type(fmca, "list")
expect_named(
fmca,
c("eigenvalues", "alpha", "pc", "F", "G", "V", "basisobj", "label", "pt", "bootstrap", "varAlpha", "runTime")
)
## bootstrap
expect_length(fmca$bootstrap, 50)
expect_named(fmca$bootstrap[[1]], c("eigenvalues", "alpha", "pc", "F", "G"))
# eigenvalues
expect_length(fmca$bootstrap[[1]]$eigenvalues, K * m)
trueEigVal <- 1 / ((1:m) * (2:(m + 1)))
expect_lte(max(abs(fmca$eigenvalues[1:m] - trueEigVal)), 0.01)
# alpha
expect_type(fmca$bootstrap[[1]]$alpha, "list")
expect_length(fmca$bootstrap[[1]]$alpha, m * K)
expect_equal(dim(fmca$bootstrap[[1]]$alpha[[1]]), c(m, K))
# pc
expect_equal(dim(fmca$bootstrap[[1]]$pc), c(100, m * K))
# F
expect_equal(dim(fmca$bootstrap[[1]]$F), c(2 * m, 2 * m))
# G
expect_equal(dim(fmca$bootstrap[[1]]$G), c(2 * m, 2 * m))
# label
expect_equal(fmca$label, data.frame(label = 0:1, code = 1:2))
})
test_that("plot.fmca works with addCI = TRUE", {
skip_on_cran()
set.seed(42)
n <- 25
Tmax <- 1
K <- 2
m <- 6
d <- generate_2State(n)
dT <- cut_data(d, Tmax)
row.names(dT) <- NULL
b <- create.bspline.basis(c(0, Tmax), nbasis = m, norder = 4)
fmca <- compute_optimal_encoding(dT, b, computeCI = TRUE, nBootstrap = 25, propBootstrap = 1, nCores = 1, verbose = FALSE)
expect_warning(plot(fmca, addCI = TRUE), regexp = NA)
expect_warning(plot(fmca, addCI = TRUE, states = 1), regexp = NA)
expect_warning(plot(fmca, addCI = TRUE, states = 1:3), regexp = NA) # only use correct states
expect_warning(plot(fmca, addCI = TRUE, coeff = 5), regexp = NA)
expect_warning(plot(fmca, addCI = TRUE, col = c("red", "blue")), regexp = NA)
# bad parameters
expect_error(plot(fmca, addCI = 6), regexp = "addCI must be either TRUE or FALSE.")
expect_error(plot(fmca, addCI = TRUE, states = c("a", "b")), regexp = "No correct states given.")
expect_error(plot(fmca, addCI = TRUE, coeff = -5), regexp = "coeff must be a positive real.")
})
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.