options("RprobitB_progress" = FALSE)
test_that("choice probabilities can be computed", {
set.seed(1)
form <- choice ~ price + time + change + comfort | 0
data <- prepare_data(
form = form,
choice_data = train_choice,
id = "deciderID",
idc = "occasionID"
)
model_train <- fit_model(
data = data,
scale = "price := -1"
)
expect_snapshot(choice_probabilities(model_train))
})
test_that("creation of labels works", {
P_f <- sample(0:10, 1)
P_r <- sample(0:10, 1)
J <- sample(2:10, 1)
C <- sample(1:5, 1)
cov_sym <- sample(c(TRUE, FALSE), 1)
drop_par <- if (runif(1) < 0.5) {
NULL
} else {
sample(c("alpha", "s", "b", "Omega", "Sigma"), sample(1:5, 1))
}
out <- parameter_labels(
P_f = P_f, P_r = P_r, J = J, C = C, cov_sym = cov_sym,
drop_par = drop_par
)
expect_setequal(
names(out), setdiff(
c(
if (P_f > 0) "alpha",
if (P_r > 0) c("s", "b", "Omega"), "Sigma"
),
drop_par
)
)
})
test_that("choice prediction works", {
data <- simulate_choices(
form = choice ~ cost | income | time,
N = 50,
T = 1:50,
J = 2,
alternatives = c("bus", "car"),
seed = 1,
true_parameter = list("alpha" = 1:5, "Sigma" = 1)
)
data <- train_test(data, test_proportion = 0.3)
model <- fit_model(data$train, R = 1000, seed = 1)
expect_snapshot(predict(model, overview = TRUE))
expect_snapshot(predict(model, overview = FALSE))
expect_snapshot(predict(model, data = data$test, overview = TRUE))
})
test_that("preference classification works", {
data <- simulate_choices(
form = choice ~ cost | income | time,
N = 30,
T = 10,
J = 3,
re = c("cost", "ASC"),
alternatives = c("train", "bus", "car"),
seed = 1,
true_parameter = list("C" = 2)
)
model <- fit_model(data,
R = 1000,
seed = 1,
latent_classes = list("C" = 2)
)
expect_snapshot(classification(model, add_true = TRUE))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.