Nothing
# Author: Quentin Grimonprez
context("Markov estimation")
set.seed(42)
test_that("completeStatetable does not change a square statetable", {
aux <- matrix(c(0, 2, 3, 4, 1, 0, 3, 4, 1, 2, 0, 4, 1, 2, 3, 0), nrow = 4, dimnames = list(1:4, 1:4))
out <- completeStatetable(aux)
expect_equal(out, aux)
})
test_that("completeStatetable completes one missing row", {
# middle
aux <- matrix(c(0, 3, 4, 1, 3, 4, 1, 0, 4, 1, 3, 0), nrow = 3, dimnames = list(c(1, 3, 4), 1:4))
out <- completeStatetable(aux)
expectedOut <- rbind(aux[1, ], rep(0, 4), aux[2:3, ])
rownames(expectedOut) <- 1:4
expect_equal(out, expectedOut)
# first
aux <- matrix(c(2, 3, 4, 0, 3, 4, 2, 0, 4, 2, 3, 0), nrow = 3, dimnames = list(c(2, 3, 4), 1:4))
out <- completeStatetable(aux)
expectedOut <- rbind(rep(0, 4), aux)
rownames(expectedOut) <- 1:4
expect_equal(out, expectedOut)
# last
aux <- matrix(c(0, 2, 3, 1, 0, 3, 1, 2, 0, 1, 2, 3), nrow = 3, dimnames = list(c(1, 2, 3), 1:4))
out <- completeStatetable(aux)
expectedOut <- rbind(aux, rep(0, 4))
rownames(expectedOut) <- 1:4
expect_equal(out, expectedOut)
})
test_that("completeStatetable completes several missing rows", {
aux <- matrix(c(0, 3, 1, 3, 1, 0, 1, 3), nrow = 2, dimnames = list(c(1, 3), 1:4))
out <- completeStatetable(aux)
expectedOut <- rbind(aux[1, ], rep(0, 4), aux[2, ], rep(0, 4))
rownames(expectedOut) <- 1:4
expect_equal(out, expectedOut)
})
test_that("completeStatetable completes several missing rows (2 lasts)", {
aux <- matrix(c(0, 3, 1, 3, 1, 0, 1, 3), nrow = 2, dimnames = list(c(1, 2), 1:4))
out <- completeStatetable(aux)
expectedOut <- rbind(aux[1, ], aux[2, ], rep(0, 4), rep(0, 4))
rownames(expectedOut) <- 1:4
expect_equal(out, expectedOut)
})
test_that("completeStatetable completes several missing rows non integer labels", {
aux <- matrix(c(0, 3, 1, 3, 1, 0, 1, 3), nrow = 2, dimnames = list(c("A", "B"), c("A", "B", "C", "D")))
out <- completeStatetable(aux)
expectedOut <- rbind(aux[1, ], aux[2, ], rep(0, 4), rep(0, 4))
rownames(expectedOut) <- c("A", "B", "C", "D")
expect_equal(out, expectedOut)
})
test_that("estimateT estimates well", {
data <- data.frame(
id = rep(c(1, 2), each = 5),
time = c(1, 3, 7, 9, 10, 1, 2, 5, 6, 10),
state = c(1, 2, 1, 3, 1, 1, 3, 2, 1, 3)
)
out <- estimateT(data)
expectedOut <- c(2.25, 2.5, 2)
expect_equivalent(out, expectedOut)
})
test_that("estimate_Markov estimates well", {
K <- 4
PJK <- matrix(1 / 3, nrow = K, ncol = K) - diag(rep(1 / 3, K))
lambda_PJK <- c(1, 1, 1, 1)
d_JK <- generate_Markov(n = 500, K = K, P = PJK, lambda = lambda_PJK, Tmax = 30)
mark <- estimate_Markov(d_JK)
expect_lte(sqrt(mean((mark$lambda - lambda_PJK)^2)), 0.06)
expect_lte(sqrt(mean((mark$P - PJK)^2)), 0.02)
})
test_that("estimate_Markov estimates well", {
K <- 4
PJK <- matrix(1 / 3, nrow = K, ncol = K) - diag(rep(1 / 3, K))
lambda_PJK <- c(1, 1, 1, 1)
d_JK <- generate_Markov(n = 500, K = K, P = PJK, lambda = lambda_PJK, Tmax = 30)
mark <- estimate_Markov(d_JK)
expect_lte(sqrt(mean((mark$lambda - lambda_PJK)^2)), 0.06)
expect_lte(sqrt(mean((mark$P - PJK)^2)), 0.02)
})
test_that("estimate_Markov works with missing transitions", {
K <- 4
d_JK <- data.frame(id = rep(1:10, each = 2),
time = rep(0:1, 10),
state = rep(c("C", "D"), 10))
d_JK$state[2] <- "T"
d_JK$state[3:4] <- c("D", "T")
d_JK$state[6] <- "C"
mark <- estimate_Markov(d_JK)
lam <- c(1, 1, NaN)
names(lam) <- c("C", "D", "T")
p <- matrix(c(0, 0, NaN, 0.875, 0, NaN, 0.125, 1, NaN), nrow = , ncol = 3,
dimnames = list(c("C", "D", "T"), c("C", "D", "T")))
expect_equal(mark$lambda, lam)
expect_equal(mark$P, p)
})
test_that("plot_Markov does not produce warnings", {
K <- 4
PJK <- matrix(1 / 3, nrow = K, ncol = K, dimnames = list(1:4, 1:4)) - diag(rep(1 / 3, K))
lambda_PJK <- c(1, 1, 1, 1)
dat <- list(P = PJK, lambda = lambda_PJK)
class(dat) <- "Markov"
expect_warning(plot(dat), regexp = NA)
})
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.