The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
Graphical approaches for multiple comparison procedures (MCPs) are a
general framework to control the familywise error rate strongly as a
pre-specified significance level \(0<\alpha<1\). This approach includes
many commonly used MCPs as special cases and is transparent in
visualizing MCPs for better communications. graphicalMCP
is
designed to design and analyze graphical MCPs in a flexible, informative
and efficient way.
The base object in graphicalMCP
is an
initial_graph
, which consists of a vector of hypothesis
weights and a matrix of transition weights (Bretz
et al. 2009). This object can be created via
graph_create()
. In the graphical representation, hypotheses
are denoted as nodes (or vertices) associated with hypothesis weights. A
directed edge from a hypothesis to another indicates the direction of
propagation of the hypothesis weight from the origin hypothesis to the
end hypothesis. The edge is weighted by a transition weight indicating
the proportion of propagation.
library(graphicalMCP)
# A graph of two primary hypotheses (H1 and H2) and two secondary hypotheses (H3 and H4)
<- c(0.5, 0.5, 0, 0)
hypotheses <- rbind(
transitions c(0, 0, 1, 0),
c(0, 0, 0, 1),
c(0, 1, 0, 0),
c(1, 0, 0, 0)
)<- c("H1", "H2", "H3", "H4")
hyp_names <- graph_create(hypotheses, transitions, hyp_names)
example_graph
example_graph#> Initial graph
#>
#> --- Hypothesis weights ---
#> H1: 0.5
#> H2: 0.5
#> H3: 0.0
#> H4: 0.0
#>
#> --- Transition weights ---
#> H1 H2 H3 H4
#> H1 0 0 1 0
#> H2 0 0 0 1
#> H3 0 1 0 0
#> H4 1 0 0 0
plot(example_graph, vertex.size = 60)
When a hypothesis is removed from the graph, hypothesis and transition weights of remaining hypotheses should be updated according to Algorithm 1 in Bretz et al. (2011). For example, assume that hypotheses H1, H2 and H4 are removed from the graph. The updated graph after removing three hypotheses is below.
<- graph_update(
updated_example
example_graph,delete = c(TRUE, TRUE, FALSE, TRUE)
)
updated_example#> Initial and final graphs -------------------------------------------------------
#>
#> Initial graph
#>
#> --- Hypothesis weights ---
#> H1: 0.5
#> H2: 0.5
#> H3: 0.0
#> H4: 0.0
#>
#> --- Transition weights ---
#> H1 H2 H3 H4
#> H1 0 0 1 0
#> H2 0 0 0 1
#> H3 0 1 0 0
#> H4 1 0 0 0
#>
#> Updated graph after deleting hypotheses 1, 2, 4
#>
#> --- Hypothesis weights ---
#> H1: NA
#> H2: NA
#> H3: 1
#> H4: NA
#>
#> --- Transition weights ---
#> H1 H2 H3 H4
#> H1 NA NA NA NA
#> H2 NA NA NA NA
#> H3 NA NA 0 NA
#> H4 NA NA NA NA
plot(updated_example, vertex.size = 60)
Given the set of p-values of all hypotheses, graphical MCPs can be
performed using graph_test_shortcut()
to determine which
hypotheses can be rejected at the significance level alpha
.
Assume p-values are 0.01, 0.005, 0.03, and 0.01 for hypotheses H1-H4.
With a one-sided significance level alpha = 0.025
, rejected
hypotheses are H1, H2, and H4. More details about the shortcut testing
can be found in vignette("shortcut-testing")
.
<- graph_test_shortcut(
test_results
example_graph,p = c(0.01, 0.005, 0.03, 0.01),
alpha = 0.025
)$outputs$rejected
test_results#> H1 H2 H3 H4
#> TRUE TRUE FALSE TRUE
A similar testing procedure can be performed using the closure
principle. This will allow more tests for intersection hypotheses, e.g.,
Simes, parametric and a mixture of them. If the test type is Bonferroni,
the resulting closed procedure is equivalent to the shortcut procedure
above. Additional details about closed testing can be found in
vignette("closed-testing")
.
<- graph_test_closure(
test_results_closed
example_graph,p = c(0.01, 0.005, 0.03, 0.01),
alpha = 0.025,
test_types = "bonferroni",
test_groups = list(1:4)
)$outputs$rejected
test_results_closed#> H1 H2 H3 H4
#> TRUE TRUE FALSE TRUE
With multiplicity adjustment, such as graphical MCPs, the “power” to
reject each hypothesis will be affected, compared to its marginal power.
The latter is the power to rejected a hypothesis at the significance
level alpha
without multiplicity adjustment. The marginal
power is usually obtained from other pieces of statistical software.
graph_calculate_power()
performs power simulations to
assess the power after adjusting for the graphical MCP (Bretz, Maurer, and Hommel 2011). Assume that
the marginal power to reject H1-H4 is 90%, 90%, 80%, and 80% and all
test statistics are independent of each other. The local power after the
multiplicity adjustment is 87.7%, 87.7%, 67.2%, and 67.2% respectively
for H1-H4. Additional details about power simulations can be found in
vignette("shortcut-testing")
and
vignette("closed-testing")
.
set.seed(1234)
<- graph_calculate_power(
power_results
example_graph,sim_n = 1e6,
power_marginal = c(0.9, 0.9, 0.8, 0.8)
)$power$power_local
power_results#> H1 H2 H3 H4
#> 0.875760 0.876295 0.670470 0.671431
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.