context("Mortality")
for(test in testlist) {
# Create the samc object
samc_obj <- test$samc
# Extract Q
Q <- samc_obj$q_matrix
Q <- as.matrix(Q)
# Extract R
R <- diag(nrow(Q))
diag(R) <- samc_obj@data@t_abs
R_list <- lapply(split(samc_obj@data@c_abs, col(samc_obj@data@c_abs)),
function(x){
mat <- diag(length(x))
diag(mat) <- x
return(mat)
})
R_list <- c(list(total = R), R_list)
# Create an indentity matrix
I <- diag(nrow(Q))
# Fundamental matrix
F_mat <- solve(I - Q)
# Prepare the occupancy data
occ_ras <- raster::raster(test$init)
pv <- as.vector(occ_ras)
pv <- pv[is.finite(pv)]
# Run the tests
test_that("Testing mortality(samc, time)", {
samc_obj$override <- TRUE
result <- mortality(samc_obj, time = time)
samc_obj$override <- FALSE
base_result <- diag(nrow(Q))
Qt <- diag(nrow(Q))
for (i in 1:(time - 1)) {
Qt <- Qt %*% Q
base_result <- base_result + Qt
}
base_result <- base_result %*% R
# Verify
expect_equal(dim(result), dim(base_result))
expect_equal(as.vector(result), as.vector(base_result))
})
test_that("Testing mortality(samc, origin, time)", {
result <- mortality(samc_obj, origin = row_vec[1], time = time)
result_char <- mortality(samc_obj, origin = as.character(row_vec[1]), time = time)
expect_equal(result, result_char)
base_result <- diag(nrow(Q))
Qt <- diag(nrow(Q))
for (i in 1:(time - 1)) {
Qt <- Qt %*% Q
base_result <- base_result + Qt
}
base_result <- base_result %*% R
# Verify
expect_equal(as.vector(result), as.vector(base_result[row_vec[1], ]))
})
test_that("Testing mortality(samc, origin, time_vec)", {
result <- mortality(samc_obj, origin = row_vec[1], time = time_vec)
result_char <- mortality(samc_obj, origin = as.character(row_vec[1]), time = time_vec)
expect_equal(result, result_char)
for (i in 1:length(time_vec)) {
base_result <- diag(nrow(Q))
Qt <- diag(nrow(Q))
for (j in 1:(time_vec[i] - 1)) {
Qt <- Qt %*% Q
base_result <- base_result + Qt
}
base_result <- base_result %*% R
# Verify
expect_equal(result[[i]], as.vector(base_result[row_vec[1], ]))
}
})
test_that("Testing mortality(samc, dest, time)", {
result <- mortality(samc_obj, dest = col_vec[1], time = time)
result_char <- mortality(samc_obj, dest = as.character(col_vec[1]), time = time)
expect_equal(result, result_char)
base_result <- diag(nrow(Q))
Qt <- diag(nrow(Q))
for (i in 1:(time - 1)) {
Qt <- Qt %*% Q
base_result <- base_result + Qt
}
base_result <- base_result %*% R
# Verify
expect_equal(as.vector(result), as.vector(base_result[, col_vec[1]]))
})
test_that("Testing mortality(samc, dest, time_vec)", {
result <- mortality(samc_obj, dest = col_vec[1], time = time_vec)
result_char <- mortality(samc_obj, dest = as.character(col_vec[1]), time = time_vec)
expect_equal(result, result_char)
for (i in 1:length(time_vec)) {
base_result <- diag(nrow(Q))
Qt <- diag(nrow(Q))
for (j in 1:(time_vec[i] - 1)) {
Qt <- Qt %*% Q
base_result <- base_result + Qt
}
base_result <- base_result %*% R
# Verify
expect_equal(result[[i]], as.vector(base_result[, col_vec[1]]))
}
})
test_that("Testing mortality(samc, origin, dest, time)", {
result <- mortality(samc_obj, origin = row_vec[1], dest = col_vec[1], time = time)
result_char <- mortality(samc_obj, origin = as.character(row_vec[1]), dest = as.character(col_vec[1]), time = time)
expect_equal(result, result_char)
base_result <- diag(nrow(Q))
Qt <- diag(nrow(Q))
for (i in 1:(time - 1)) {
Qt <- Qt %*% Q
base_result <- base_result + Qt
}
base_result <- base_result %*% R
# Verify
expect_equal(as.vector(result), as.vector(base_result[row_vec[1], col_vec[1]]))
})
test_that("Testing mortality(samc, origin, dest, time_vec)", {
result <- mortality(samc_obj, origin = row_vec[1], dest = col_vec[1], time = time_vec)
result_char <- mortality(samc_obj, origin = as.character(row_vec[1]), dest = as.character(col_vec[1]), time = time_vec)
expect_equal(result, result_char)
for (i in 1:length(time_vec)) {
base_result <- diag(nrow(Q))
Qt <- diag(nrow(Q))
for (j in 1:(time_vec[i] - 1)) {
Qt <- Qt %*% Q
base_result <- base_result + Qt
}
base_result <- base_result %*% R
# Verify
expect_equal(result[[i]], as.vector(base_result[row_vec[1], col_vec[1]]))
}
})
test_that("Testing mortality(samc, init, time)", {
result <- mortality(samc_obj, init = test$init, time = time)
base_result <- I
Qt <- diag(nrow(Q))
for (i in 1:(time - 1)) {
Qt <- Qt %*% Q
base_result <- base_result + Qt
}
base_result <- pv %*% base_result %*% R
# Verify
expect_equal(as.vector(result), as.vector(base_result))
})
test_that("Testing mortality(samc, init, time_vec)", {
result <- mortality(samc_obj, init = test$init, time = time_vec)
for (i in 1:length(time_vec)) {
base_result <- I
Qt <- diag(nrow(Q))
for (j in 1:(time_vec[i] - 1)) {
Qt <- Qt %*% Q
base_result <- base_result + Qt
}
base_result <- pv %*% base_result %*% R
# Verify
expect_equal(result[[i]], as.vector(base_result))
}
})
test_that("Testing mortality(samc)", {
# Make sure absorption components add up
samc_obj$override <- TRUE
result <- mortality(samc_obj)
samc_obj$override <- FALSE
expect_equal(as.vector(result[[1]]), as.vector(Reduce('+', result) - result[[1]]))
# Make sure all absorption components match
base_result <- lapply(R_list, function(x) F_mat %*% x)
mapply(function(x, y) expect_equal(as.vector(x), as.vector(y)),
base_result, result)
})
test_that("Testing mortality(samc, origin)", {
# Make sure absorption components add up
result <- mortality(samc_obj, origin = row_vec[1])
expect_equal(as.vector(result[[1]]), as.vector(Reduce('+', result) - result[[1]]))
# Make sure named and unnamed results match up
result_char <- mortality(samc_obj, origin = as.character(row_vec[1]))
expect_equal(result[[1]], result_char[[1]])
# Make sure all absorption components match
base_result <- lapply(R_list, function(x) F_mat %*% x)
mapply(function(x, y) expect_equal(as.vector(x[row_vec[1], ]), as.vector(y)),
base_result, result)
})
test_that("Testing mortality(samc, dest)", {
# Make sure absorption components add up
result <- mortality(samc_obj, dest = col_vec[1])
expect_equal(as.vector(result[[1]]), as.vector(Reduce('+', result) - result[[1]]))
# Make sure named and unnamed results match up
result_char <- mortality(samc_obj, dest = as.character(col_vec[1]))
expect_equal(result[[1]], result_char[[1]])
# Make sure all absorption components match
base_result <- lapply(R_list, function(x) F_mat %*% x)
mapply(function(x, y) expect_equal(as.vector(x[, col_vec[1]]), as.vector(y)),
base_result, result)
})
test_that("Testing mortality(samc, origin, dest)", {
# Make sure absorption components add up
vector_result <- mortality(samc_obj, origin = row_vec, des = col_vec)
expect_equal(as.vector(vector_result[[1]]), as.vector(Reduce('+', vector_result) - vector_result[[1]]))
# Make sure named and unnamed results match up
vector_result_char <- mortality(samc_obj, origin = as.character(row_vec), dest = as.character(col_vec))
expect_equal(vector_result[[1]], vector_result_char[[1]])
base_result <- lapply(R_list, function(x) F_mat %*% x)
for (i in 1:length(row_vec)) {
# Test single pair version against paired vector version
r <- mortality(samc_obj, origin = row_vec[i], dest = col_vec[i])
mapply(function(x, y) expect_equal(x[i], y),
vector_result, r)
# Test against base result
mapply(function(x, y) expect_equal(x, y[row_vec[i], col_vec[i]], check.names = FALSE),
r, base_result)
}
})
test_that("Testing mortality(samc, init)", {
# Make sure absorption components add up
result <- mortality(samc_obj, init = test$init)
expect_equal(as.vector(result[[1]]), as.vector(Reduce('+', result) - result[[1]]))
# Make sure all absorption components match
base_result <- lapply(R_list, function(x) pv %*% F_mat %*% x)
mapply(function(x, y) expect_equal(as.vector(x), as.vector(y)),
base_result, result)
})
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.