test_that("qsd_converge works correctly", {
x1 <- qsd_converge(mat_u)
expect_length(x1, 1L)
expect_gt(x1, 0)
# matU all zero
x2 <- suppressWarnings(qsd_converge(mat_u_zero))
expect_identical(x2, 1L)
# multiple starting stages
x3 <- qsd_converge(mat_u, start = c(0.8, 0.2, 0, 0))
expect_length(x3, 1L)
expect_gt(x3, 0)
# named life stages
x4 <- qsd_converge(mat_u_named, start = "sm")
expect_identical(x1, x4)
})
test_that("qsd_converge warns and fails gracefully", {
expect_error(qsd_converge(mat_u_na))
expect_error(qsd_converge(mat_u, start = 10))
expect_error(qsd_converge(mat_u, start = "stage name"))
expect_error(qsd_converge(mat_u_named, start = "invalid name"))
})
test_that("qsd_converge works w/ non-ergodic matrix", {
mat_no_ergo <- matrix(
c(
0, 2.2, 5.8, 0, 0,
0.8, 0, 0, 0, 0,
0, 0.89, 0, 0, 0,
0, 0, 0.93, 0, 0,
0, 0, 0, 0.75, 0.5
),
nrow = 5, ncol = 5, byrow = TRUE
)
# fast convergence
t_qsd <- qsd_converge(mat_no_ergo)
expect_length(t_qsd, 1L)
# multi-state w/ non-ergodic also works.
f_qsd <- qsd_converge(mat_no_ergo,
start = c(1, 2, 3, 2, 0)
)
expect_length(f_qsd, 1L)
# This depends on default value of conv in qsd_converge
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.