Nothing
# Author: Quentin Grimonprez
context("Data pretreatment")
test_that("cut_cfd with equal Tmax", {
dat <- data.frame(id = rep(1, 3), time = c(0, 2, 4), state = c(1, 3, 2))
out <- cut_cfd(dat, Tmax = 4, prolongLastState = "all")
expect_equal(out, dat)
out <- cut_cfd(dat, Tmax = 4, prolongLastState = c())
expect_equal(out, dat)
})
test_that("cut_cfd with lower Tmax", {
dat <- data.frame(id = rep(1, 3), time = c(0, 2, 4), state = c(1, 3, 2))
out <- cut_cfd(dat, Tmax = 3, prolongLastState = "all")
expectedOut <- dat
expectedOut[3, 2:3] <- c(3, 3)
expect_equal(out, expectedOut)
out <- cut_cfd(dat, Tmax = 3, prolongLastState = c())
expect_equal(out, expectedOut)
})
test_that("cut_cfd with lower Tmax and a time value equal to the desired Tmax", {
dat <- data.frame(id = rep(1, 3), time = c(0, 2, 4), state = c(1, 3, 2))
out <- cut_cfd(dat, Tmax = 2, prolongLastState = "all")
expectedOut <- dat[1:2, ]
expect_equal(out, expectedOut)
out <- cut_cfd(dat, Tmax = 2, prolongLastState = c())
expect_equal(out, expectedOut)
})
test_that("cut_cfd with greater Tmax", {
dat <- data.frame(id = rep(1, 3), time = c(0, 2, 4), state = c(1, 3, 2))
out <- cut_cfd(dat, Tmax = 5, prolongLastState = "all")
expectedOut <- dat
expectedOut[4, 1:3] <- c(1, 5, 2)
expect_equal(out, expectedOut)
expect_warning(out <- cut_cfd(dat, Tmax = 5, prolongLastState = c(), warning = TRUE),
regexp = paste0("id ", 1, " does not end with an absorbing state. Cannot impute the state until time ",
5, ". Please, add more records or change the Tmax value."))
expectedOut$state[3:4] <- NA
expect_equal(out, expectedOut)
expect_silent(out <- cut_cfd(dat, Tmax = 5, prolongLastState = c(), warning = FALSE))
expectedOut$state[3:4] <- NA
expect_equal(out, expectedOut)
})
test_that("cut_cfd with factor", {
dat <- data.frame(id = 1,
time = c(0, 5, 12, 15),
state = as.factor(c("D", "C", "A", "D")))
expect_silent(out <- cut_cfd(dat, Tmax = 20, prolongLastState = "S", NAstate = "Not observable"))
expectedOut <- data.frame(id = 1,
time = c(0, 5, 12, 15, 20),
state = as.factor(c("D", "C", "A", "Not observable", "Not observable")))
expect_equal(out, expectedOut)
})
test_that("cut_data generates error with bad parameters", {
dat <- data.frame(id = rep(1:3, each = 3), time = c(0, 2, 4, 0, 1.5, 5, 0, 2.5, 3), state = c(1, 3, 2, 1, 2, 3, 1, 3, 1))
expect_error(cut_data(dat, Tmax = c(4, 5), prolongLastState = "all"), regexp = "Tmax must be a real.")
expect_error(cut_data(dat, Tmax = NA, prolongLastState = "all"), regexp = "Tmax must be a real.")
expect_error(cut_data(dat, Tmax = NaN, prolongLastState = "all"), regexp = "Tmax must be a real.")
expect_error(cut_data(dat, Tmax = 2, prolongLastState = "all", warning = "fff"),
regexp = "warning must be either TRUE or FALSE.")
expect_error(cut_data(dat, Tmax = 2, prolongLastState = "all", warning = TRUE, NAstate = c(1, 2)),
regexp = "NAstate must have a length of 1")
})
test_that("cut_data works", {
dat <- data.frame(id = rep(1:3, each = 3), time = c(0, 2, 4, 0, 1.5, 5, 0, 2.5, 3), state = c(1, 3, 2, 1, 2, 3, 1, 3, 1))
out <- cut_data(dat, Tmax = 4, prolongLastState = "all")
expectedOut <- dat
expectedOut[6, 1:3] <- c(2, 4, 2)
expectedOut[10, 1:3] <- c(3, 4, 1)
expect_equivalent(out, expectedOut)
expect_warning(out <- cut_data(dat, Tmax = 4, prolongLastState = c(), warning = TRUE),
regexp = paste0("id ", 3, " does not end with an absorbing state. Cannot impute the state until time ",
4, ". Please, add more records or change the Tmax value."))
expectedOut$state[9:10] <- "Not observed"
expect_equal(out, expectedOut)
expect_silent(out <- cut_data(dat, Tmax = 4, prolongLastState = c(), NAstate = "blabla"))
expectedOut$state[9:10] <- "blabla"
expect_equal(out, expectedOut)
})
test_that("refactorCategorical works when oldCateg and newCateg do not have common elements", {
x <- letters[c(26:9, 1:8, 20:25)]
oldCateg <- letters
newCateg <- seq_along(oldCateg)
expectedOut <- c(26:9, 1:8, 20:25)
out <- refactorCategorical(x, oldCateg, newCateg)
expect_equal(as.character(out), as.character(expectedOut))
})
test_that("refactorCategorical works when oldCateg and newCateg have common elements", {
x <- as.character(c(7:10, 0:6, 7:10))
oldCateg <- as.character(0:10)
newCateg <- 1:11
expectedOut <- c(7:10, 0:6, 7:10) + 1
out <- refactorCategorical(x, oldCateg, newCateg)
expect_equal(as.character(out), as.character(expectedOut))
})
test_that("refactorCategorical works when some categories are merged", {
x <- letters[c(1, 4:6, 2:3)]
oldCateg <- letters[1:6]
newCateg <- rep(c("voyelle", "consonne", "voyelle", "consonne"), c(1, 3, 1, 1))
expectedOut <- c("voyelle", "consonne", "voyelle", "consonne", "consonne", "consonne")
out <- refactorCategorical(x, oldCateg, newCateg)
expect_equal(as.character(out), as.character(expectedOut))
})
test_that("refactorCategorical works when there are categories not included in the data", {
x <- letters[c(1, 4:6, 2:3)]
oldCateg <- letters[1:7]
newCateg <- rep(c("voyelle", "consonne", "voyelle", "consonne"), c(1, 3, 1, 2))
expectedOut <- c("voyelle", "consonne", "voyelle", "consonne", "consonne", "consonne")
expect_warning(out <- refactorCategorical(x, oldCateg, newCateg), regexp = NA)
expect_equal(as.character(out), as.character(expectedOut))
x <- letters[c(1, 4:7, 2:3)]
oldCateg <- letters[1:6]
newCateg <- rep(c("voyelle", "consonne", "voyelle", "consonne"), c(1, 3, 1, 1))
expectedOut <- c("voyelle", "consonne", "voyelle", "consonne", NA, "consonne", "consonne")
expect_warning(out <- refactorCategorical(x, oldCateg, newCateg))
expect_equal(as.character(out), as.character(expectedOut))
})
test_that("refactorCategorical kept NA values in data", {
x <- c(letters[c(1, 4:6, 2:3)], NA)
oldCateg <- letters[1:6]
newCateg <- rep(c("voyelle", "consonne", "voyelle", "consonne"), c(1, 3, 1, 1))
expectedOut <- c("voyelle", "consonne", "voyelle", "consonne", "consonne", "consonne", NA)
expect_warning(out <- refactorCategorical(x, oldCateg, newCateg), regexp = NA)
expect_equal(as.character(out), as.character(expectedOut))
})
test_that("stateToInteger works", {
x <- letters[c(1, 4:6, 2:3)]
out <- stateToInteger(x)
expectedOut <- list(state = c(1, 4:6, 2:3), label = data.frame(label = sort(x), code = 1:6))
expect_equal(out, expectedOut)
x <- letters[c(6:1, 6, 2)]
out <- stateToInteger(x)
expectedOut <- list(state = c(6:1, 6, 2), label = data.frame(label = letters[1:6], code = 1:6))
expect_equal(out, expectedOut)
})
test_that("remove_duplicated_states.intern works with keep.last = FALSE", {
data <- data.frame(id = rep(1, 10), time = 1:10, state = rep(1:5, each = 2))
out <- remove_duplicated_states.intern(data, keep.last = FALSE)
expectedOut <- data.frame(id = rep(1, 5), time = 1:5 * 2 - 1, state = 1:5)
expect_equivalent(out, expectedOut)
data$state <- as.factor(data$state)
out <- remove_duplicated_states.intern(data, keep.last = FALSE)
expectedOut <- data.frame(id = rep(1, 5), time = 1:5 * 2 - 1, state = as.factor(1:5))
expect_equivalent(out, expectedOut)
})
test_that("remove_duplicated_states.intern works with keep.last = TRUE", {
data <- data.frame(id = rep(1, 10), time = 1:10, state = rep(1:5, each = 2))
out <- remove_duplicated_states.intern(data, keep.last = TRUE)
expectedOut <- data.frame(id = rep(1, 6), time = c(1:5 * 2 - 1, 10), state = c(1:5, 5))
expect_equivalent(out, expectedOut)
})
test_that("remove_duplicated_states works", {
data <- data.frame(
id = rep(1:3, c(10, 3, 8)),
time = c(1:10, 1:3, 1:8),
state = c(rep(1:5, each = 2), 1:3, rep(1:3, c(1, 6, 1)))
)
out <- remove_duplicated_states(data, keep.last = FALSE)
expectedOut <- data.frame(id = rep(1:3, c(5, 3, 3)), time = c(1:5 * 2 - 1, 1:3, 1, 2, 8), state = c(1:5, 1:3, 1:3))
expect_equivalent(out, expectedOut)
})
test_that("matrixToCfd works", {
x <- matrix(c("a", "b", "c", "c",
"c", "a", "a", "a",
"b", "c", "a", "b"), ncol = 4, byrow = TRUE)
out <- matrixToCfd(x, byrow = FALSE)
expectedOut <- data.frame(id = rep(1:4, each = 3),
time = rep(1:3, 4),
state = c("a", "c", "b", "b", "a", "c", "c", "a", "a", "c", "a", "b"))
expect_equivalent(out, expectedOut)
out <- matrixToCfd(x, byrow = TRUE)
expectedOut <- data.frame(id = rep(1:3, c(4, 3, 4)),
time = c(1:4, c(1, 2, 4), 1:4),
state = c("a", "b", "c", "c",
"c", "a", "a",
"b", "c", "a", "b"))
expect_equivalent(out, expectedOut)
out <- matrixToCfd(x, times = c(1.5, 2.5, 3.5), byrow = FALSE)
expectedOut <- data.frame(id = rep(1:4, each = 3),
time = rep(1:3, 4) + 0.5,
state = c("a", "c", "b", "b", "a", "c", "c", "a", "a", "c", "a", "b"))
expect_equivalent(out, expectedOut)
out <- matrixToCfd(x, times = c(1.5, 2.5, 3.5, 4.5), byrow = TRUE)
expectedOut <- data.frame(id = rep(1:3, c(4, 3, 4)),
time = c(1:4, c(1, 2, 4), 1:4) + 0.5,
state = c("a", "b", "c", "c",
"c", "a", "a",
"b", "c", "a", "b"))
expect_equivalent(out, expectedOut)
times <- matrix(c(1:3, 0:2 + 0.5, 1:3, 1:3 + 0.5), nrow = 3)
out <- matrixToCfd(x, times = times, byrow = FALSE)
expectedOut <- data.frame(id = rep(1:4, each = 3),
time = as.vector(times),
state = c("a", "c", "b", "b", "a", "c", "c", "a", "a", "c", "a", "b"))
expect_equivalent(out, expectedOut)
})
test_that("matrixToCfd keeps manages labels", {
x <- matrix(c("a", "b", "c", "c",
"c", "a", "a", "a",
"b", "c", "a", "b"), ncol = 4, byrow = TRUE,
dimnames = list(paste0("time", 1:3), paste0("ind", 1:4)))
out <- matrixToCfd(x, byrow = FALSE)
expectedOut <- data.frame(id = rep(paste0("ind", 1:4), each = 3),
time = rep(1:3, 4),
state = c("a", "c", "b", "b", "a", "c", "c", "a", "a", "c", "a", "b"))
expect_equal(out, expectedOut)
x <- matrix(c("a", "b", "c", "c",
"c", "a", "a", "a",
"b", "c", "a", "b"), ncol = 4, byrow = TRUE,
dimnames = list(paste0("time", 1:3), paste0("ind", 1:4)))
out <- matrixToCfd(x, byrow = FALSE, labels = c("a", "b", "c", "d"))
expectedOut <- data.frame(id = rep(c("a", "b", "c", "d"), each = 3),
time = rep(1:3, 4),
state = c("a", "c", "b", "b", "a", "c", "c", "a", "a", "c", "a", "b"))
expect_equal(out, expectedOut)
})
test_that("matrixToCfd errors", {
x <- matrix(c("a", "b", "c", "c",
"c", "a", "a", "a",
"b", "c", "a", "b"), ncol = 4, byrow = TRUE)
expect_error(matrixToCfd(x, times = NULL, byrow = 3), "byrow must be either TRUE or FALSE.")
expect_error(matrixToCfd(x, times = 3, byrow = TRUE), "times must be a numeric vector of length 4")
expect_error(matrixToCfd(x, times = c(3, 2), byrow = FALSE), "times must be a numeric vector of length 3")
expect_error(matrixToCfd(x, times = c("a", "b", "c"), byrow = FALSE), "times must be a numeric vector of length 3")
expect_error(matrixToCfd(c(1, 3), times = NULL, byrow = TRUE), "X must be a matrix or a data.frame")
expect_error(matrixToCfd(x, times = NULL, labels = c("a"), byrow = TRUE), "labels must be a vector of length 3")
})
data("CanadianWeather")
temp <- CanadianWeather$dailyAv[, , "Temperature.C"]
basis <- create.bspline.basis(c(1, 365), nbasis = 8, norder = 4)
fd <- smooth.basis(1:365, temp, basis)$fd
test_that("quantiMatrixToCfd works", {
out <- quantiMatrixToCfd(temp, breaks = c(-50, -10, 0, 10, 20, 50), right = FALSE,
labels = c("Very Cold", "Cold", "Fresh", "OK", "Hot"), idLabels = NULL, times = 0:364)
expect_true(is.data.frame(out))
expect_equal(colnames(out), c("id", "time", "state"))
expect_equal(range(out$time), c(0, 364))
expect_equal(sort(unique(out$state)), sort(c("Very Cold", "Cold", "Fresh", "OK", "Hot")))
expect_equal(unique(out$id), colnames(temp))
expectedOut <- data.frame(id = rep("St. Johns", 10),
time = c(0, 94, 164, 271, 275, 276, 335, 340, 341, 364),
state = c("Cold", "Fresh", "OK", "Fresh", "OK", "Fresh", "Cold", "Fresh", "Cold", "Cold"))
expect_equal(out[out$id == out$id[1], ], expectedOut)
})
test_that("quantiMatrixToCfd errors", {
expect_error(quantiMatrixToCfd(temp, breaks = c(-50, -10), right = TRUE,
labels = c("Very Cold", "Cold", "Fresh", "OK", "Hot"), times = 1:365))
expect_error(quantiMatrixToCfd(temp, breaks = c(-50, -10), right = "3",
labels = c("Very Cold"), times = 1:365))
expect_error(quantiMatrixToCfd(fd, breaks = c(-50, -10), right = TRUE,
labels = c("Very Cold"), times = 1:365))
})
test_that("fdToCfd works", {
out <- fdToCfd(fd, breaks = c(-50, -10, 0, 10, 20, 50), right = FALSE,
labels = c("Very Cold", "Cold", "Fresh", "OK", "Hot"), times = 1:365)
expect_true(is.data.frame(out))
expect_equal(colnames(out), c("id", "time", "state"))
expect_equal(range(out$time), c(1, 365))
expect_equal(sort(unique(out$state)), sort(c("Very Cold", "Cold", "Fresh", "OK", "Hot")))
expect_equal(unique(out$id), colnames(temp))
expectedOut <- data.frame(id = rep("St. Johns", 6),
time = c(1, 97, 161, 271, 340, 365),
state = c("Cold", "Fresh", "OK", "Fresh", "Cold", "Cold"))
expect_equal(out[out$id == out$id[1], ], expectedOut)
})
test_that("fdToCfd errors", {
expect_error(fdToCfd(fd, breaks = c(-50, -10), right = TRUE,
labels = c("Very Cold", "Cold", "Fresh", "OK", "Hot"), times = 1:365))
expect_error(fdToCfd(fd, breaks = c(-50, -10), right = "3",
labels = c("Very Cold"), times = 1:365))
expect_error(fdToCfd(5, breaks = c(-50, -10), right = TRUE,
labels = c("Very Cold"), times = 1:365))
})
test_that("convertToCfd works with matrix", {
out <- convertToCfd(temp, breaks = c(-50, -10, 0, 10, 20, 50), right = FALSE,
labels = c("Very Cold", "Cold", "Fresh", "OK", "Hot"), idLabels = NULL, times = 0:364)
expect_true(is.data.frame(out))
expect_equal(colnames(out), c("id", "time", "state"))
expect_equal(range(out$time), c(0, 364))
expect_equal(sort(unique(out$state)), sort(c("Very Cold", "Cold", "Fresh", "OK", "Hot")))
expect_equal(unique(out$id), colnames(temp))
expectedOut <- data.frame(id = rep("St. Johns", 10),
time = c(0, 94, 164, 271, 275, 276, 335, 340, 341, 364),
state = c("Cold", "Fresh", "OK", "Fresh", "OK", "Fresh", "Cold", "Fresh", "Cold", "Cold"))
expect_equal(out[out$id == out$id[1], ], expectedOut)
})
test_that("convertToCfd works with fd", {
out <- convertToCfd(fd, breaks = c(-50, -10, 0, 10, 20, 50), right = FALSE,
labels = c("Very Cold", "Cold", "Fresh", "OK", "Hot"), times = 1:365)
expect_true(is.data.frame(out))
expect_equal(colnames(out), c("id", "time", "state"))
expect_equal(range(out$time), c(1, 365))
expect_equal(sort(unique(out$state)), sort(c("Very Cold", "Cold", "Fresh", "OK", "Hot")))
expect_equal(unique(out$id), colnames(temp))
expectedOut <- data.frame(id = rep("St. Johns", 6),
time = c(1, 97, 161, 271, 340, 365),
state = c("Cold", "Fresh", "OK", "Fresh", "Cold", "Cold"))
expect_equal(out[out$id == out$id[1], ], expectedOut)
})
test_that("convertToCfd errors", {
expect_error(convertToCfd(fd, breaks = c(-50, -10), right = TRUE,
labels = c("Very Cold"), times = 1:365),
"The conversion has generated NA. Please, correct your breaks.")
expect_error(convertToCfd(temp, breaks = c(-50, -10), right = TRUE,
labels = c("Very Cold"), times = 1:365),
"The conversion has generated NA. Please, correct your breaks.")
})
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.