Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
fig.align = "center",
collapse = TRUE,
comment = "#>",
cache.lazy = FALSE
)
## ----setup, message = FALSE, warning = FALSE----------------------------------
library(gt)
library(gMCP)
library(lrstat)
library(graphicalMCP)
## ----create-graph, fig.dim=c(5, 3.4)------------------------------------------
hypotheses <- c(0.5, 0.5, 0, 0, 0, 0)
epsilon <- 1e-5
transitions <- rbind(
c(0, 0.5, 0.25, 0, 0.25, 0),
c(0.5, 0, 0, 0.25, 0, 0.25),
c(0, 0, 0, 0, 1, 0),
c(epsilon, 0, 0, 0, 0, 1 - epsilon),
c(0, epsilon, 1 - epsilon, 0, 0, 0),
c(0, 0, 0, 1, 0, 0)
)
hyp_names <- c("H1", "H2", "H3", "H4", "H5", "H6")
g <- graph_create(hypotheses, transitions, hyp_names)
plot_layout <- rbind(
c(0.15, 0.5),
c(0.65, 0.5),
c(0, 0),
c(0.5, 0),
c(0.3, 0),
c(0.8, 0)
)
plot(
g,
layout = plot_layout,
eps = epsilon,
edge_curves = c(pairs = 0.8),
vertex.size = 35
)
## ----graph-test-bonferroni----------------------------------------------------
p_values <- c(0.015, 0.013, 0.01, 0.007, 0.1, 0.0124)
test_results <- graph_test_closure(
g,
p = p_values,
alpha = 0.025,
verbose = TRUE,
test_values = TRUE
)
test_results$outputs$adjusted_p
test_results$outputs$rejected
# Same testing results as
# 'graph_test_shortcut(g, p = p_values, alpha = 0.025)$outputs$rejected'
## ----graph-test-verbose-------------------------------------------------------
test_results_verbose <-
graph_test_closure(
g,
p = p_values,
alpha = 0.025,
verbose = TRUE
)
head(test_results_verbose$details$results)
## ----graph-test-test_values---------------------------------------------------
test_results_test_values <-
graph_test_closure(
g,
test_types = "b",
p = p_values,
alpha = 0.025,
test_values = TRUE
)
head(test_results_test_values$test_values$results)
## ----graph-test-parametric----------------------------------------------------
corr_12 <- matrix(0.5, nrow = 2, ncol = 2)
diag(corr_12) <- 1
test_results_parametric <-
graph_test_closure(
g,
p = p_values,
alpha = 0.025,
test_groups = list(c(1, 2), 3:6),
test_types = c("parametric", "bonferroni"),
test_corr = list(corr_12, NA),
test_values = TRUE
)
test_results_parametric$outputs$adjusted_p
test_results_parametric$outputs$rejected
head(test_results_parametric$test_values$results)
## ----graph-test-parametric-simes----------------------------------------------
test_results_parametric_simes <-
graph_test_closure(
g,
p = p_values, alpha = 0.025,
test_groups = list(c(1, 2), c(3, 5), c(4, 6)),
test_types = c("parametric", "simes", "simes"),
test_corr = list(corr_12, NA, NA),
test_values = TRUE
)
test_results_parametric_simes$outputs$adjusted_p
test_results_parametric_simes$outputs$rejected
head(test_results_parametric_simes$test_values$results)
## ----power-calculate-primary--------------------------------------------------
alpha <- 0.025
prop <- c(0.3, 0.181, 0.181)
sample_size <- rep(200, 3)
unpooled_variance <-
prop[-1] * (1 - prop[-1]) / sample_size[-1] +
prop[1] * (1 - prop[1]) / sample_size[1]
noncentrality_parameter_primary <-
-(prop[-1] - prop[1]) / sqrt(unpooled_variance)
marginal_power_primary <- pnorm(
qnorm(alpha, lower.tail = FALSE),
mean = noncentrality_parameter_primary,
sd = 1,
lower.tail = FALSE
)
names(marginal_power_primary) <- c("H1", "H2")
marginal_power_primary
## ----power-calculate-secondary------------------------------------------------
mean_change_se1 <- c(5, 7.5, 8.25)
sd <- rep(10, 3)
variance <- sd[-1]^2 / sample_size[-1] + sd[1]^2 / sample_size[1]
noncentrality_parameter_se1 <-
(mean_change_se1[-1] - mean_change_se1[1]) /
sqrt(variance)
marginal_power_se1 <- pnorm(
qnorm(alpha, lower.tail = FALSE),
mean = noncentrality_parameter_se1,
sd = 1,
lower.tail = FALSE
)
names(marginal_power_se1) <- c("H3", "H4")
marginal_power_se1
mean_change_se2 <- c(6, 8, 9)
noncentrality_parameter_se2 <-
(mean_change_se2[-1] - mean_change_se2[1]) /
sqrt(variance)
marginal_power_se2 <- pnorm(
qnorm(alpha, lower.tail = FALSE),
mean = noncentrality_parameter_se2,
sd = 1,
lower.tail = FALSE
)
names(marginal_power_se2) <- c("H5", "H6")
marginal_power_se2
## ----power-calculate-correlation----------------------------------------------
corr <- matrix(0, nrow = 6, ncol = 6)
corr[1, 2] <-
corr[3, 4] <-
corr[5, 6] <-
sqrt(
sample_size[2] / sum(sample_size[1:2]) *
sample_size[3] / sum(sample_size[c(1, 3)])
)
rho <- 0.5
corr[1, 3] <-
corr[1, 5] <-
corr[2, 4] <-
corr[2, 6] <-
corr[3, 5] <-
corr[4, 6] <-
rho
corr[1, 4] <- corr[1, 6] <- corr[2, 3] <- corr[2, 5] <- corr[1, 2] * rho
corr[3, 6] <- corr[1, 3] * corr[1, 6]
corr[4, 5] <- corr[1, 4] * corr[1, 6]
corr <- corr + t(corr)
diag(corr) <- 1
colnames(corr) <- hyp_names
rownames(corr) <- hyp_names
corr
## ----power-calculate-success--------------------------------------------------
success_fns <- list(
# Probability to reject H1
H1 = function(x) x[1],
# Expected number of rejections
`Expected no. of rejections` =
function(x) x[1] + x[2] + x[3] + x[4] + x[5] + x[6],
# Probability to reject at least one hypothesis
`AtLeast1` = function(x) x[1] | x[2] | x[3] | x[4] | x[5] | x[6],
# Probability to reject all hypotheses
`All` = function(x) x[1] & x[2] & x[3] & x[4] & x[5] & x[6],
# Probability to reject both H1 and H2
`H1andH2` = function(x) x[1] & x[2],
# Probability to reject all hypotheses for the low dose or the high dose
`(H1andH3andH5)or(H2andH4andH6)` <-
function(x) (x[1] & x[3] & x[5]) | (x[2] & x[4] & x[6])
)
## ----power-calculate-calculate------------------------------------------------
set.seed(1234)
power_bonferroni <- graph_calculate_power(
g,
alpha = 0.025,
sim_corr = corr,
sim_n = 1e5,
power_marginal = c(
marginal_power_primary,
marginal_power_se1,
marginal_power_se2
),
sim_success = success_fns
)
round(power_bonferroni$power$power_local, 3)
set.seed(1234)
power_parametric <- graph_calculate_power(
g,
alpha = 0.025,
sim_corr = corr,
sim_n = 1e5,
power_marginal = c(
marginal_power_primary,
marginal_power_se1,
marginal_power_se2
),
test_groups = list(c(1, 2), 3:6),
test_types = c("parametric", "bonferroni"),
test_corr = list(corr_12, NA),
sim_success = success_fns
)
round(power_parametric$power$power_local, 3)
set.seed(1234)
power_parametric_simes <- graph_calculate_power(
g,
alpha = 0.025,
sim_corr = corr,
sim_n = 1e5,
power_marginal = c(
marginal_power_primary,
marginal_power_se1,
marginal_power_se2
),
test_groups = list(c(1, 2), c(3, 5), c(4, 6)),
test_types = c("parametric", "simes", "simes"),
test_corr = list(corr_12, NA, NA),
sim_success = success_fns
)
round(power_parametric_simes$power$power_local, 3)
## ----power-calculate-calculate_verbose----------------------------------------
set.seed(1234)
power_verbose_output_parametric_simes <- graph_calculate_power(
g,
alpha = 0.025,
sim_corr = corr,
sim_n = 1e5,
power_marginal = c(
marginal_power_primary,
marginal_power_se1,
marginal_power_se2
),
test_groups = list(c(1, 2), c(3, 5), c(4, 6)),
test_types = c("parametric", "simes", "simes"),
test_corr = list(corr_12, NA, NA),
sim_success = success_fns,
verbose = TRUE
)
head(power_verbose_output_parametric_simes$details$p_sim, 10)
print(power_verbose_output_parametric_simes,
indent = 4,
precision = 6
)
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.