| exppower.noninf {PowerTOST} | R Documentation |
Expected power of the non-inferiority test
Description
Calculates the so-called expected, i.e., unconditional, power for a variety of study designs used in bioequivalence studies.
Usage
exppower.noninf(alpha = 0.025, logscale = TRUE, theta0, margin, CV, n,
design = "2x2", robust = FALSE,
prior.type = c("CV", "theta0", "both"), prior.parm = list(),
method = c("exact", "approx"))
Arguments
alpha |
Significance level (one-sided). Defaults here to 0.025. |
logscale |
Should the data be used on log-transformed or on original scale? |
theta0 |
Assumed ‘true’ (or ‘observed’ in case of |
margin |
Non-inferiority margin. |
CV |
In case of 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. |
n |
Number of subjects under study. |
design |
Character string describing the study design.
See |
robust |
Defaults to FALSE. Set to |
prior.type |
Specifies which parameter uncertainty should be accounted for. In case of
|
prior.parm |
A list of parameters expressing the prior information about the
variability and/or treatment effect. Possible components are |
method |
Defaults to |
Details
This function calculates the so-called expected power taking into account that
usually the parameters (CV and/or theta0) are not known but estimated
from a prior study with some uncertainty. The expected power is an unconditional
power and can therefore be seen as probability for success. See references for
further details.
The prior.parm argument is a list that can supply any of the following
components:
dfError degrees of freedom from the prior trial (>4, maybe non-integer).
df = Infis allowed and formethod = "exact"the result will then coincide withpower.noninf(...).
Note: This corresponds to the df of both the CV and the difference of means.SEMStandard error of the difference of means from the prior trial; must always be on additive scale (i.e., usually log-scale).
mNumber of subjects from prior trial. Specification is analogous to the main argument
n.designStudy design of prior trial. Specification is analogous to the main argument
design.
For prior.parm, the combination consisting of df and SEM
requires a somewhat advanced knowledge of the prior trial (provided in the raw
output from for example the software SAS, or may be obtained via
emmeans of package emmeans. However, it has the
advantage that if there were missing data the exact degrees of freedom and
standard error of the difference can be used, the former possibly being
non-integer valued (e.g. if the Kenward-Roger method was used).
Details on argument prior.type:
CVThe expectation is calculated with respect to the Inverse-gamma distribution.
theta0The expectation is calculated with respect to the conditional distribution theta0 |
\sigma^2= s^2 of the posteriori distribution of (theta0,\sigma^2) from the prior trial.bothThe expectation is calculated with respect to the posteriori distribution of (theta0,
\sigma^2) from the prior trial. Numerical calculation of the two-dimensional integral is performed viacubature::hcubature.
Notes on the underlying hypotheses
If the supplied margin is < 0 (logscale=FALSE) or < 1 (logscale=TRUE),
then it is assumed higher response values are better. The hypotheses are
H0: theta0 <= margin vs. H1: theta0 > margin
where theta0 = mean(test)-mean(reference) if logscale=FALSE
or
H0: log(theta0) <= log(margin) vs. H1: log(theta0) > log(margin)
where theta0 = mean(test)/mean(reference) if logscale=TRUE.
If the supplied margin is > 0 (logscale=FALSE) or > 1 (logscale=TRUE),
then it is assumed lower response values are better. The hypotheses are
H0: theta0 >= margin vs. H1: theta0 < margin
where theta0 = mean(test)-mean(reference) if logscale=FALSE
or
H0: log(theta0) >= log(margin) vs. H1: log(theta0) < log(margin)
where theta0 = mean(test)/mean(reference) if logscale=TRUE.
This latter case may also be considered as ‘non-superiority’.
Value
Value of expected power according to the input.
Author(s)
B. Lang, D. Labes
References
Grieve AP. Confidence Intervals and Sample Sizes. Biometrics. 1991;47:1597–603. doi:10.2307/2532411
O’Hagan, Stevens, JW, Campell MJ. Assurance in Clinical Trial Design. Pharm Stat. 2005;4:187–201. doi:10.1002/pst.175
Julious SA, Owen RJ. Sample size calculations for clinical studies allowing for uncertainty in variance. Pharm Stat. 2006;5:29–37. doi:10.1002/pst.197
Julious SA. Sample sizes for Clinical Trials. Boca Raton: CRC Press / Chapman & Hall; 2010.
Bertsche A, Nehmitz G, Beyersmann J, Grieve AP. The predictive distribution of the residual variability in the linear-fixed effects model for clinical cross-over trials. Biom J. 2016;58(4):797–809. doi:10.1002/bimj.201500245
Box GEP, Tiao GC. Bayesian Inference in Statistical Analysis. Boston: Addison-Wesley; 1992.
Held L, Sabanes Bove D. Applied Statistical Inference. Likelihood and Bayes. Berlin, Heidelberg: Springer; 2014. doi:10.1007/978-3-642-37887-4
Senn S. Cross-over Trials in Clinical Research. Chichester: John Wiley & Sons; 2nd edition 2002.
Zierhut ML, Bycott P, Gibbs MA, Smith BP, Vicini P. Ignorance is not bliss: Statistical power is not probability of trial success. Clin Pharmacol Ther. 2015;99:356–9. doi:10.1002/cpt.257
See Also
expsampleN.noninf, power.noninf
Examples
# Expected power for non-inferiority test for a 2x2 crossover
# with 40 subjects. CV 30% known from a pilot 2x2 study with
# 12 subjects
# using all the defaults for other parameters (theta0 carved in stone)
# should give: [1] 0.6761068
exppower.noninf(CV = 0.3, n = 40, prior.parm = list(df = 12-2))
# or equivalently
exppower.noninf(CV = 0.3, n = 40, prior.parm = list(m = 12, design = "2x2"))
# May be also calculated via exppower.TOST() after setting upper acceptance limit
# to Inf and alpha=0.025
exppower.TOST(CV = 0.3, n = 40, prior.parm = list(df = 10), theta2 = Inf, alpha=0.025)
# In contrast: Julious approximation
exppower.noninf(CV = 0.3, n = 40, prior.parm = list(df = 10), method = "approx")
# should give: [1] 0.6751358
# Compare this to the usual (conditional) power (CV known, "carved in stone")
power.noninf(CV = 0.3, n = 40)
# should give: [1] 0.7228685
# same as if setting df = Inf in function exppower.noninf()
exppower.noninf(CV = 0.3, n = 40, prior.parm = list(df = Inf))
# Expected power for a 2x2 crossover with 40 subjects
# CV 30% and theta0 = 0.95 known from a pilot 2x2 study with 12 subjects
# using uncertainty with respect to both CV and theta0
exppower.noninf(CV = 0.3, theta0 = 0.95, n = 40,
prior.parm = list(m = 12, design = "2x2"), prior.type = "both")
# should give a decrease of expected power to 0.5982852