Used internally. Validates the inputs common to all trial specifications, as
specified in setup_trial(), setup_trial_binom() and setup_trial_norm().
Usage
validate_trial(
arms,
true_ys,
start_probs = NULL,
fixed_probs = NULL,
min_probs = rep(NA, length(arms)),
max_probs = rep(NA, length(arms)),
rescale_probs = NULL,
data_looks = NULL,
max_n = NULL,
look_after_every = NULL,
randomised_at_looks = NULL,
control = NULL,
control_prob_fixed = NULL,
inferiority = 0.01,
superiority = 0.99,
equivalence_prob = NULL,
equivalence_diff = NULL,
equivalence_only_first = NULL,
futility_prob = NULL,
futility_diff = NULL,
futility_only_first = NULL,
highest_is_best = FALSE,
soften_power = 1,
cri_width = 0.95,
n_draws = 5000,
robust = FALSE,
description = NULL,
add_info = NULL,
fun_y_gen,
fun_draws,
fun_raw_est
)Arguments
- arms
character vector with unique names for the trial arms.
- true_ys
numeric vector specifying true outcomes (e.g., event probabilities, mean values, etc.) for all trial
arms.- start_probs
numeric vector, allocation probabilities for each arm at the beginning of the trial. The default (
NULL) automatically generates equal randomisation probabilities for each arm.- fixed_probs
numeric vector, fixed allocation probabilities for each arm. Must be either a numeric vector with
NAfor arms without fixed probabilities and values between0and1for the other arms orNULL(default), if adaptive randomisation is used for all arms or if one of the special settings ("sqrt-based","sqrt-based start","sqrt-based fixed", or"match") is specified forcontrol_prob_fixed(described below).- min_probs
numeric vector, lower threshold for adaptive allocation probabilities; lower probabilities will be rounded up to these values. Must be
NA(default for all arms) if no lower threshold is wanted and for arms using fixed allocation probabilities.- max_probs
numeric vector, upper threshold for adaptive allocation probabilities; higher probabilities will be rounded down to these values. Must be
NA(default for all arms) if no threshold is wanted and for arms using fixed allocation probabilities.- rescale_probs
NULL(default) or one of either"fixed","limits", or"both". Rescalesfixed_probs(if"fixed"or"both") andmin_probs/max_probs(if"limits"or"both") after arm dropping in trial specifications with>2 armsusing arescale_factordefined asinitial number of arms/number of active arms."fixed_probsandmin_probsare rescaled asinitial value * rescale factor, except forfixed_probscontrolled by thecontrol_prob_fixedargument, which are never rescaled.max_probsare rescaled as1 - ( (1 - initial value) * rescale_factor).
Must beNULLif there are only2 armsor ifcontrol_prob_fixedis"sqrt-based fixed". If notNULL, one or more valid non-NAvalues must be specified for eithermin_probs/max_probsorfixed_probs(not counting a fixed value for the originalcontrolifcontrol_prob_fixedis"sqrt-based"/"sqrt-based start"/"sqrt-based fixed").
Note: using this argument and specific combinations of values in the other arguments may lead to invalid combined (total) allocation probabilities after arm dropping, in which case all probabilities will ultimately be rescaled to sum to1. It is the responsibility of the user to ensure that rescaling fixed allocation probabilities and minimum/maximum allocation probability limits will not lead to invalid or unexpected allocation probabilities after arm dropping.
Finally, any initial values that are overwritten by thecontrol_prob_fixedargument after arm dropping will not be rescaled.- data_looks
vector of increasing integers, specifies when to conduct adaptive analyses (= the total number of patients with available outcome data at each adaptive analysis). The last number in the vector represents the final adaptive analysis, i.e., the final analysis where superiority, inferiority, practical equivalence, or futility can be claimed. Instead of specifying
data_looks, themax_nandlook_after_everyarguments can be used in combination (in which casedata_looksmust beNULL, the default value).- max_n
single integer, number of patients with available outcome data at the last possible adaptive analysis (defaults to
NULL). Must only be specified ifdata_looksisNULL. Requires specification of thelook_after_everyargument.- look_after_every
single integer, specified together with
max_n. Adaptive analyses will be conducted after everylook_after_everypatients have available outcome data, and at the total sample size as specified bymax_n(max_ndoes not need to be a multiple oflook_after_every). If specified,data_looksmust beNULL(default).- randomised_at_looks
vector of increasing integers or
NULL, specifying the number of patients randomised at the time of each adaptive analysis, with new patients randomised using the current allocation probabilities at said analysis. IfNULL(the default), the number of patients randomised at each analysis will match the number of patients with available outcome data at said analysis, as specified bydata_looksormax_nandlook_after_every, i.e., outcome data will be available immediately after randomisation for all patients.
If notNULL, the vector must be of the same length as the number of adaptive analyses specified bydata_looksormax_nandlook_after_every, and all values must be larger than or equal to the number of patients with available outcome data at each analysis.- control
single character string, name of one of the
armsorNULL(default). If specified, this arm will serve as a common control arm, to which all other arms will be compared and the inferiority/superiority/equivalence thresholds (see below) will be for those comparisons. Seesetup_trial()Details for information on behaviour with respect to these comparisons.- control_prob_fixed
if a common
controlarm is specified, this can be setNULL(the default), in which case the control arm allocation probability will not be fixed if control arms change (the allocation probability for the first control arm may still be fixed usingfixed_probs, but will not be 'reused' for the new control arm).
If notNULL, a vector of probabilities of either length1ornumber of arms - 1can be provided, or one of the special arguments"sqrt-based","sqrt-based start","sqrt-based fixed"or"match".
Seesetup_trial()Details for details on how this affects trial behaviour.- inferiority
single numeric value or vector of numeric values of the same length as the maximum number of possible adaptive analyses, specifying the probability threshold(s) for inferiority (default is
0.01). All values must be>= 0and<= 1, and if multiple values are supplied, no values may be lower than the preceding value. If a commoncontrolis not used, all values must be< 1 / number of arms. An arm will be considered inferior and dropped if the probability that it is best (when comparing all arms) or better than the control arm (when a commoncontrolis used) drops below the inferiority threshold at an adaptive analysis.- superiority
single numeric value or vector of numeric values of the same length as the maximum number of possible adaptive analyses, specifying the probability threshold(s) for superiority (default is
0.99). All values must be>= 0and<= 1, and if multiple values are supplied, no values may be higher than the preceding value. If the probability that an arm is best (when comparing all arms) or better than the control arm (when a commoncontrolis used) exceeds the superiority threshold at an adaptive analysis, said arm will be declared the winner and the trial will be stopped (if no commoncontrolis used or if the last comparator is dropped in a design with a common control) or become the new control and the trial will continue (if a common control is specified).- equivalence_prob
single numeric value, vector of numeric values of the same length as the maximum number of possible adaptive analyses or
NULL(default, corresponding to no equivalence assessment), specifying the probability threshold(s) for equivalence. If notNULL, all values must be> 0and<= 1, and if multiple values are supplied, no value may be higher than the preceding value. If notNULL, arms will be dropped for equivalence if the probability of either (a) equivalence compared to a commoncontrolor (b) equivalence between all arms remaining (designs without a commoncontrol) exceeds the equivalence threshold at an adaptive analysis. Requires specification ofequivalence_diffandequivalence_only_first.- equivalence_diff
single numeric value (
> 0) orNULL(default, corresponding to no equivalence assessment). If a numeric value is specified, estimated absolute differences smaller than this threshold will be considered equivalent. For designs with a commoncontrolarm, the differences between each non-control arm and thecontrolarm is used, and for trials without a commoncontrolarm, the difference between the highest and lowest estimated outcome rates are used and the trial is only stopped for equivalence if all remaining arms are equivalent.- equivalence_only_first
single logical in trial specifications where
equivalence_probandequivalence_diffare specified and a commoncontrolarm is included, otherwiseNULL(default). If a commoncontrolarm is used, this specifies whether equivalence will only be assessed for the first control (ifTRUE) or also for subsequentcontrolarms (ifFALSE) if one arm is superior to the first control and becomes the new control.- futility_prob
single numeric value, vector of numeric values of the same length as the maximum number of possible adaptive analyses or
NULL(default, corresponding to no futility assessment), specifying the probability threshold(s) for futility. All values must be> 0and<= 1, and if multiple values are supplied, no value may be higher than the preceding value. If notNULL, arms will be dropped for futility if the probability for futility compared to the commoncontrolexceeds the futility threshold at an adaptive analysis. Requires a commoncontrolarm (otherwise this argument must beNULL), specification offutility_diff, andfutility_only_first.- futility_diff
single numeric value (
> 0) orNULL(default, corresponding to no futility assessment). If a numeric value is specified, estimated differences below this threshold in the beneficial direction (as specified inhighest_is_best) will be considered futile when assessing futility in designs with a commoncontrolarm. If only 1 arm remains after dropping arms for futility, the trial will be stopped without declaring the last arm superior.- futility_only_first
single logical in trial specifications designs where
futility_probandfutility_diffare specified, otherwiseNULL(default and required in designs without a commoncontrolarm). Specifies whether futility will only be assessed against the firstcontrol(ifTRUE) or also for subsequent control arms (ifFALSE) if one arm is superior to the first control and becomes the new control.- highest_is_best
single logical, specifies whether larger estimates of the outcome are favourable or not; defaults to
FALSE, corresponding to, e.g., an undesirable binary outcomes (e.g., mortality) or a continuous outcome where lower numbers are preferred (e.g., hospital length of stay).- soften_power
either a single numeric value or a numeric vector of exactly the same length as the maximum number of looks/adaptive analyses. Values must be between
0and1(default); if< 1, then re-allocated non-fixed allocation probabilities are all raised to this power (followed by rescaling to sum to1) to make adaptive allocation probabilities less extreme, in turn used to redistribute remaining probability while respecting limits when defined bymin_probsand/ormax_probs. If1, then no softening is applied.- cri_width
single numeric
>= 0and< 1, the width of the percentile-based credible intervals used when summarising individual trial results. Defaults to0.95, corresponding to 95% credible intervals.- n_draws
single integer, the number of draws from the posterior distributions for each arm used when running the trial. Defaults to
5000; can be reduced for a speed gain (at the potential loss of stability of results if too low) or increased for increased precision (increasing simulation time). Values< 100are not allowed and values< 1000are not recommended and warned against.- robust
single logical, if
TRUE(default) the medians and median absolute deviations (scaled to be comparable to the standard deviation for normal distributions; MAD_SDs, seestats::mad()) are used to summarise the posterior distributions; ifFALSE, the means and standard deviations (SDs) are used instead (slightly faster, but may be less appropriate for posteriors skewed on the natural scale).- description
optional single character string describing the trial design, will only be used in print functions if not
NULL(the default).- add_info
optional single string containing additional information regarding the trial design or specifications, will only be used in print functions if not
NULL(the default).- fun_y_gen
function, generates outcomes. See
setup_trial()Details for information on how to specify this function.
Note: this function is called once during setup to validate its output (with the global random seed restored afterwards).- fun_draws
function, generates posterior draws. See
setup_trial()Details for information on how to specify this function.
Note: this function is called up to three times during setup to validate its output (with the global random seed restored afterwards).- fun_raw_est
function that takes a numeric vector and returns a single numeric value, used to calculate a raw summary estimate of the outcomes in each
arm. Defaults tomean(), which is always used in thesetup_trial_binom()andsetup_trial_norm()functions.
Note: the function is called one time per arm during setup to validate the output structure.