# PowerTOST

The package contains functions to calculate power and estimate sample
size for various study designs used in (not only bio-) equivalence
studies.

Version 1.5.3 built 2021-01-18 with R 4.0.3 (development version not on
CRAN).

## Supported Designs

```
# design name df
# parallel 2 parallel groups n-2
# 2x2 2x2 crossover n-2
# 2x2x2 2x2x2 crossover n-2
# 3x3 3x3 crossover 2*n-4
# 3x6x3 3x6x3 crossover 2*n-4
# 4x4 4x4 crossover 3*n-6
# 2x2x3 2x2x3 replicate crossover 2*n-3
# 2x2x4 2x2x4 replicate crossover 3*n-4
# 2x4x4 2x4x4 replicate crossover 3*n-4
# 2x3x3 partial replicate (2x3x3) 2*n-3
# 2x4x2 Balaam's (2x4x2) n-2
# 2x2x2r Liu's 2x2x2 repeated x-over 3*n-2
# paired paired means n-1
```

Codes of designs follow this pattern: ```
treatments x sequences x
periods
```

.

Although some replicate designs are more ‘popular’ than others, sample
size estimations are valid for *all* of the following designs:

design | type | sequences | periods | ||||
---|---|---|---|---|---|---|---|

`2x2x4` | full | 2 | `TRTR\ | RTRT` | 4 | ||

`2x2x4` | full | 2 | `TRRT\ | RTTR` | 4 | ||

`2x2x4` | full | 2 | `TTRR\ | RRTT` | 4 | ||

`2x4x4` | full | 4 | `TRTR\ | RTRT\ | TRRT\ | RTTR` | 4 |

`2x4x4` | full | 4 | `TRRT\ | RTTR\ | TTRR\ | RRTT` | 4 |

`2x2x3` | full | 2 | `TRT\ | RTR` | 3 | ||

`2x2x3` | full | 2 | `TRR\ | RTT` | 3 | ||

`2x4x2` | full | 4 | `TR\ | RT\ | TT\ | RR` | 2 |

`2x3x3` | partial | 3 | `TRR\ | RTR\ | RRT` | 3 | |

`2x2x3` | partial | 2 | `TRR\ | RTR` | 3 |

Balaam’s design `TR|RT|TT|RR`

should be avoided due to its poor power
characteristics. The three period partial replicate design with two
sequences `TRR|RTR`

(a.k.a.
extra-reference design) should be avoided because it is biased in the
presence of period effects.

## Purpose

For various methods power can be *calculated* based on

- nominal
*α*, coefficient of variation (*CV*), deviation of test from reference (*θ*0), acceptance limits {*θ*1,*θ*2}, sample size (*n*), and design.

For all methods the sample size can be *estimated* based on

- nominal
*α*, coefficient of variation (*CV*), deviation of test from reference (*θ*0), acceptance limits {*θ*1,*θ*2}, target (*i.e.*, desired) power, and design.

## Supported

### Power and Sample Size

Power covers balanced as well as unbalanced sequences in crossover or replicate designs and equal/unequal group sizes in two-group parallel designs. Sample sizes are always rounded up to achieve balanced sequences or equal group sizes.

- Average Bioequivalence (with arbitrary
*fixed*limits). - Two simultaneous TOST procedures.
- Non-inferiority
*t*-test. - Ratio of two means with normally distributed data on the original scale based on Fieller’s (‘fiducial’) confidence interval.
- ‘Expected’ power in case of uncertain (estimated) variability and/or
uncertain
*θ*0. - Reference-scaled bioequivalence based on simulations.
- EMA, WHO and many others: Average Bioequivalence with Expanding Limits (ABEL).
- GCC: Average
Bioequivalence with
*fixed*widened limits of 75.00–133.33% if*CV*wR >30%. - U.S. FDA, China CDE: Reference-scaled Average Bioequivalence (RSABE) for Highly Variable Drugs / Drug Products and Narrow Therapeutic Index Drugs (NTIDs). In China the former is required and the latter currently under discussion.

- Iteratively adjust
*α*to control the type I error in ABEL and RSABE. - U.S. FDA: ABE for highly variable NTIDs by simulations.
- Dose-Proportionality using the power model.

### Methods

- Exact
- Owen’s Q.
- Direct integration of the bivariate non-central
*t*-distribution.

- Approximations
- Non-central
*t*-distribution. - ‘Shifted’ central
*t*-distribution.

