power.scABEL.sdsims: (Empirical) Power of BE decision via scaled (widened) BE...

View source: R/power_scABEL_sdsims.R

power.scABEL.sdsR Documentation

(Empirical) Power of BE decision via scaled (widened) BE acceptance limits


These function performs the power calculation of the BE decision via scaled (widened) BE acceptance limits based on subject data simulations.
This function has an alias power.scABEL.sds().


power.scABEL.sdsims(alpha = 0.05, theta1, theta2, theta0, CV, n, 
                    design = c("2x3x3", "2x2x4", "2x2x3"), design_dta=NULL,
                    regulator, nsims = 1e+05, details = FALSE, setseed = TRUE, 



Type I error probability, significance level. Conventionally mostly set to 0.05.


Conventional lower ABE limit to be applied in the mixed procedure if CVsWR <= CVswitch. Also lower limit for the point estimate constraint.
Defaults to 0.8 if not given explicitly.


Conventional upper ABE limit to be applied in the mixed procedure if CVsWR <= CVswitch. Also upper limit for the point estimate constraint.
Defaults to 1.25 if not given explicitly.


‘True’ or assumed T/R ratio.
Defaults to 0.90 according to the two Lászlós if not given explicitly.


Intra-subject coefficient(s) of variation as ratio (not percent).

  • If given as a scalar (length(CV)==1) the same CV of Test and Reference is assumed (homoscedasticity, CVwT==CVwR).

  • If given as a vector (length(CV)==2), i.e., assuming heteroscedasticity, the CV of the Test must be given in CV[1] and the one of the Reference in the CV[2].


Number of subjects under study.
May be given as vector. In that case it is assumed that n contains the number of subjects in the sequence groups.
If n is given as single number (total sample size) and this number is not divisible by the number of sequences of the design an unbalanced design is assumed. A corresponding message is thrown showing the numbers of subjects in sequence groups.
Attention! In case of the "2x2x3" (TRT|RTR) design the order of sample sizes is important if given as vector. n[1] is for sequence group 'TRT' and n[2] is for sequence group 'RTR'.


Design of the study to be planned.
"2x3x3" is the partial replicate design (TRR|RTR|RRT).
"2x2x4" is the full replicate design with 2 sequences and 4 periods.
"2x2x3" is the 3-period design with sequences TRT|RTR.
Defaults to design="2x3x3".


Alternatively to using the arguments design and n the design may be defined via a data.frame with columns subject, sequence, period and tmt. This feature is experimental in the sense that the data.frame is not checked for complying with the assumed structure.
If you use the argument design_dta you don't need to specify the arguments design and n.
The default design_dta = NULL means that design and n are used for the internal construction of the design data.frame.


Regulatory settings for the widening of the BE acceptance limits.
May be given as "EMA" or as an object of class 'regSet' (see reg_const).
Defaults to regulator="EMA" if missing.
This argument may be given also in lower case if given as character.

If given as object of class 'regSet' the component est_method must not be "ISC".


Number of simulations to be performed to obtain the empirical power. Defaults to 100,000 = 1e+05.
If simulations are aimed for empirical alpha nsims=1e+06 is recommended.


If set to TRUE the computational time is shown as well as the components for the BE decision.
p(BE-wABEL) is the probability that the CI is within (widened) limits.
p(BE-PE) is the probability that the point estimate is within theta1 ... theta2.
p(BE-ABE) is the simulated probability for the conventional ABE test.


Simulations are dependent on the starting point of the (pseudo) random number generator. To avoid differences in power for different runs a set.seed() is issued if setseed=TRUE, the default.


Should a progressbar be shown? Defaults to TRUE if missing and nsims >5E5.


The methods rely on the analysis of log-transformed data, i.e., assume a log-normal distribution on the original scale.

The widened BE acceptance limits will be calculated by the formula
[L, U] = exp(± r_const * sWR)
with r_const the regulatory constant and sWR the standard deviation of the within subjects variability of the Reference. r_const = 0.76 (~log(1.25)/0.29356) is used in case of regulator="EMA". If the CVwR of the Reference is < CVswitch=0.3 the conventional ABE limits apply (mixed procedure).
In case of regulator="EMA" a cap is placed on the widened limits if CVwr>0.5, i.e., the widened limits are held at value calculated for CVwR=0.5.

The simulations are done by simulating subject data (all effects fixed except the residuals) and evaluating these data via ANOVA of all data to get the point estimate of T vs. R along with its 90% CI and an ANOVA of the data under R(eference) only to get an estimate of s2wR.
The data.frame with columns subject, sequence, period and tmt necessary for evalution of simulated subject data is constructed internally from the arguments design and n or may be given user defined via the argument design_dta. The last option is usefull if missing data have to be considered or if designs have to be evaluated which are not in the list of argument design.
This feature is experimental in the sense that the data.frame is not checked for complying with the assumed structure.


Returns the value of the (empirical) power if argument details=FALSE.

Returns a named vector if argument details=TRUE.
p(BE) is the power, p(BE-wABEL) is the power of the widened ABEL criterion alone and p(BE-pe) is the power of the criterion 'point estimat within acceptance range' alone. p(BE-ABE) is the power of the conventional ABE test given for comparative purposes.


The function is mainly intended for crosscheck of power.scABEL() results.
But may be mandatory for cases where power.scABEL() results are inaccurate (low sample sizes and/or heteroscedasticity).
It is relatively slow. The run-time of this function doing 1 Mio sims is between ~ 7-8 sec for n=12 and ~ 3-4 min for n=120 on a machine with an Intel core i7 processor.
Thus be patient and go for a cup of coffee if you use this function with high sample sizes!


D. Labes, B. Lang


Tóthfalusi L, Endrényi L. Sample Sizes for Designing Bioequivalence Studies for Highly Variable Drugs. J Pharm Pharmaceut Sci. 2011;15(1):73–84. open source

See Also

power.scABEL, reg_const


# using all the defaults:
# design="2x3x3", EMA regulatory settings
# PE constraint 0.8-1.25, cap on widening if CV>0.5
# true ratio=0.90, 1E+5 simulations
power.scABEL.sdsims(CV = 0.4, n = 36)
# should give:
# [1] 0.74321

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