On CRAN submitted 2024-03-18.
CI.BE()
regarding cases with only Ntotal
given.shadowtext()
lifted from package TeachingDemos
and recoded since
TeachingDemos
was orphaned (request of Brian Ripley). Orphaned status later
on abandoned but nevertheless the recoded function used furthermore.
sampleN.scABEL()
to reflect
the GCC guidelines (Version 3.1 of 10 August 2022).power.2TOST()
and
SampleN.2TOST()
corrected.p.level
in function power.TOST.sds()
introduced to make the significance level
of the group-by-treatment interaction test variable. Was former hard coded to 0.1.
power.NTID()
, sampleN.NTID()
, and pa.NTID()
.PowerTOST 1.5-4
.Never on CRAN, only a development version.
On CRAN 2022-02-21.
power.TOST()
w.r.t vectorization of CV
or theta0
.power.NTID()
, sampleN.NTID()
, and pa.NTID()
.
The functions power.NTIDFDA()
, sampleN.NTIDFDA()
, and pa.NTIDFDA()
are deprecated and will be removed in the next release.sampleN.TOST()
added to vignette ABE; vignette PA adapted to pa.NTID()
.
tfn()
. Thanks to PharmCat for contributing them.gmodel = 1
in the man page section Details of function power.TOST.sds()
.On CRAN 2021-01-18
scABEL.ad()
and sampleN.scABEL.ad()
adapted to deal with regulator = "GCC"
.
Man pages, README, and RSABE-vignette updated accordingly.
power.scABEL()
or sampleN.scABEL()
.On CRAN 2020-10-27.
stringsAsFactors = FALSE
in example of main vignette for R <4.0.0.On CRAN 2020-10-22.
theta0
within range theta1 ... theta2
fixed.
theta1, theta2
if missing in various functions.emmeans
to Suggests
. Otherwise NOTE
on r-devel-linux-x86_64-fedora-clang.
THX to Gábor Csárdi and Duncan Murdoch @r-pkg-devel. Will be required in R4.1.0 released next year.sampleN.*
: Always estimation instead of calculation. References added for Fieller’s CI.README
.logscale = FALSE
to the ABE-Vignette.On CRAN 2020-08-09. (Maintenance release dedicated to 70 birthday of Detluuu)
scABEL.ad
w.r.t. coercion.
emmeans
in man pages of expected power.ABE.Rmd
(not a good idea to assign a variable with the same name as a function).tufte
from Imports to Suggests (Duncan Murdoch @r-pkg-devel).theta1
in pvalue.TOST
in case of logscale = FALSE
CV
(and theta0
, theta1
, theta2
) in case of logscale = FALSE
.On CRAN 2019-12-19. (Xmas gift)
power.dp()
w.r.t. setting argument CVb
if missing in case of design="IBD"
.
scABEL.ad()
: reg$name
instead of regulator
.pwrA_S3methods.R
to the same precison like in the others.power.TOST.sds()
for gmodel=1
, case of gmodel=3
with data of the largest group (group by treatment interaction significant at p=0.1)tufte
for nice quotes in Rmarkdown.
power.dp()
and sampleN.dp()
w.r.t. the value of CVb
in case of design="IBD"
.sampleN.noninf
based on margin
.pa.scABE.R()
according to guidances. Generally 12 (as before) but 24 for the FDA. Also 24 for the EMA if 2x2x3
design (Q&A document). Changed N
to n
in the S3-methods in conformity with other functions.On CRAN 2019-08-29.
scABEL.ad()
, sampleN.scABEL.ad()
: CVwT
was not given in output if CV
was a vector.
scABEL.ad.R
regulator
was NULL
. Corrected to reg$name
.pwrA_S3methods.R
of pa.NTID()
(more lines required). Plain font instead of bold in main.expsampleN.noninf()
wrt operator &&
with vector arguments (new check in R 3.6.0).CI.RatioF()
fixed. Thanks to Michael (mittyri).sampleN.RSABE2L.sdsims()
for sample size estimation via subject simulations for the ‘exact’ method of Tóthfalusi & Endrényi “Algorithms for evaluating reference scaled average bioequivalence: power, bias, and consumer risk”.
sampleN.scABEL.sdsims()
for sample size estimation for ABEL via subject simulations. Useful in case of assumed heteroscedasticity in the partial replicate design (TRT|RTR|RRT).NEWS.md
instead of NEWS
.README.md
(knitted from README.Rmd
).power.TOST.sds()
to simulate subject data & evaluate via models with group effect implemented.\enc{foo}{bar}
.
power.scABEL()
: If nsims
not given, defaults to 1e5 (like before). If theta0
equals one of the expanded limits, defaults to 1e6. Man-page updated.sampleN.TOST()
: Same name of replicate designs like in the scaled functions.power.scABEL()
name of scaled component "p(BE-ABEL)"
instead of "p(BE-wABEL)"
.test_ABEL.R
in inst/tests
to support subject simulations.power.scABEL()
: More informative warning about heteroscedasticity in the partial replicate design (use of power.scABEL.sdsims()
suggested)..Machine$double.eps
if rho
is -1 or +1 given in power_type1_2TOST.R
(similar to sampleN_2TOST_sim.R
). Removed warning in the latter function. Less confusing for users and the example in the man-page looks nicer.On CRAN 2018-04-12 (dedicated to the birthday of Alfie Schütz. :-)
type1error.2TOST()
no longer available since it suffers from insufficient precision to obtain the type 1 error (TIE) via simulations. Due to the intersection-union principle the TIE is always upper bounded to alpha by theory.
power.2TOST()
based on simulations to obtain the power of 2 TOSTs (statistical flaw in 4-dimensional t-distribution approach). sampleN.2TOST()
and man page adapted according to this change.regulator="FDA"
implemented in scABEL.ad()
.power.RSABE2L.sds()
which implements the 'exact' based method for RSABE (ncTOST) of the two Lászlós. Documentation included.On CRAN 2017-08-17.
nsims > 1e7
.CVwRfromU()
/ U2CVwR()
to calculate CVwR from the upper expanded limit of an ABEL study according to the EMA’s or Health Canada’s rules.
alpha
restricted to scalar. Internal functions now allow length = 2 (different alphas for the two null hypotheses).dfCV
in expected power functions completely removed.On CRAN 2017-05-19.
power.scABEL.sdsims()
fixed which gave power=NA
if alpha=0
.
sampleN.scABEL.ad()
if pre-specified alpha gives TIE <0.05.'pwrA'
corrected (text in the 4th screen was truncated on top if saved as a PDF). Replaced text()
by TeachingDemos::shadowtext()
to enhance legibility (interfered with underlying grid before)./test
subdirectory added: test_ABEL.R
and test_RSABE.R
which recalculate the sample size tables given in Tóthfalusi & Endrényi “Sample Sizes for Designing Bioequivalence Studies for Highly Variable Drugs”. Contributed by Helmut.
power.scABEL.sdsims()
now has an argument design_dta
to specify the design via a data.frame. May be useful for considering missing data.scABEL.ad()
and sampleN.scABEL.ad()
to allow subject data simulations via power.scABEL.sdsims()
if regulator = "EMA"
. Removed regulator = "ANVISA"
. Changed the order of sequences to be consistent with the other functions of PowerTOST.regulator = "ANVISA"
from pa.scABE()
.'Null (true) ratio'
was mentioned instead of 'True ratio'
.Expected_Power_for_TOST.pdf
.'adj. alpha'
in sampleN.scABEL.ad()
to 'alpha.adj'
for consistency with scABEL.ad()
.On CRAN 2017-03-15.
power.scABEL2()
and sampleN.scABEL2()
in pa.scABE()
corrected.power.scABEL.sdsims()
to calculate power for the BE decision via scaled (widened) BE acceptance limits (EMA recommended) based on subject data simulations.
CV = 0.3
from scABEL.ad()
and sampleN.scABEL.ad()
. Stops execution if CV not specified.cubature::adaptIntegrate
replaced by cubature::hcubature
to reflect change of function name within package cubature.
power.scABEL()
introduced./doc
subdirectory.BE_power_sample_size_excerpt.pdf
updated to reflect the changes in computation of OwensQ.On CRAN 2016-11-01.
power.TOST()
removed which caused power <0 for large degrees of freedom.
power.scABEL2()
and sampleN.scABEL2()
removed.regulator = "ANVISA"
no longer allowed in the scaled ABEL functions.OwensQ()
simpler/faster implemented. Now based solely on numerical integration in combination with non-central t.OwensQOwen()
now based on algorithm AS76 and remarks to that algorithm to avoid numeric errors of the implementation via integrate()
.ct9.6.6
in data("data2x2x3")
added which was missing since a long time ago.On CRAN 2016-07-14.
sampleN.2TOST()
fixed.point
in functions CI2CV()
/CVfromCI()
removed.Implementation_scaledABE_sims.pdf
in /doc
subdirectory updated to reflect changes in code of the scaled ABE functions.
'pwrA'
now has an argument ratiolabel
for labeling the axis concerning theta0. Wish of Benjamin Lang.'Null (true) ratio'
in output of sample size functions changed to 'True ratio'
.Published on GitHub 2016-06-14.
'regSet'
have an additional component 'est_method'
which controls the simulations via key statistics of the evaluation using the EMA’s ANOVA or the FDA’s recommended ISC in xyz.scABEL()
functions.
power.scABEL()
/power.scABEL2()
as well as sampleN.scABEL()
/sampleN.scABEL2()
are now unified. The regulator component 'est_method'
is used for switching between simulations based on the EMA’s ANOVA evaluation or ISC evaluation, respectively.power.scABEL2()
/sampleN.scABEL2()
are therefore deprecated and will be removed in future versions. A corresponding warning is thrown.DESCRIPTION
.Published on GitHub 2016-06-10.
scABEL.ad()
and sampleN.scABEL.ad()
if former argument regulator="ANVISA"
settings are used.On CRAN 2016-06-06.
Released to beta-testers 2016-05-04.
power.scABEL2()
and sampleN.scABEL2()
based on simulations of intra-subject contrasts evaluation).
'regSet'
and allow via this way User definitions of regulatory settings.reg_const
made visible to define objects of 'regSet'
. Class 'regSet'
has an S3 print method.theta0
in functions power.scABEL()
, power.scABEL2()
and power.RSABE()
changed to 0.90 to be in agreement with the setting in the corresponding sample size functions.
scABEL()
(calculation of widened acceptance limits) no longer accepts regulator="USER"
. This case may be handled via an object with class 'regSet'
, as defined by help of function reg_const()
.CVfromCI()
/CI2CV
now use pe
instead of point
as argument due to more consistency with their dual CI.BE()
. For backward compatibility point
may be used also but then a warning is thrown. Argument point will be removed in future versions.integrate()
if method="exact"
.On CRAN 2016-04-12.
'pwrA'
objects reworked by Helmut Schütz to avoid some ugly overlays.tol
for convergence tolerance of the internally used uniroot()
. It was formerly hardcoded as tol=1e-5
. Contributed by Helmut Schütz.On CRAN 2016-03-09.
NA
for sample size for very low variability. Thanks to Shuanghe for detecting this bug.imax=100
for the maximum number of steps for sample size search. Wish of Helmut Schütz.On CRAN 2016-01-15.
Released 2016-01-04 to alpha testers.
scABEL.ad()
and sampleN.scABEL.ad()
to iteratively adjust α in order to control the consumer risk and adapt the sample size to compensate for a potential loss in power with the EMA method of scaled ABE (ABEL). Contributed by Helmut Schütz.theta0
changed to 0.9 in sample size estimation for scaled ABE (as recommended by the two Lászlós).On CRAN 2015-12-02.
On CRAN 2015-09-30.
Released 2015-09-23 to alpha testers.
power.HVNTID()
and sampleN.HVNTID()
introduced to calculate power and sample size for the BE decision via the FDA procedure for highly variable NTIDs (see the FDA’s dabigatran / rivaroxaban guidances).power.HVNTID()
and power.NTIDFDA()
now return the power (p(BE)
) and the components for the scaled ABE criterion, the conventional ABE test and the test for the ratio swT/swR <= 2.5 if the argument details=TRUE
(wish of Helmut Schütz).
power.RSABE()
now returns the power (p(BE)
) and the components for the scaled ABE criterion, for the point estimate criterion and for the conventional ABE test alone if the argument details=TRUE
. Analogous changes were made in power.scABEL()
. See man-pages.On CRAN 2015-08-26.
power.TOST()
with method="exact"
reworked to give correct values in case alpha>0.5
. OwensQOwen()
adapted to deal with upper integration limit R==Inf
.pmvt()
of package mvtnorm
), also an exact calculation method but with somewhat lower precision and longer run-time. Contributed by Benjamin Lang.
power.TOST.sim()
to obtain the power via simulations of the TOST. Only intended for checking purposes.On CRAN 2015-07-10.
NAMESPACE
adapted to import the necessary functions from base R installation (CRAN request).
power.NTIDFDA()
and sampleN.NTIDFDA()
now have an design argument to choose between "2x2x4"
(full replicate 4-period) and "2x2x3"
(full replicate 3-period design).On CRAN 2015-06-03.
power.scABEL()
and sampleN.scABEL()
now allow the power and sample size calculations for scaled ABEL according to the (inofficial) regulatory settings of Brasilian ANVISA (argument regulator="ANVISA"
).
regulator="ANVISA"
.scABEL
for calculation of the (widened) ABE acceptance limits.power2.TOST()
removed.On CRAN 2015-01-23.
power.TOST()
now handles balanced as well as unbalanced studies. Function power2.TOST()
is therefore deprecated and will be removed in later versions.BE_power_sample_size_excerpt.pdf
in subdirectory /doc
changed to reflect the internal changes.On CRAN 2015-01-07.
OwensQOwen()
removed (debug code left over), THX to Helmut for discovering this.CVfromCI()
and alias CI2CV()
now handle unbalanced studies. Contributed by Benjamin Lang.
BE_power_sample_size_excerpt.pdf
(discovered by Ben) corrected.On CRAN 2014-12-19.
OwensT(h, a)
for the case of a=-Inf
removed. Thanks to Benjamin Lang for discovering that nasty bug.pvalue.TOST()
introduced to calculate the two p-values of the TOST procedure. Contributed by Benjamin Lang.power.noninf()
, exppower.TOST()
, exppower.noninf()
adapted to deal with unbalanced studies.On CRAN 2014-11-13.
sampleN.dp()
introduced to avoid errors with small CV (<= 0.1) for the crossover design.power.dp()
/ sampleN.dp()
cover "incomplete block designs".
?known.designs
under Notes).On CRAN 2014-10-06.
pa.XYZ()
adapted so that they also work under R < 3.1.1 (request of Uwe Ligges of CRAN) although with minpower >= 0.5
.On CRAN 2014-09-30.
pwrA
now calls plot()
.
Build 2014-09-19, released to alpha/beta testers only.
pa.ABE()
), scaled ABE (pa.sABE()
) and scaled ABE for NTIDs (pa.NTIDFDA()
) analyzing power for deviations from assumptions for the sample size estimation.
On CRAN 2014-08-12.
bk(ni)
for design="paired"
corrected. THX to Helmut Schütz who detected this bug.On CRAN 2014-07-02.
power.TOST()
now throws a warning if used with imbalanced designs (n not an even multiple of the number of sequences).sampleN.TOST()
to avoid failed searches if variability is high and theta0 is close to 1.On CRAN 2014-04-30.
On CRAN 2014-01-31.
NaN
(not a number).OwensQOwen()
gains a sixfold speed boost.
OwensQ()
now tries to return a value via nct-approximation if its value is due to numeric difficulties falsely equal zero. This approximation is up to 6 decimals correct as far as tested. OwensQ()
issues a warning if the nct-approximation is used.Build 2014-01-03, not released to the public.
OwensQ()
now uses OwensQOwen()
in case of high delta and/or high upper integration limit. Thus extreme cases can be handled properly where the former implementation via integrate()
was prone to fail. Thanks to Jiři Hofmann and Helmut Schütz for pointing me to such extreme cases.On CRAN 2013-12-27.
NEWS
) corrected from PowerTOST 1.1-00 on. THX to Julien Grassot.CVfromCI()
now accepts either both CLs or one CL and the point estimate. Contributed by Helmut Schütz.
power.RatioF()
and sampleN.RatioF()
now have an argument setseed=TRUE
which avoids the dependence of the power from the state of the random number generator (due to the calculation method of pmvt()
of package mvtnorm
). Thanks to Benjamin Lang.On CRAN 2013-09-02.
design="2x2x3"
(TRT|RTR) implemented in power.scABEL()
, sampleN.scABEL()
and in power.RSABE()
, sampleN.RSABE()
.power.scABEL()
now throws a warning if CVwT ≠ CVwR in the design "2x3x3"
(partial replicate).
On CRAN 2013-06-21.
sampleN.NTIDFDA()
which lead to false sample size for cases where the test of equal variabilities of Test vs. Reference comes into effect.On CRAN 2013-06-17.
n=NA
) if started with a too high n. Thanks to Helmut Schütz.sampleN.scABEL()
, sampleN.RSABE()
and sampleN.NTIDFDA()
return a data.frame with the input and the sample size result. The "Sample size"
column contains the total sample size. The "nlast"
column contains the last n value handled. Might be useful for restarting.sampleN.scABEL()
, sampleN.RSABE()
reworked. Failed sample size searches are now more seldom observed.Build 2013-05-15, relased to alpha testers only.
power.NTIDFDA()
and sampleN.NTIDFDA()
introduced to calculate power and sample size for the BE decision via the method of the FDA for narrow therapeutic index drugs (NTIDs, for details see the FDA’s warfarin guidance). Power and sample size are based on simulations.On CRAN 2013-05-03.
"2x3x3"
design with different intra-subject variabilities in functions power.RSABE()
and sampleN.RSABE()
as well as in functions power.scABEL()
and sampleN.scABEL()
corrected./doc
subdirectory of the package.
power.scABEL()
introduced to reflect the fact that simulations via subject data and via the methods implemented in power.scABEL()
gave empirical power values that are only approximately in agreement.On CRAN 2013-02-28.
power.RSABE()
and sampleN.RSABE(
) introduced to calculate power and sample size for the BE decision via linearized scaled ABE criterion as favored method of the FDA. Power and sample size are based on simulations.nsims
changed to 1E5 (suggested by Helmut Schütz).setseed
introduced in the scaled ABE functions to avoid different outcomes depending on the state of the (pseudo) random number generator. If setseed=TRUE
a set.seed(123456)
is issued prior to each call of the simulation functions.
Not released, integrated in 1.1-00
alpha2
removed from expsampleN.noninf()
and expsampleN.TOST()
because it lead to some confusion in users thinking this had to do with the algorithm via expected power.CI2CV()
as alias to CVfromCI()
introduced because myself always typed this name if aimed to calculate the CV from a given CI.
CVCL()
now returns a 2-element vector also if an one sided interval is requested.On CRAN 2013-02-08.
power.scABEL()
and sampleN.scABEL()
introduced to calculate power and sample size for the BE decision via scaled (widened) BE acceptance limits based on simulations. Thanks to Helmut Schütz on the BEBA Forum for power testing these functions.On CRAN 2012-10-26.
power.noninf()
to get the correct power if theta0
is below margin
(if margin <1
) or theta0
is above margin
(if margin >1
). power.noninf()
calculated up to now the power of an inferiority test. Thanks to Helmut Schütz.CV2mse()
and mse2CV()
.
CVCL()
to calculate a confidence interval of a CV.On CRAN 2012-08-07.
power.TOST()
, power2.TOST()
and power.noninf()
to use the correct degrees of freedom depending on argument robust
. robust=FALSE
wrongly used the robust dfs. Thanks to Ben.On CRAN 2012-07-20.
.Q.integrand()
.
nmin
- has to be a multiple of steps to assure balance in sequence groups.On CRAN 2012-07-18.
integrate()
if CV<5.3E-6
. Thanks to Helmut Schütz.n=2
if design="paired"
).On CRAN 2012-04-05 (Easter egg).
CVpooled()
, exppower.TOST()
and expsampleN.TOST()
now also implemented for logscale=FALSE
, i.e., contain this argument in their calls.OwensQOwen()
made public. This is an implementation of the algorithm given by Owen in the original paper (Biometrica 1965) via repeated integration by parts.OwensT()
made public. It is needed internally in OwensQOwen()
but may be useful for other purposes.On CRAN 2012-03-26.
On CRAN 2012-03-05.
sampleN.TOST()
removed which causes extra doubled output of n and power if n=4
. Thanks to Ben on the BEBA Forum.On CRAN 2012-02-13.
power.TOST()
removed which prevented calculation of power according to method = "exact"
."2x2x3"
in /data
sub-directory added.
"2x4x4"
in /data
sub-directory added./test
sub-directory made public.On CRAN 2011-12-24.
power2.TOST()
added to allow power calculations for studies with unbalanced (sequence) groups.
exact
replaced by method
in power.TOST()
, sampleN.TOST()
. See help for these functions."2x2"
crossover and for the "parallel"
group design to alleviate validation/qualification of the package.data(package="PowerTOST")
.
/test
sub-directory that create the sample size tables from the data section.BE_power_sample_size_excerpt.pdf
in the /doc
sub-directory.On CRAN 2011-12-15.
'robust'
argument added to nearly all functions.robust=TRUE
the degrees of freedom for the so-called robust evaluation (df2
in known.designs()
output) will be used.NAMESPACE
from R1.4.0 on the internal functions (names starting with .
) are no longer exported.On CRAN 2011-10-20.
On CRAN 2011-05-18.
alpha>=0.5
(very unusual setting). Thanks again to Craig Zupke.Proc Power
.On CRAN 2011-05-16.
b
leading to integrand function almost zero over the whole range which then gave an error in integrate()
. Thanks to Craig Zupke.On CRAN 2011-03-11.
imax
. Needs to be adapted only in rare extreme cases.
theta0=1
(logscale) or theta0=0
(untransformed).On CRAN 2011-01-18.
known.designs()
.On CRAN 2011-01-10.
"3x3"
and "4x4"
crossover designs removed.?CVpooled
.On CRAN 2010-11-25.
CVfromCI()
added to estimate the CV from a confidence interval. Useful if no CV but the CI was given in literature.On CRAN 2010-11-25.
diff
removed from sampleN.TOST()
, expsampleN.TOST()
, power.TOST()
, and exppower.TOST()
.On CRAN 2010-08-27.
"2x2"
alias "2x2x2"
design corrected.On CRAN 2010-08-12.
diff
(Null ratio / Null diff.) is now named theta0
since it was annoying for users to call it diff
in case of ratios (logscale=TRUE
). The parameter diff
is still supported but will be removed in the next release. Therefore a warning is thrown if diff
is used.On CRAN 2010-07-21.
.CV2se()
and .se2CV()
made public.BE_power_sample_size_excerpt.pdf
for classical power / sample size in directory /doc
added.On CRAN 2010-05-07, first public release.