- Non-central

### Helpers

- Calculate
*CV*from*MSE*or*SE*(and vice versa). - Calculate
*CV*from given confidence interval. - Calculate
*CV*wR from the upper expanded limit of an ABEL study. - Confidence interval of
*CV*. - Pool
*CV*from several studies. - Confidence interval for given
*α*,*CV*, point estimate, sample size, and design. - Calculate
*CV*wT and*CV*wR from a (pooled)*CV*w assuming a ratio of intra-subject variances. *p*-values of the TOST procedure.- Analysis tool for exploration/visualization of the impact of
expected values (
*CV*,*θ*0, reduced sample size due to dropouts) on power of BE decision. - Construct design matrices of incomplete block designs.

## Defaults

*α*0.05, {*θ*1,*θ*2} (0.80, 1.25). Details of the sample size search (and the regulatory settings in reference-scaled average bioequivalence) are shown in the console.- Note: In all functions values have to be given as ratios, not in percent.

### Average Bioequivalence

*θ*0 0.95, target power 0.80, design "2x2" (TR|RT), exact
method (Owen’s Q).

### Reference-Scaled Average Bioequivalence

*α* 0.05, point estimate constraint (0.80, 1.25), homoscedasticity
(*CV*wT = *CV*wR), scaling is based on
*CV*wR, target power 0.80, design "2x3x3" (TRR|RTR|RRT),
approximation by the non-central *t*-distribution, 100,000 simulations.

- EMA, WHO, Health Canada, and many other jurisdictions: Average Bioequivalence with Expanding Limits (ABEL).
- U.S. FDA, China CDE: RSABE.

#### Highly Variable Drugs / Drug Products

*θ*0 0.90 as recommended by Tóthfalusi and
Endrényi
(2011).

###### EMA

Regulatory constant `0.76`

, upper cap of scaling at *CV*wR
50%, evaluation by ANOVA.

###### Health Canada

Regulatory constant `0.76`

, upper cap of scaling at *CV*wR
~57.4%, evaluation by intra-subject contrasts.

###### Gulf Cooperation Council

Regulatory constant `log(1/0.75)/sqrt(log(0.3^2+1))`

, widened limits
75.00–133.33% if *CV*wR >30%, no upper cap of scaling,
evaluation by ANOVA.

###### FDA

Regulatory constant `log(1.25)/0.25`

, linearized scaled
ABE (Howe’s approximation).

#### Narrow Therapeutic Index Drugs (FDA)

*θ*0 0.975, regulatory constant `log(1.11111)/0.1`

