Returns the simulated power, stopping probabilities, conditional power, and expected sample size for testing rates in a multi-arm treatment groups testing situation.
getSimulationMultiArmRates(
design = NULL,
...,
activeArms = 3L,
effectMatrix = NULL,
typeOfShape = c("linear", "sigmoidEmax", "userDefined"),
piMaxVector = seq(0.2, 0.5, 0.1),
piControl = 0.2,
gED50 = NA_real_,
slope = 1,
intersectionTest = c("Dunnett", "Bonferroni", "Simes", "Sidak", "Hierarchical"),
directionUpper = TRUE,
adaptations = NA,
typeOfSelection = c("best", "rBest", "epsilon", "all", "userDefined"),
effectMeasure = c("effectEstimate", "testStatistic"),
successCriterion = c("all", "atLeastOne"),
epsilonValue = NA_real_,
rValue = NA_real_,
threshold = -Inf,
plannedSubjects = NA_real_,
allocationRatioPlanned = NA_real_,
minNumberOfSubjectsPerStage = NA_real_,
maxNumberOfSubjectsPerStage = NA_real_,
conditionalPower = NA_real_,
piH1 = NA_real_,
piControlH1 = NA_real_,
maxNumberOfIterations = 1000L,
seed = NA_real_,
calcSubjectsFunction = NULL,
selectArmsFunction = NULL,
showStatistics = FALSE
)
The trial design. If no trial design is specified, a fixed sample size design is used.
In this case, Type I error rate alpha
, Type II error rate beta
, twoSidedPower
,
and sided
can be directly entered as argument where necessary.
Ensures that all arguments (starting from the "...") are to be named and that a warning will be displayed if unknown arguments are passed.
The number of active treatment arms to be compared with control, default is 3.
Matrix of effect sizes with activeArms
columns and number of rows
reflecting the different situations to consider.
The shape of the dose-response relationship over the treatment groups.
This can be either "linear"
, "sigmoidEmax"
, or "userDefined"
.
If "sigmoidEmax"
is selected, "gED50"
and "slope"
has to be entered
to specify the ED50 and the slope of the sigmoid Emax model.
For "linear"
and "sigmoidEmax"
, "muMaxVector"
specifies the range
of effect sizes for the treatment group with highest response.
If "userDefined"
is selected, "effectMatrix"
has to be entered.
Range of assumed probabilities for the treatment group with
highest response for "linear"
and "sigmoidEmax"
model,
default is seq(0, 1, 0.2)
.
If specified, the assumed probability in the control arm for simulation and under which the sample size recalculation is performed.
If "sigmoidEmax"
is selected, "gED50"
has to be entered
to specify the ED50 of the sigmoid Emax model.
If "sigmoidEmax"
is selected, "slope"
can be entered
to specify the slope of the sigmoid Emax model, default is 1.
Defines the multiple test for the intersection
hypotheses in the closed system of hypotheses.
Five options are available in multi-arm designs: "Dunnett"
, "Bonferroni"
, "Simes"
,
"Sidak"
, and "Hierarchical"
, default is "Dunnett"
.
Specifies the direction of the alternative,
only applicable for one-sided testing; default is TRUE
which means that larger values of the test statistics yield smaller p-values.
A vector of length kMax - 1
indicating whether or not an adaptation takes
place at interim k, default is rep(TRUE, kMax - 1)
.
The way the treatment arms are selected at interim.
Five options are available: "best"
, "rbest"
, "epsilon"
, "all"
, and "userDefined"
,
default is "best"
.
For "rbest"
(select the rValue
best treatment arms), the parameter rValue
has to be specified,
for "epsilon"
(select treatment arm not worse than epsilon compared to the best), the parameter
epsilonValue
has to be specified.
If "userDefined"
is selected, "selectArmsFunction"
has to be specified.
Criterion for treatment arm selection, either based on test statistic
("testStatistic"
) or effect estimate (difference for means and rates or ratio for survival) ("effectEstimate"
),
default is "effectEstimate"
.
Defines when the study is stopped for efficacy at interim.
Two options are available: "all"
stops the trial
if the efficacy criterion is fulfilled for all selected treatment arms,
"atLeastOne"
stops if at least one of the selected treatment arms is shown to be
superior to control at interim, default is "all"
.
For "epsilon"
(select treatment arm not worse than
epsilon compared to the best), the parameter epsilonValue
has to be specified.
For "rbest"
(select the rValue
best treatment arms),
the parameter rValue
has to be specified.
Selection criterion: treatment arm is selected only if effectMeasure
exceeds threshold
, default is -Inf
.
threshold
can also be a vector of length activeArms
referring to
a separate threshold condition over the treatment arms.
plannedSubjects
is a vector of length kMax
(the number of stages of the design)
that determines the number of cumulated (overall) subjects when the interim stages are planned.
For two treatment arms, it is the number of subjects for both treatment arms.
For multi-arm designs, plannedSubjects
refers to the number of subjects per selected active arm.
The planned allocation ratio n1 / n2
for a two treatment groups
design, default is 1
. For multi-arm designs, it is the allocation ratio relating the active arm(s) to the control.
When performing a data driven sample size recalculation,
the vector minNumberOfSubjectsPerStage
with length kMax determines the
minimum number of subjects per stage (i.e., not cumulated), the first element
is not taken into account. For two treatment arms, it is the number of subjects for both treatment arms.
For multi-arm designs minNumberOfSubjectsPerStage
refers
to the minimum number of subjects per selected active arm.
When performing a data driven sample size recalculation,
the vector maxNumberOfSubjectsPerStage
with length kMax determines the maximum number
of subjects per stage (i.e., not cumulated), the first element is not taken into account.
For two treatment arms, it is the number of subjects for both treatment arms.
For multi-arm designs maxNumberOfSubjectsPerStage
refers
to the maximum number of subjects per selected active arm.
If conditionalPower
together with minNumberOfSubjectsPerStage
and
maxNumberOfSubjectsPerStage
(or minNumberOfEventsPerStage
and maxNumberOfEventsPerStage
for survival designs) is specified, a sample size recalculation based on the specified conditional power is performed.
It is defined as the power for the subsequent stage given the current data. By default,
the conditional power will be calculated under the observed effect size. Optionally, you can also specify thetaH1
and
stDevH1
(for simulating means), pi1H1
and pi2H1
(for simulating rates), or thetaH1
(for simulating
hazard ratios) as parameters under which it is calculated and the sample size recalculation is performed.
If specified, the assumed probability in the active treatment arm(s) under which the sample size recalculation is performed.
If specified, the assumed probability in the reference group
(if different from piControl
) for which the conditional power was calculated.
The number of simulation iterations, default is 1000.
The seed to reproduce the simulation, default is a random seed.
Optionally, a function can be entered that defines the way of performing the sample size
recalculation. By default, sample size recalculation is performed with conditional power with specified
minNumberOfSubjectsPerStage
and maxNumberOfSubjectsPerStage
(see details and examples).
Optionally, a function can be entered that defines the way of how treatment arms
are selected. This function is allowed to depend on effectVector
with length activeArms
and stage
(see examples).
If TRUE
, summary statistics of the simulated data
are displayed for the print
command, otherwise the output is suppressed, default
is FALSE
.
Returns a SimulationResults
object.
The following generics (R generic functions) are available for this object:
names
to obtain the field names,
print
to print the object,
summary
to display a summary of the object,
plot
to plot the object,
as.data.frame
to coerce the object to a data.frame
,
Click on the link of a generic in the list above to go directly to the help documentation of
the rpact
specific implementation of the generic.
Note that you can use the R function methods
to get all the methods of a generic and
to identify the object specific name of it, e.g.,
use methods("plot")
to get all the methods for the plot
generic.
There you can find, e.g., plot.AnalysisResults
and
obtain the specific help documentation linked above by typing ?plot.AnalysisResults
.
At given design the function simulates the power, stopping probabilities, selection probabilities, and expected sample size at given number of subjects, parameter configuration, and treatment arm selection rule in the multi-arm situation. An allocation ratio can be specified referring to the ratio of number of subjects in the active treatment groups as compared to the control group.
The definition of pi1H1
and/or piControl
makes only sense if kMax
> 1
and if conditionalPower
, minNumberOfSubjectsPerStage
, and
maxNumberOfSubjectsPerStage
(or calcSubjectsFunction
) are defined.
calcSubjectsFunction
This function returns the number of subjects at given conditional power and
conditional critical value for specified testing situation.
The function might depend on the variables
stage
,
selectedArms
,
directionUpper
,
plannedSubjects
,
allocationRatioPlanned
,
minNumberOfSubjectsPerStage
,
maxNumberOfSubjectsPerStage
,
conditionalPower
,
conditionalCriticalValue
,
overallRates
,
overallRatesControl
,
piH1
, and
piControlH1
.
The function has to contain the three-dots argument '...' (see examples).
# NOT RUN {
# Simulate the power of the combination test with two interim stages and
# O'Brien & Fleming boundaries using Dunnett's intersection tests if the
# best treatment arm is selected at first interim. Selection only take
# place if a non-negative treatment effect is observed (threshold = 0);
# 20 subjects per stage and treatment arm, simulation is performed for
# four parameter configurations.
maxNumberOfIterations <- 50
designIN <- getDesignInverseNormal(typeOfDesign = "OF")
effectMatrix <- matrix(c(0.2,0.2,0.2,
0.4,0.4,0.4,
0.4,0.5,0.5,
0.4,0.5,0.6),
byrow = TRUE, nrow = 4, ncol = 3)
x <- getSimulationMultiArmRates(design = designIN, typeOfShape = "userDefined",
effectMatrix = effectMatrix , piControl = 0.2,
typeOfSelection = "best", threshold = 0, intersectionTest = "Dunnett",
plannedSubjects = c(20, 40, 60),
maxNumberOfIterations = maxNumberOfIterations)
summary(x)
# }
# NOT RUN {
# }
Run the code above in your browser using DataLab