power.2TOST: Power for two simultaneous TOST procedures

View source: R/power_type1_2TOST.R

power.2TOSTR Documentation

Power for two simultaneous TOST procedures


Calculates the exact power of two simultaneous TOST procedures (where the two parameters of the two TOSTs are correlated with some correlation) for various study designs used in BE studies


power.2TOST(alpha = c(0.05, 0.05), logscale = TRUE, theta0, theta1, theta2,  
            CV, n, rho, design = "2x2", robust = FALSE, nsims, setseed = TRUE,
            details = FALSE)



Vector; contains one-sided significance level for each of the two TOSTs.
For one TOST, by convention mostly set to 0.05.


Should the data used on log-transformed (TRUE, default) or on original scale (FALSE)?


Vector; contains lower bioequivalence limit for each of the two TOSTs.
In case of logscale=TRUE it is given as ratio, otherwise as diff. to 1.
Defaults to c(0.8, 0.8) if logscale=TRUE or to c(-0.2, -0.2) if logscale=FALSE.


Vector; contains upper bioequivalence limit for each of the two TOSTS.
If not given theta2 will be calculated as 1/theta1 if logscale=TRUE
or as -theta1 if logscale=FALSE.


Vector; contains ‘true’ assumed bioequivalence ratio for each of the two TOSTs.
In case of logscale=TRUE each element must be given as ratio,
otherwise as difference to 1. See examples.
Defaults to c(0.95, 0.95) if logscale=TRUE or to c(0.05, 0.05) if logscale=FALSE.


Vector of coefficient of variations (given as as ratio, e.g., 0.2 for 20%).
In case of cross-over studies this is the within-subject CV,
in case of a parallel-group design the CV of the total variability.
In case of logscale=FALSE CV is assumed to be the respective standard deviation.


Number of subjects under study.
Is total number if given as scalar, else number of subjects in the (sequence) groups. In the latter case the length of n vector has to be equal to the number of (sequence) groups.


Correlation between the two PK metrics (e.g., AUC and Cmax) under consideration. This is defined as correlation between the estimator of the treatment difference of PK metric one and the estimator of the treatment difference of PK metric two. Has to be within {–1, +1}.


Character string describing the study design.
See known.designs() for designs covered in this package.


Defaults to FALSE. With that value the usual degrees of freedom will be used.
Setting to TRUE will use the degrees of freedom according to the ‘robust’ evaluation (aka Senn’s basic estimator). These degrees of freedom are calculated as n-seq.
See known.designs()$df2 for designs covered in this package.
Has only effect for higher-order crossover designs.


Number of studies to simulate. Defaults to 1E5.


Logical; if TRUE, the default, a seed of 1234567 is set.


Logical; if TRUE, run time will be printed. Defaults to FALSE.


Calculations are based on simulations and follow the distributional properties as described in Phillips. This is in contrast to the calculations via the 4-dimensional non-central t-distribution as described in Hua et al. which was implemented in versions up to 1.4-6.

The formulas cover balanced and unbalanced studies w.r.t (sequence) groups.

In case of parallel group design and higher order crossover designs (replicate crossover or crossover with more than two treatments) the calculations are based on the assumption of equal variances for Test and Reference products under consideration.

The formulas for the paired means 'design' do not take an additional correlation parameter into account. They are solely based on the paired t-test (TOST of differences = zero).


Value of power.


If n is given as scalar (total sample size) and this number is not divisible by the number of (sequence) groups of the design an unbalanced design with small imbalance is assumed. A corresponding message is thrown showing the assumed numbers of subjects in (sequence) groups.
The function does not vectorize properly if design is a vector. Moreover, theta0 and CV must be of length two, thus further vectorizing is not possible.
Other vector input is not tested yet.


B. Lang, D. Labes


Phillips KF. Power for Testing Multiple Instances of the Two One-Sided Tests Procedure. Int J Biostat. 2009;5(1):Article 15.

Hua SY, Xu S, D’Agostino RB Sr. Multiplicity adjustments in testing for bioequivalence. Stat Med. 2015;34(2):215–31. doi: 10.1002/sim.6247

Lang B, Fleischer F. Letter to the Editor: Comments on ‘Multiplicity adjustments in testing for bioequivalence.’ Stat Med. 2016;35(14):2479–80. doi: 10.1002/sim.6488

See Also

sampleN.2TOST, known.designs


# Power for the 2x2x2 cross-over design with 24 subjects, intra-subject
# standard deviation of 0.3 (CV = 30.7%) and assumed ratios of 1.05 for both
# parameters, and correlation 0.75 between parameters (using all the other
# default values)
power.2TOST(theta0 = rep(1.05, 2), CV = rep(se2CV(0.3), 2),
            n = 24, rho = 0.75)
# should give: 0.38906

# Setting as before but use rho 1 and high number of simulations
# to reproduce result of power.TOST()
p1 <- power.2TOST(theta0 = rep(1.05, 2), CV = rep(se2CV(0.3), 2),
                  n = 24, rho = 1, nsims=1E7)
p2 <- power.TOST(theta0 = 1.05, CV = se2CV(0.3), n = 24)
all.equal(p1, p2, tolerance = 1e-04)

PowerTOST documentation built on March 18, 2022, 5:47 p.m.