Nothing
test_that("policy_def checks the action set",{
d <- sim_single_stage(2e3, seed=1)
pd <- policy_data(d,
action="A",
covariates = list("Z", "B", "L"),
utility="U")
p <- policy_def("test")
expect_warning(
p(pd),
"The policy actions does not comply with the action set of the policy data object."
)
pd <- policy_data(d,
action="A",
covariates = list("Z", "B", "L"),
utility="U",
action_set = c("1", "0", "test"))
expect_error(
p(pd),
NA
)
})
# Single stage ------------------------------------------------------------
test_that("policy_def handles static policies (single stage).",{
d <- sim_single_stage(2e3, seed=1)
pd <- policy_data(d,
action="A",
covariates = list("Z", "B", "L"),
utility="U")
p <- policy_def(1)
expect_equal(
p(pd)[["d"]],
rep("1", get_n(pd))
)
p <- policy_def("1")
expect_equal(
p(pd)[["d"]],
rep("1", get_n(pd))
)
p <- policy_def(as.factor("1"))
expect_equal(
p(pd)[["d"]],
rep("1", get_n(pd))
)
p <- policy_def(TRUE)
expect_warning(
p(pd)[["d"]],
"The policy actions does not comply with the action set of the policy data object."
)
p <- policy_def(c(1))
expect_equal(
p(pd)[["d"]],
rep("1", get_n(pd))
)
p <- policy_def(list(1))
expect_equal(
p(pd)[["d"]],
rep("1", get_n(pd))
)
p <- policy_def(list(2))
expect_warning(
p(pd)[["d"]],
"The policy actions does not comply with the action set of the policy data object."
)
p <- list(
policy_def(c(0,1)),
policy_def(c("0","1")),
policy_def(as.factor(c("0","1"))),
policy_def(list("0","1"))
)
lapply(p,function(p){
expect_error(
p(pd),
"policy_functions must be a list of length K."
)
})
ll <- list(
c(0,1),
c("0","1"),
as.factor(c("0","1")),
list("0","1")
)
lapply(ll,function(l){
expect_error(
policy_def(ll, reuse = TRUE),
"When reuse is TRUE, policy_functions must be a single function or a constant."
)
})
})
test_that("policy_def handles dynamic policies (single stage).",{
d <- sim_single_stage(2e3, seed=1)
pd <- policy_data(d,
action="A",
covariates = list("Z", "B", "L"),
utility="U")
fun <- function(L) (L>0)*1
res <- do.call(what = function(L,...) as.character(fun(L)), d)
p <- policy_def(fun, name = "a=(L>0)")
expect_equal(
p(pd)[["d"]],
res
)
expect_equal(
attr(p, "name"),
"a=(L>0)"
)
p <- policy_def(fun, reuse = TRUE)
expect_equal(
p(pd)[["d"]],
res
)
expect_error(
policy_def(fun, reuse = TRUE, full_history = TRUE),
"full_history must be FALSE when reuse is TRUE."
)
p <- policy_def(list(fun), reuse = TRUE)
expect_equal(
p(pd)[["d"]],
res
)
expect_error(
policy_def(list(fun, fun), reuse = TRUE),
"When reuse is TRUE, policy_functions must be a single function or a constant."
)
})
# Two stages ------------------------------------------------------------
test_that("policy_def handles static policies (two stages).",{
d <- sim_two_stage(2e3, seed=1)
pd <- policy_data(d,
action = c("A_1", "A_2"),
baseline = c("BB", "B"),
covariates = list(L = c("L_1", "L_2"),
C = c("C_1", "C_2")),
utility = c("U_1", "U_2", "U_3"))
a <- list("1",
1,
list(1),
c(1))
tmp <- lapply(
a,
function(a){
p <- policy_def(a, reuse = TRUE)
expect_equal(p(pd)[["d"]],
rep("1", get_n(pd) * get_K(pd)))
}
)
a <- list(c("1", "1"),
c(1,1),
list(1,1),
as.factor(c(1,1)))
tmp <- lapply(
a,
function(a){
p <- policy_def(a, reuse = FALSE)
expect_equal(p(pd)[["d"]],
rep("1", get_n(pd) * get_K(pd)))
}
)
p <- policy_def(c(0,1), reuse = FALSE)
expect_equal(
p(pd)[["d"]],
as.character(rep(c(0,1), times = get_n(pd)))
)
p <- policy_def(2, reuse = TRUE)
expect_warning(
p(pd),
"The policy actions does not comply with the action set of the policy data object."
)
p <- policy_def(c(1,2), reuse = FALSE)
expect_warning(
p(pd),
"The policy actions does not comply with the action set of the policy data object."
)
p <- policy_def(c(1,1,1), reuse = FALSE)
expect_error(
p(pd),
"policy_functions must be a list of length K."
)
})
test_that("policy_def handles dynamic policies (two stages).",{
d <- sim_two_stage(2e3, seed=1)
pd <- policy_data(d,
action = c("A_1", "A_2"),
baseline = c("BB", "B"),
covariates = list(L = c("L_1", "L_2"),
C = c("C_1", "C_2")),
utility = c("U_1", "U_2", "U_3"))
fun <- function(L) (L>0)*1
res <- do.call(pd[["stage_data"]][event == 0, ], what = function(L,...) as.character(fun(L)))
p <- policy_def(fun, name = "a=(L>0)")
expect_error(
p(d),
'The policy input is not of inherited class policy_data.'
)
expect_error(
p(pd),
"policy_functions must be a list of length K."
)
p <- policy_def(fun, reuse = TRUE, name = "a=(L>0)")
expect_equal(
p(pd)[["d"]],
res
)
expect_equal(
attr(p, "name"),
"a=(L>0)"
)
expect_error(
policy_def(fun, reuse = TRUE, full_history = TRUE),
"full_history must be FALSE when reuse is TRUE."
)
p <- policy_def(list(fun, fun), reuse = FALSE, name = "a=(L>0)")
expect_equal(
p(pd)[["d"]],
res
)
fun <- list(function(L) (L>0)*1, function(C) (C>0)*1)
res <- do.call(pd[["stage_data"]][event == 0, ], what = function(L, C, stage,...){
(stage == 1) * as.numeric((L>0)) +
(stage == 2) * as.numeric((C>0))
})
res <- as.character(res)
p <- policy_def(fun, reuse = FALSE, name = "a=(L>0)")
expect_equal(
p(pd)[["d"]],
res
)
fun <- list(function(L_1) (L_1>0)*1, function(C_2) (C_2>0)*1)
p <- policy_def(fun, reuse = FALSE, name = "a=(L>0)", full_history = TRUE)
expect_equal(
p(pd)[["d"]],
res
)
fun <- list(function(L_2) (L_2>0)*1, function(C_2) (C_2>0)*1)
p <- policy_def(fun, reuse = FALSE, name = "a=(L>0)", full_history = TRUE)
expect_error(
p(pd)[["d"]],
"argument \"L_2\" is missing, with no default"
)
})
# Stochastic number of stages ---------------------------------------------
test_that("policy_def handles a stochastic number of stages", {
d <- sim_multi_stage(1e3, seed = 1)
# constructing policy_data object:
pd <- policy_data(data = d$stage_data,
baseline_data = d$baseline_data,
type = "long",
id = "id",
stage = "stage",
event = "event",
action = "A",
utility = "U")
fun <- function(X, ...) as.character((X>0)*1)
res <- do.call(pd[["stage_data"]][event == 0,], what = fun)
p <- policy_def(function(X) (X>0)*1, reuse = TRUE)
expect_equal(
p(pd)[["d"]],
res
)
p <- policy_def(replicate(get_K(pd), function(X) (X>0)*1), reuse = FALSE)
expect_equal(
p(pd)[["d"]],
res
)
})
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.