, upper cap
of scaling at *CV*wR ~21.4%, design "2x2x4" (TRTR|RTRT),
linearized scaled ABE
(Howe’s approximation), upper limit of the confidence interval of
*s*wT/*s*wR ≤2.5.

### Dose-Proportionality

*β*0 (slope) `1+log(0.95)/log(rd)`

where `rd`

is the ratio of
the highest and lowest dose, target power 0.80, crossover design,
details of the sample size search suppressed.

### Power Analysis

Minimum acceptable power 0.70. *θ*0, design, conditions, and
sample size method depend on defaults of the respective approaches (ABE,
ABEL, RSABE, NTID, HVNTID).

## Examples

Before running the examples attach the library.

`library(PowerTOST)`

If not noted otherwise, the functions’ defaults are employed.

### Parallel Design

Power for total *CV* 0.35 (35%), group sizes 52 and 49, design
"parallel".

```
power.TOST(CV = 0.35, n = c(52, 49), design = "parallel")
# [1] 0.8011186
```

### Crossover Design

Sample size for assumed within- (intra-) subject *CV* 0.20 (20%).

```
sampleN.TOST(CV = 0.20)
#
# +++++++++++ Equivalence test - TOST +++++++++++
# Sample size estimation
# -----------------------------------------------
# Study design: 2x2 crossover
# log-transformed data (multiplicative model)
#
# alpha = 0.05, target power = 0.8
# BE margins = 0.8 ... 1.25
# True ratio = 0.95, CV = 0.2
#
# Sample size (total)
# n power
# 20 0.834680
```

Sample size for assumed within- (intra-) subject *CV* 0.40 (40%),
*θ*0 0.90, four period full replicate “2x2x4” study. Wider
acceptance range for *C*max (South Africa).

```
sampleN.TOST(CV = 0.40, theta0 = 0.90, theta1 = 0.75, design = "2x2x4")
#
# +++++++++++ Equivalence test - TOST +++++++++++
# Sample size estimation
# -----------------------------------------------
# Study design: 2x2x4 (4 period full replicate)
# log-transformed data (multiplicative model)
#
# alpha = 0.05, target power = 0.8
# BE margins = 0.75 ... 1.333333
# True ratio = 0.9, CV = 0.4
#
# Sample size (total)
# n power
# 30 0.822929
```

Sample size for assumed within- (intra-) subject *CV* 0.125 (12.5%),
*θ*0 0.975. Acceptance range for
NTIDs (most
jurisdictions).

```
sampleN.TOST(CV = 0.125, theta0 = 0.975, theta1 = 0.90)
#
# +++++++++++ Equivalence test - TOST +++++++++++
# Sample size estimation
# -----------------------------------------------
# Study design: 2x2 crossover
# log-transformed data (multiplicative model)
#
# alpha = 0.05, target power = 0.8
# BE margins = 0.9 ... 1.111111
# True ratio = 0.975, CV = 0.125
#
# Sample size (total)
# n power
# 32 0.800218
```

Sample size for equivalence of the ratio of two means with normality on
the original scale based on Fieller’s (‘fiducial’) confidence
interval. Within-
(intra-) subject *CV*w 0.20 (20%), between- (inter-) subject
*CV*b 0.40 (40%).

Note the default *α* 0.025 (95% CI) of this function because it is
intended for studies with clinical endpoints.

```
sampleN.RatioF(CV = 0.20, CVb = 0.40)
#
# +++++++++++ Equivalence test - TOST +++++++++++
# based on Fieller's confidence interval
# Sample size estimation
# -----------------------------------------------
# Study design: 2x2 crossover
# Ratio of means with normality on original scale
# alpha = 0.025, target power = 0.8
# BE margins = 0.8 ... 1.25
# True ratio = 0.95, CVw = 0.2, CVb = 0.4
#
# Sample size
# n power
# 28 0.807774
```

### Replicate Designs

#### ABE

Sample size for assumed within- (intra-) subject *CV* 0.45 (45%),
*θ*0 0.90, three period full replicate study "2x2x3"
(TRT|RTR *or* TRR|RTT).

```
sampleN.TOST(CV = 0.45, theta0 = 0.90, design = "2x2x3")
#
# +++++++++++ Equivalence test - TOST +++++++++++
# Sample size estimation
# -----------------------------------------------
# Study design: 2x2x3 (3 period full replicate)
# log-transformed data (multiplicative model)
#
# alpha = 0.05, target power = 0.8
# BE margins = 0.8 ... 1.25
# True ratio = 0.9, CV = 0.45
#
# Sample size (total)
# n power
# 124 0.800125
```

Note that the conventional model assumes homoscedasticity (equal
variances of treatments). For heteroscedasticity we can ‘switch off’ all
conditions of one of the methods for reference-scaled
ABE. We assume a
σ2 ratio of ⅔ (*i.e.*, the test has a lower variability than
the reference). Only relevant columns of the data.frame shown.

```
reg <- reg_const("USER", r_const = NA, CVswitch = Inf,
CVcap = Inf, pe_constr = FALSE)
CV <- CVp2CV(CV = 0.45, ratio = 2/3)
res <- sampleN.scABEL(CV=CV, design = "2x2x3", regulator = reg,
details = FALSE, print = FALSE)
print(res[c(3:4, 8:9)], digits = 5, row.names = FALSE)
# CVwT CVwR Sample size Achieved power
# 0.3987 0.49767 126 0.8052
```

Similar sample size because the pooled *CV* is still 0.45.

#### ABEL

Sample size assuming homoscedasticity (*CV*wT =
*CV*wR = 0.45).

```
sampleN.scABEL(CV = 0.45)
#
# +++++++++++ scaled (widened) ABEL +++++++++++
# Sample size estimation
# (simulation based on ANOVA evaluation)
# ---------------------------------------------
# Study design: 2x3x3 (partial replicate)
# log-transformed data (multiplicative model)
# 1e+05 studies for each step simulated.
#
# alpha = 0.05, target power = 0.8
# CVw(T) = 0.45; CVw(R) = 0.45
# True ratio = 0.9
# ABE limits / PE constraint = 0.8 ... 1.25
# EMA regulatory settings
# - CVswitch = 0.3
# - cap on scABEL if CVw(R) > 0.5
# - regulatory constant = 0.76
# - pe constraint applied
#
#
# Sample size search
# n power
# 36 0.7755
# 39 0.8059
```

Iteratively adjust *α* to control the Type I Error (Labes,
Schütz). Slight
heteroscedasticity (*CV*wT 0.30, *CV*wR 0.35),
four period full replicate "2x2x4" study, 30 subjects, balanced
sequences.

```
scABEL.ad(CV = c(0.30, 0.35), design = "2x2x4", n = 30)
# +++++++++++ scaled (widened) ABEL ++++++++++++
# iteratively adjusted alpha
# (simulations based on ANOVA evaluation)
# ----------------------------------------------
# Study design: 2x2x4 (4 period full replicate)
# log-transformed data (multiplicative model)
# 1,000,000 studies in each iteration simulated.
#
# CVwR 0.35, CVwT 0.3, n(i) 15|15 (N 30)
# Nominal alpha : 0.05
# True ratio : 0.9000
# Regulatory settings : EMA (ABEL)
# Switching CVwR : 0.3
# Regulatory constant : 0.76
# Expanded limits : 0.7723 ... 1.2948
# Upper scaling cap : CVwR > 0.5
# PE constraints : 0.8000 ... 1.2500
# Empiric TIE for alpha 0.0500 : 0.06651
# Power for theta0 0.9000 : 0.814
# Iteratively adjusted alpha : 0.03540
# Empiric TIE for adjusted alpha: 0.05000
# Power for theta0 0.9000 : 0.771
```

With the nominal *α* 0.05 the Type I Error will be inflated (0.0665).
With the adjusted *α* 0.0354 (*i.e.*, a 92.92%
CI) the
TIE will be controlled, although with
a slight loss in power (decreases from 0.814 to 0.771).

Consider `sampleN.scABEL.ad(CV = c(0.30, 0.35), design = "2x2x4")`

to
estimate the sample size which both controls the
TIE and maintains the target power. In
this example 34 subjects would be required.

ABEL
cannot be applied for *AUC* (except for the
WHO). Hence, in many cases
ABE drives the sample size.
Three period full replicate "2x2x3" study (TRT|RTR *or* TRR|RTT).

```
PK <- c("Cmax", "AUC")
CV <- c(0.45, 0.30)
# extract sample sizes and power
r1 <- sampleN.scABEL(CV = CV[1], theta0 = 0.90, design = "2x2x3",
print = FALSE, details = FALSE)[8:9]
r2 <- sampleN.TOST(CV = CV[2], theta0 = 0.90, design = "2x2x3",
print = FALSE, details = FALSE)[7:8]
n <- as.numeric(c(r1[1], r2[1]))
pwr <- signif(as.numeric(c(r1[2], r2[2])), 5)
# compile results
res <- data.frame(PK = PK, method = c("ABEL", "ABE"), n = n, power = pwr)
print(res, row.names = FALSE)
# PK method n power
# Cmax ABEL 42 0.80017
# AUC ABE 60 0.81002
```

Sample size assuming homoscedasticity (*CV*wT =
*CV*wR = 0.45) for the widened limits of the Gulf Cooperation
Council.

```
sampleN.scABEL(CV = 0.45, regulator = "GCC", details = FALSE)
#
# +++++++++++ scaled (widened) ABEL +++++++++++
# Sample size estimation
# (simulation based on ANOVA evaluation)
# ---------------------------------------------
# Study design: 2x3x3 (partial replicate)
# log-transformed data (multiplicative model)
# 1e+05 studies for each step simulated.
#
# alpha = 0.05, target power = 0.8
# CVw(T) = 0.45; CVw(R) = 0.45
# True ratio = 0.9
# ABE limits / PE constraint = 0.8 ... 1.25
# Widened limits = 0.75 ... 1.333333
# Regulatory settings: GCC
#
# Sample size
# n power
# 54 0.8123
```

#### RSABE

#### HVD(P)s

Sample size for a four period full replicate "2x2x4" study (any of
TRTR|RTRT, TRRT|RTTR, TTRR|RRTT) assuming heteroscedasticity
(*CV*wT 0.40, *CV*wR 0.50). Details of the sample
size search suppressed.

```
sampleN.RSABE(CV = c(0.40, 0.50), design = "2x2x4", details = FALSE)
#
# ++++++++ Reference scaled ABE crit. +++++++++
# Sample size estimation
# ---------------------------------------------
# Study design: 2x2x4 (4 period full replicate)
# log-transformed data (multiplicative model)
# 1e+05 studies for each step simulated.
#
# alpha = 0.05, target power = 0.8
# CVw(T) = 0.4; CVw(R) = 0.5
# True ratio = 0.9
# ABE limits / PE constraints = 0.8 ... 1.25
# Regulatory settings: FDA
#
# Sample size
# n power
# 20 0.81509
```

#### NTIDs

Sample size assuming heteroscedasticity (*CV*w 0.10,
σ2 ratio 2.5, *i.e.*, the test treatment has a substantially
higher variability than the reference). TRTR|RTRT according to the
FDA’s
guidance.
Assess additionally which one of the three components (scaled
ABE, conventional
ABE,
*s*wT/*s*wR ratio) drives the sample size.

```
CV <- signif(CVp2CV(CV = 0.10, ratio = 2.5), 4)
n <- sampleN.NTIDFDA(CV = CV)[["Sample size"]]
#
# +++++++++++ FDA method for NTIDs ++++++++++++
# Sample size estimation
# ---------------------------------------------
# Study design: 2x2x4 (TRTR|RTRT)
# log-transformed data (multiplicative model)
# 1e+05 studies for each step simulated.
#
# alpha = 0.05, target power = 0.8
# CVw(T) = 0.1197, CVw(R) = 0.07551
# True ratio = 0.975
# ABE limits = 0.8 ... 1.25
# Implied scABEL = 0.9236 ... 1.0827
# Regulatory settings: FDA
# - Regulatory const. = 1.053605
# - 'CVcap' = 0.2142
#
# Sample size search
# n power
# 32 0.699120
# 34 0.730910
# 36 0.761440
# 38 0.785910
# 40 0.809580
suppressMessages(power.NTIDFDA(CV = CV, n = n, details = TRUE))
# p(BE) p(BE-sABEc) p(BE-ABE) p(BE-sratio)
# 0.80958 0.90966 1.00000 0.87447
```

The *s*wT/*s*wR component shows the lowest
probability to demonstrate BE and
hence, drives the sample size.

Compare that with homoscedasticity (*CV*wT =
*CV*wR = 0.10):

```
CV <- 0.10
n <- sampleN.NTIDFDA(CV = CV, details = FALSE)[["Sample size"]]
#
# +++++++++++ FDA method for NTIDs ++++++++++++
# Sample size estimation
# ---------------------------------------------
# Study design: 2x2x4 (TRTR|RTRT)
# log-transformed data (multiplicative model)
# 1e+05 studies for each step simulated.
#
# alpha = 0.05, target power = 0.8
# CVw(T) = 0.1, CVw(R) = 0.1
# True ratio = 0.975
# ABE limits = 0.8 ... 1.25
# Regulatory settings: FDA
#
# Sample size
# n power
# 18 0.841790
suppressMessages(power.NTIDFDA(CV = CV, n = n, details = TRUE))
# p(BE) p(BE-sABEc) p(BE-ABE) p(BE-sratio)
# 0.84179 0.85628 1.00000 0.97210
```

Here the scaled ABE component shows the lowest probability to demonstrate BE and drives the sample size – which is much lower than in the previous example.

Comparison with *fixed* narrower limits applicable in other
jurisdictions. Note that a replicate design is not required, reducing
the chance of dropouts.

```
CV <- 0.10
# extract sample sizes and power
r1 <- sampleN.NTIDFDA(CV = CV, print = FALSE, details = FALSE)[8:9]
r2 <- sampleN.TOST(CV = CV, theta0 = 0.975, theta1 = 0.90,
design = "2x2x4", print = FALSE, details = FALSE)[7:8]
r3 <- sampleN.TOST(CV = CV, theta0 = 0.975, theta1 = 0.90,
design = "2x2x3", print = FALSE, details = FALSE)[7:8]
r4 <- sampleN.TOST(CV = CV, theta0 = 0.975, theta1 = 0.90,
print = FALSE, details = FALSE)[7:8]
n <- as.numeric(c(r1[1], r2[1], r3[1], r4[1]))
pwr <- signif(as.numeric(c(r1[2], r2[2], r3[2], r4[2])), 5)
# compile results
res <- data.frame(method = c("FDA scaled", rep ("fixed narrow", 3)),
design = c(rep("2x2x4", 2), "2x2x3", "2x2x2"),
n = n, power = pwr, a = n * c(4, 4, 3, 2))
names(res)[5] <- "adm. #"
print(res, row.names = FALSE)
# method design n power adm. #
# FDA scaled 2x2x4 18 0.84179 72
# fixed narrow 2x2x4 12 0.85628 48
# fixed narrow 2x2x3 16 0.81393 48
# fixed narrow 2x2x2 22 0.81702 44
```

### Dose-Proportionality

*CV* 0.20 (20%), doses 1, 2, and 8 units, assumed slope *β*0
1, target power 0.90.

```
sampleN.dp(CV = 0.20, doses = c(1, 2, 8), beta0 = 1, targetpower = 0.90)
#
# ++++ Dose proportionality study, power model ++++
# Sample size estimation
# -------------------------------------------------
# Study design: crossover (3x3 Latin square)
# alpha = 0.05, target power = 0.9
# Equivalence margins of R(dnm) = 0.8 ... 1.25
# Doses = 1 2 8
# True slope = 1, CV = 0.2
# Slope acceptance range = 0.89269 ... 1.1073
#
# Sample size (total)
# n power
# 18 0.915574
```

Note that the acceptance range of the slope depends on the ratio of the
highest and lowest doses (*i.e.*, it gets tighter for wider dose ranges
and therefore, higher sample sizes will be required).

In an exploratory setting wider equivalence margins {*θ*1,
*θ*2} (0.50, 2.00) were
proposed, translating in this example
to an acceptance range of `0.66667 ... 1.3333`

and a sample size of only
six subjects.

### Power Analysis

Explore impact of deviations from assumptions (higher *CV*, higher
deviation of *θ*0 from 1, dropouts) on power. Assumed
within-subject *CV* 0.20 (20%), target power 0.90. Plot suppressed.

```
res <- pa.ABE(CV = 0.20, targetpower = 0.90)
print(res, plotit = FALSE)
# Sample size plan ABE
# Design alpha CV theta0 theta1 theta2 Sample size Achieved power
# 2x2 0.05 0.2 0.95 0.8 1.25 26 0.9176333
#
# Power analysis
# CV, theta0 and number of subjects leading to min. acceptable power of =0.7:
# CV= 0.2729, theta0= 0.9044
# n = 16 (power= 0.7354)
```

If the study starts with 26 subjects (power ~0.92), the *CV* can
increase to ~0.27 **or** *θ*0 decrease to ~0.90 **or** the
sample size decrease to 10 whilst power will still be ≥0.70.

However, this is **not** a substitute for the “Sensitivity Analysis”
recommended in
ICH-E9,
since in a real study a combination of all effects occurs
simultaneously. It is up to *you* to decide on reasonable combinations
and analyze their respective power.

### Speed Comparisons

Performed on a Xeon E3-1245v3 3.4 GHz, 8 MB cache, 16 GB RAM, R 4.0.3 64 bit on Windows 7.

#### ABE

"2x2" crossover design, *CV* 0.17. Sample sizes and achieved power for
the supported methods (the 1st one is the default).

```
method n power time (s)
owenq 14 0.80568 0.00128
mvt 14 0.80569 0.11778
noncentral 14 0.80568 0.00100
shifted 16 0.85230 0.00096
```

The 2nd exact method is substantially slower than the
1st. The approximation based on the noncentral
*t*-distribution is slightly faster but matches the 1st exact
method closely. Though the approximation based on the shifted central
*t*-distribution is the fastest, it *might* estimate a larger than
necessary sample size. Hence, it should be used only for comparative
purposes.

#### ABEL

Four period full replicate study, homogenicity (*CV*wT =
*CV*wR 0.45). Sample sizes and achieved power for the
supported methods.

```
function method n power time (s)
sampleN.scABEL ‘key’ statistics 28 0.81116 0.1348
sampleN.scABEL.sdsims subject simulations 28 0.81196 2.5377
```

Simulating via the ‘key’ statistics is the method of choice for speed
reasons.

However, subject simulations are recommended *if*

- the partial replicate design (TRR|RTR|RRT) is planned
**and** - the special case of heterogenicity
*CV*wT >*CV*wR is expected.

## Installation

You can install the released version of PowerTOST from CRAN with

```
package <- "PowerTOST"
inst <- package %in% installed.packages()
if (length(package[!inst]) > 0) install.packages(package[!inst])
```

… and the development version from GitHub with

```
# install.packages("remotes")
remotes::install_github("Detlew/PowerTOST")
```

Skips installation from a github remote if the
SHA-1 has not changed since last
install. Use `force = TRUE`

to force installation.

## Session Information

Inspect this information for reproducibility. Of particular importance
are the versions of R and the packages used to create this workflow. It
is considered good practice to record this information with every
analysis.

Version 1.5.3 built 2021-01-18 with R 4.0.3.

```
options(width = 80)
devtools::session_info()
# - Session info ---------------------------------------------------------------
# setting value
# version R version 4.0.3 (2020-10-10)
# os Windows 10 x64
# system x86_64, mingw32
# ui RTerm
# language EN
# collate German_Germany.1252
# ctype German_Germany.1252
# tz Europe/Berlin
# date 2021-01-18
#
# - Packages -------------------------------------------------------------------
# package * version date lib source
# assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.0.0)
# callr 3.5.1 2020-10-13 [1] CRAN (R 4.0.3)
# cli 2.2.0 2020-11-20 [1] CRAN (R 4.0.3)
# crayon 1.3.4 2017-09-16 [1] CRAN (R 4.0.0)
# cubature 2.0.4.1 2020-07-06 [1] CRAN (R 4.0.2)
# desc 1.2.0 2018-05-01 [1] CRAN (R 4.0.0)
# devtools 2.3.2 2020-09-18 [1] CRAN (R 4.0.2)
# digest 0.6.27 2020-10-24 [1] CRAN (R 4.0.3)
# ellipsis 0.3.1 2020-05-15 [1] CRAN (R 4.0.0)
# evaluate 0.14 2019-05-28 [1] CRAN (R 4.0.0)
# fansi 0.4.1 2020-01-08 [1] CRAN (R 4.0.0)
# fs 1.5.0 2020-07-31 [1] CRAN (R 4.0.2)
# glue 1.4.2 2020-08-27 [1] CRAN (R 4.0.2)
# htmltools 0.5.0 2020-06-16 [1] CRAN (R 4.0.3)
# knitr 1.30 2020-09-22 [1] CRAN (R 4.0.2)
# lifecycle 0.2.0 2020-03-06 [1] CRAN (R 4.0.0)
# magrittr 2.0.1 2020-11-17 [1] CRAN (R 4.0.3)
# memoise 1.1.0 2017-04-21 [1] CRAN (R 4.0.0)
# mvtnorm 1.1-1 2020-06-09 [1] CRAN (R 4.0.0)
# pkgbuild 1.2.0 2020-12-15 [1] CRAN (R 4.0.3)
# pkgload 1.1.0 2020-05-29 [1] CRAN (R 4.0.0)
# PowerTOST * 1.5-3 2021-01-18 [1] local
# prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.0.0)
# processx 3.4.5 2020-11-30 [1] CRAN (R 4.0.3)
# ps 1.5.0 2020-12-05 [1] CRAN (R 4.0.3)
# purrr 0.3.4 2020-04-17 [1] CRAN (R 4.0.0)
# R6 2.5.0 2020-10-28 [1] CRAN (R 4.0.3)
# Rcpp 1.0.5 2020-07-06 [1] CRAN (R 4.0.2)
# remotes 2.2.0 2020-07-21 [1] CRAN (R 4.0.2)
# rlang 0.4.9 2020-11-26 [1] CRAN (R 4.0.3)
# rmarkdown 2.6 2020-12-14 [1] CRAN (R 4.0.3)
# rprojroot 2.0.2 2020-11-15 [1] CRAN (R 4.0.3)
# sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.0.0)
# stringi 1.5.3 2020-09-09 [1] CRAN (R 4.0.2)
# stringr 1.4.0 2019-02-10 [1] CRAN (R 4.0.0)
# TeachingDemos 2.12 2020-04-07 [1] CRAN (R 4.0.0)
# testthat 3.0.1 2020-12-17 [1] CRAN (R 4.0.3)
# usethis 2.0.0 2020-12-10 [1] CRAN (R 4.0.3)
# withr 2.4.0 2021-01-16 [1] CRAN (R 4.0.3)
# xfun 0.19 2020-10-30 [1] CRAN (R 4.0.3)
# yaml 2.2.1 2020-02-01 [1] CRAN (R 4.0.0)
#
# [1] C:/Program Files/R/library
# [2] C:/Program Files/R/R-4.0.3/library
```