Nothing
# test_that('stan_augbin fits sensible data and works as expected.', {
#
# # Quite tight priors lead to fast sampling
# prior_params <- list(alpha_mean = 0, alpha_sd = 0.5,
# beta_mean = 0, beta_sd = 0.5,
# gamma_mean = 0, gamma_sd = 0.2,
# sigma_mean = 0, sigma_sd = 1,
# omega_lkj_eta = 1,
# alpha_d1_mean = 0, alpha_d1_sd = 0.5,
# gamma_d1_mean = 0, gamma_d1_sd = 0.2,
# alpha_d2_mean = 0, alpha_d2_sd = 0.5,
# gamma_d2_mean = 0, gamma_d2_sd = 0.2)
# N <- 40
# sigma <- 1
# delta1 <- -0.356
# mu <- c(0.5 * delta1, delta1)
# Sigma = matrix(c(0.5 * sigma^2, 0.5 * sigma^2, 0.5 * sigma^2, sigma^2),
# ncol = 2)
# alphaD <- -1.5
# gammaD <- 0.02
# set.seed(123)
# y <- MASS::mvrnorm(n = N, mu, Sigma)
# z0 <- runif(N, min = 5, max = 10)
# z1 <- exp(y[, 1]) * z0
# z2 <- exp(y[, 2]) * z0
# d1 <- rbinom(N, size = 1, prob = gtools::inv.logit(alphaD + gammaD * z0))
# d2 <- rbinom(N, size = 1, prob = gtools::inv.logit(alphaD + gammaD * z1))
# tumour_size = data.frame(z0, z1, z2) # cm
# non_shrinkage_failure <- data.frame(d1, d2)
#
# iter <- 2436
# chains <- 3
# fit <- stan_augbin(tumour_size, non_shrinkage_failure,
# prior_params = prior_params,
# model = '2t-1a',
# chains = chains, iter = iter)
#
# df <- as.data.frame(fit$fit, pars = c('alpha', 'beta', 'gamma', 'Omega',
# 'sigma', 'alphaD1', 'gammaD1',
# 'alphaD2', 'gammaD2'))
# # Check dimensions of returned data.frame of samples
# expect_equal(ncol(df), 13)
# expect_equal(nrow(df), iter * chains / 2)
#
# # Get predictions
# pred1 <- predict(fit)
# expect_equal(nrow(pred1), N)
# # Look for expected columns
# expect_true(any(colnames(pred1) == 'prob_success'))
# expect_true(any(colnames(pred1) == 'ci_width'))
#
# # Get predictions a different way
# pred2 <- prob_success(fit)
# expect_equal(nrow(pred2), N)
# # Look for expected columns
# expect_true(any(colnames(pred2) == 'prob_success'))
# expect_true(any(colnames(pred2) == 'ci_width'))
#
# # Get binary predictions
# pred3 <- binary_prob_success(fit)
# # Look for expected columns
# expect_true(any(colnames(pred3) == 'mean'))
# expect_true(any(colnames(pred3) == 'ci_width'))
# })
test_that('stan_augbin errors when it should.', {
ts1 <- data.frame(baseline = c(1, 2, 3),
assessment1 = c(2, 3, 5),
assessment2 = c(2, 2, 6))
ts2 <- data.frame(baseline = c(1, 2, 3),
assessment1 = c(2, 3, 5))
ts3 <- data.frame(baseline = c(1, 2),
assessment1 = c(2, 3),
assessment2 = c(2, 2))
nsf1 <- data.frame(assessment1 = c(F, F, T), assessment2 = c(F, F, T))
nsf2 <- data.frame(assessment1 = c(F, F, T))
nsf3 <- data.frame(assessment1 = c(F, F), assessment2 = c(F, F))
# Fail for no prior parameters
expect_error(stan_augbin(tumour_size = ts1,
non_shrinkage_failure = nsf1))
# Fail for missing prior parameters
expect_error(stan_augbin(tumour_size = ts1,
non_shrinkage_failure = nsf1,
prior_params = list(alpha_mean = 0)))
# Use sensible priors from now
prior_params <- list(alpha_mean = 0, alpha_sd = 0.5,
beta_mean = 0, beta_sd = 0.5,
gamma_mean = 0, gamma_sd = 0.2,
sigma_mean = 0, sigma_sd = 1,
omega_lkj_eta = 1,
alpha_d1_mean = 0, alpha_d1_sd = 0.5,
gamma_d1_mean = 0, gamma_d1_sd = 0.2,
alpha_d2_mean = 0, alpha_d2_sd = 0.5,
gamma_d2_mean = 0, gamma_d2_sd = 0.2)
# Fail because tumour_size does not have enough columns
expect_error(stan_augbin(tumour_size = ts2,
non_shrinkage_failure = nsf1,
prior_params = prior_params,
model = '2t-1a'))
# Fail because non_shrinkage_failure does not have enough columns
expect_error(stan_augbin(tumour_size = ts1,
non_shrinkage_failure = nsf2,
prior_params = prior_params,
model = '2t-1a'))
# Fail because tumour_size & non_shrinkage_failure are not compatible, v1
expect_error(stan_augbin(tumour_size = ts1,
non_shrinkage_failure = nsf3,
prior_params = prior_params,
model = '2t-1a'))
# Fail because tumour_size & non_shrinkage_failure are not compatible, v2
expect_error(stan_augbin(tumour_size = ts3,
non_shrinkage_failure = nsf1,
prior_params = prior_params,
model = '2t-1a'))
# Fail because the model type is not supported
expect_error(stan_augbin(tumour_size = ts1,
non_shrinkage_failure = nsf1,
prior_params = prior_params,
model = 'not supported model'))
})
# TODO:
# Once there is an available independent implementation of this model, check
# the two methods agree.
# Check convergence by running two fits to the same data.
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.