Nothing
test_that("Test plot.modelFits with different model_fits input", {
library(BayesianMCPMod)
library(clinDR)
library(dplyr)
data("metaData")
testdata <- as.data.frame(metaData)
dataset <- filter(testdata, bname == "VIAGRA")
histcontrol <- filter(dataset, dose == 0, primtime == 12, indication == "ERECTILE DYSFUNCTION")
## Create MAP Prior
hist_data <- data.frame(
trial = c(1, 2, 3, 4),
est = histcontrol$rslt,
se = histcontrol$se,
sd = histcontrol$sd,
n = histcontrol$sampsize
)
sd_tot <- with(hist_data, sum(sd * n) / sum(n))
gmap <- RBesT::gMAP(
formula = cbind(est, se) ~ 1 | trial,
weights = hist_data$n,
data = hist_data,
family = gaussian,
beta.prior = cbind(0, 100 * sd_tot),
tau.dist = "HalfNormal",
tau.prior = cbind(0, sd_tot / 4)
)
prior_ctr <- RBesT::robustify(
priormix = RBesT::automixfit(gmap),
weight = 0.5,
mean = 1.4,
sigma = sd_tot
)
# RBesT::ess(prior_ctr)
## derive prior for treatment
## weak informative using same parameters as for robustify component
prior_trt <- RBesT::mixnorm(
comp1 = c(w = 1, m = 1.4, n = 1),
sigma = sd_tot,
param = "mn"
)
dose_levels <- c(0, 50, 100, 200)
## combine priors in list
prior_list <- c(list(prior_ctr), rep(list(prior_trt), times = length(dose_levels[-1])))
# Pre-Specification (B)MCPMod
## candidate models for MCPMod
# linear function - no guestimates needed
exp <- DoseFinding::guesst(
d = 50,
p = c(0.2),
model = "exponential",
Maxd = max(dose_levels)
)
emax <- DoseFinding::guesst(
d = 100,
p = c(0.9),
model = "emax"
)
mods <- DoseFinding::Mods(
linear = NULL,
emax = emax,
exponential = exp,
doses = dose_levels,
maxEff = 10,
placEff = 1.4
)
# Simulation of new trial
## Note: This part will be simplified and direct results from one trial will be used
mods_sim <- DoseFinding::Mods(
emax = emax,
doses = dose_levels,
maxEff = 12,
placEff = 1.4
)
n_patients <- c(50, 50, 50, 50)
data <- simulateData(
n_patients = n_patients,
dose_levels = dose_levels,
sd = sd_tot,
mods = mods_sim,
n_sim = 1
)
data_emax <- data[, c("simulation", "dose", "emax")]
names(data_emax)[3] <- "response"
posterior_emax <- getPosterior(
data = data_emax,
prior_list = prior_list
)
# Evaluation of Bayesian MCPMod
contr_mat <- DoseFinding::optContr(
models = mods,
doses = dose_levels,
w = n_patients
)
## Calculation of critical value can be done with critVal function
crit_val_equal <- DoseFinding:::critVal(contr_mat$corMat, alpha = 0.05, df = 0, alternative = "one.sided")
crit_pval <- stats::pnorm(crit_val_equal)
ess_prior <- round(unlist(lapply(prior_list, RBesT::ess)))
### Evaluation of Bayesian MCPMod
contr_mat_prior <- DoseFinding::optContr(
models = mods,
doses = dose_levels,
w = n_patients + ess_prior
)
BMCP_result <- performBayesianMCP(
posterior_list = list(posterior_emax),
contr = contr_mat_prior,
crit_prob = crit_pval
)
# Model fit
# This part is currently not working
post_observed <- posterior_emax
model_shapes <- c("linear", "emax", "exponential")
# Option a) Simplified approach by using frequentist idea
fit_simple <- getModelFits(
models = model_shapes,
dose_levels = dose_levels,
posterior = post_observed,
simple = TRUE
)
# Option b) Making use of the complete posterior distribution
fit <- getModelFits(
models = model_shapes,
dose_levels = dose_levels,
posterior = post_observed,
simple = FALSE
)
# Test with default parameters and more models
plot1 <- plot.modelFits(fit)
expect_s3_class(plot1, "ggplot")
# Test with cr_intv = TRUE and more models
plot2 <- plot.modelFits(fit, cr_intv = TRUE)
expect_s3_class(plot2, "ggplot")
# Test with gAIC = FALSE and more models
plot3 <- plot.modelFits(fit, gAIC = FALSE)
expect_s3_class(plot3, "ggplot")
# Test with avg_fit = FALSE and more models
plot4 <- plot.modelFits(fit, avg_fit = FALSE)
expect_s3_class(plot4, "ggplot")
# Test with all non-default parameters and more models
plot5 <- plot.modelFits(fit, cr_intv = TRUE, gAIC = FALSE, avg_fit = FALSE)
expect_s3_class(plot5, "ggplot")
})
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.