-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathREADME.Rmd
442 lines (364 loc) · 26.8 KB
/
README.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
---
title: "PowerTOST"
output:
github_document:
toc: true
toc_depth: 3
---
<!-- README.md is generated from README.Rmd. Please edit that file -->
[![License: GPL v2](https://img.shields.io/badge/License-GPLv2-blue.svg)](https://www.gnu.org/licenses/gpl-2.0) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
![repo](https://img.shields.io/badge/repo%20since-Jun%202016-brightgreen) ![active](https://www.repostatus.org/badges/latest/active.svg) ![repo size](https://img.shields.io/github/repo-size/Detlew/PowerTOST?color=yellow) ![code size](https://img.shields.io/github/languages/code-size/Detlew/PowerTOST?color=green) ![first](https://img.shields.io/badge/CRAN%20since-May%202010-brightgreen) ![on CRAN](https://www.r-pkg.org/badges/version-ago/PowerTOST) [![cran checks](https://badges.cranchecks.info/worst/PowerTOST.svg)](https://cran.r-project.org/web/checks/check_results_PowerTOST.html) ![commits](https://img.shields.io/github/commits-since/Detlew/PowerTOST/latest) ![last commit](https://img.shields.io/github/last-commit/Detlew/PowerTOST) [![CRAN RStudio mirror downloads](https://cranlogs.r-pkg.org/badges/grand-total/PowerTOST?color=blue)](https://r-pkg.org/pkg/PowerTOST) [![CRAN RStudio mirror downloads](https://cranlogs.r-pkg.org/badges/last-month/PowerTOST?color=green)](https://r-pkg.org/pkg/PowerTOST)
```{r, echo = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#"
)
```
```{r, echo = FALSE, results = "asis"}
txt <- paste0("Version ", packageVersion("PowerTOST"), " built ",
packageDate("PowerTOST", date.fields = "Built"),
" with R ", substr(packageDescription("PowerTOST", fields = "Built"), 3, 7))
# date.fields = "Date/Publication") is available if package is already on CRAN!
# But we want submit it to CRAN as stable. Thus the next doesn't do the job.
# if (grepl("900", as.character(packageVersion("PowerTOST"))) |
# is.na(packageDate("PowerTOST", date.fields = "Date/Publication"))) {
# txt <- paste(txt, "\n(development version not on CRAN).")
# } else {
# txt <- paste0(txt, "\n(stable release on CRAN ",
# packageDate("PowerTOST", date.fields = "Date/Publication"), ").")
# }
cat(txt)
```
## Introduction{#introduction}
The package contains functions to calculate power and estimate sample size for various study designs used in (not only bio-) equivalence studies.
## Supported Designs{#designs}
```{r, echo = FALSE}
library(PowerTOST)
designs <- known.designs()
print(designs[, c(2, 9, 3)], row.names = FALSE)
```
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:
|<small>design</small>|<small>type</small>|<small>sequences</small>||<small>periods</small>|
|:----:|:----:|:-:|---------|:-:|
|`2x2x4`|<small>full|<small>2</small>|<small>TRTR\|RTRT</small>|<small>4</small>|
|`2x2x4`|<small>full|<small>2</small>|<small>TRRT\|RTTR</small>|<small>4</small>|
|`2x2x4`|<small>full|<small>2</small>|<small>TTRR\|RRTT</small>|<small>4</small>|
|`2x4x4`|<small>full|<small>4</small>|<small>TRTR\|RTRT\|TRRT\|RTTR</small>|<small>4</small>|
|`2x4x4`|<small>full|<small>4</small>|<small>TRRT\|RTTR\|TTRR\|RRTT</small>|<small>4</small>|
|`2x2x3`|<small>full|<small>2</small>|<small>TRT\|RTR</small>|<small>3</small>|
|`2x2x3`|<small>full|<small>2</small>|<small>TRR\|RTT</small>|<small>3</small>|
|`2x4x2`|<small>full|<small>4</small>|<small>TR\|RT\|TT\|RR</small>|<small>2</small>|
|`2x3x3`|<small>partial|<small>3</small>|<small>TRR\|RTR\|RRT</small>|<small>3</small>|
|`2x2x3`|<small>partial|<small>2</small>|<small>TRR\|RTR</small>|<small>3</small>|
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 (<span title="also known as">a.k.a.</span> extra-reference design) should be avoided because it is biased in the presence of period effects.
<small>[TOC ↩](#powertost)</small>
## Purpose{#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.
<small>[TOC ↩](#powertost)</small>
## Supported{#supported}
### Power and Sample Size{#power_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).
- <span title="Average Bioequivalence">ABE</span> for Highly Variable Narrow Therapeutic Index Drugs by simulations: U.S. <span title="Food and Drug Administration">FDA</span>, China <span title="Center for Drug Evaluation">CDE</span>.
- Scaled Average Bioequivalence based on simulations.
- Average Bioequivalence with Expanding Limits (ABEL) for Highly Variable Drugs / Drug Products: <span title="European Medicines Agency">EMA</span>, <span title="World Health Organization">WHO</span> and many others.
- Average Bioequivalence with *fixed* widened limits of 75.00--133.33\% if *CV*~wR~ >30\%: Gulf Cooperation Council.
- Reference-scaled Average Bioequivalence (RSABE) for <span title="Highly Variable Drugs / Drug Products">HVDP(s)</span>: U.S. <span title="Food and Drug Administration">FDA</span>, China <span title="Center for Drug Evaluation">CDE</span>.
- Iteratively adjust *α* to control the type I error in <span title="Average Bioequivalence with Expanding Limits">ABEL</span> and <span title="Reference-scaled Average Bioequivalence">RSABE</span> for <span title="Highly Variable Drugs / Drug Products">HVDP(s)</span>.
- <span title="Reference-scaled Average Bioequivalence">RSABE</span> for <span title="Narrow Therapeutic Index Drugs">NTIDs</span>: U.S. <span title="Food and Drug Administration">FDA</span>, China <span title="Center for Drug Evaluation">CDE</span>.
- Two simultaneous <span title="Two One-Sided Tests">TOST</span> 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~.
- Dose-Proportionality using the power model.
<small>[TOC ↩](#powertost)</small>
### Methods{#methods}
- Exact
- Owen’s Q.
- Direct integration of the bivariate non-central *t*-distribution.
- Approximations
- Non-central *t*-distribution.
- ‘Shifted’ central *t*-distribution.
<small>[TOC ↩](#powertost)</small>
### Helpers{#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 <span title="Two One-Sided Tests">TOST</span> 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.
<small>[TOC ↩](#powertost)</small>
## Defaults {#defaults}
* *α* 0.05, {*θ*~1~, *θ*~2~} (0.80, 1.25), target power 0.80. 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{#ABE.defaults}
#### Conventional (unscaled){#conventional}
Design `"2x2"` (TR|RT), exact method (Owen’s Q).
#### Highly Variable NTIDs (FDA, CDE){#NTID.defaults}
Design `"2x2x4"` (TRTR|RTRT), upper limit of the confidence interval of *σ*~wT~/*σ*~wR~ ≤2.5, approximation by the non-central *t*-distribution, 100,000 simulations.
### Reference-Scaled Average Bioequivalence{#RSABE.defaults}
Point estimate constraints (0.80, 1.25), homoscedasticity (*CV*~wT~ = *CV*~wR~), scaling is based on *CV*~wR~, design `"2x3x3"` (TRR|RTR|RRT), approximation by the non-central *t*-distribution, 100,000 simulations.
- <span title="European Medicines Agency">EMA</span>, <span title="World Health Organization">WHO</span>, Health Canada, and many other jurisdictions: Average Bioequivalence with Expanding Limits (ABEL).
- U.S. <span title="Food and Drug Administration">FDA</span>, China <span title="Center for Drug Evaluation">CDE</span>: RSABE.
#### Highly Variable Drugs / Drug Products{#HVDP.defaults}
*θ*~0~ 0.90.<sup id="a1">[1](#f1)</sup>
###### EMA and many others{#ABEL.EMA.defaults}
Regulatory constant `0.760`, upper cap of scaling at *CV*~wR~ 50\%, evaluation by <span title="Analysis of Variance">ANOVA</span>.
###### Health Canada{#ABEL.HC.defaults}
Regulatory constant `0.760`, upper cap of scaling at *CV*~wR~ ~57.4\%, evaluation by intra-subject contrasts.
###### Gulf Cooperation Council{#ABEL.GCC.defaults}
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 <span title="Analysis of Variance">ANOVA</span>.
###### FDA, CDE{#RSABE.FDA.defaults}
Regulatory constant `log(1.25)/0.25`, no upper cap of scaling, evaluation by linearized scaled <span title="Average Bioequivalence">ABE</span> (Howe’s approximation).
#### Narrow Therapeutic Index Drugs (FDA, CDE){#NTID.FDA.defaults}
*θ*~0~ 0.975, regulatory constant `log(1.11111)/0.1`, implicit upper cap of scaling at *CV*~wR~ ~21.4\%, design `"2x2x4"` (TRTR|RTRT), evaluation by linearized scaled <span title="Average Bioequivalence">ABE</span> (Howe’s approximation), upper limit of the confidence interval of *σ*~wT~/*σ*~wR~ ≤2.5.
### Dose-Proportionality{#DP}
*β*~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{#PA}
Minimum acceptable power 0.70. *θ*~0~; design, conditions, and sample size method depend on defaults of the respective approaches (ABE, ABEL, RSABE, NTID, HVNTID).
<small>[TOC ↩](#powertost)</small>
## Examples{#examples}
Before running the examples attach the library.
```{r attach_library}
library(PowerTOST)
```
If not noted otherwise, the functions’ [defaults](#defaults) are employed.
### Parallel Design{#parallel}
Power for total *CV* 0.35 (35\%), group sizes 52 and 49.
```{r parallel}
power.TOST(CV = 0.35, n = c(52, 49), design = "parallel")
```
### Crossover Design{#crossover}
Sample size for assumed within- (intra-) subject *CV* 0.20 (20\%).
```{r crossover_ABE1}
sampleN.TOST(CV = 0.20)
```
<small>[TOC ↩](#powertost)</small>
Sample size for assumed within- (intra-) subject *CV* 0.40 (40\%), *θ*~0~ 0.90, four period full replicate study (any of TRTR|RTRT, TRRT|RTTR, TTRR|RRTT). Wider acceptance range for *C*~max~ (South Africa).
```{r crossover_ABE2}
sampleN.TOST(CV = 0.40, theta0 = 0.90, theta1 = 0.75, design = "2x2x4")
```
<small>[TOC ↩](#powertost)</small>
Sample size for assumed within- (intra-) subject *CV* 0.125 (12.5\%), *θ*~0~ 0.975. Narrower acceptance range for <span title="Narrow Therapeutic Index Drugs">NTIDs</span> (most jurisdictions).
```{r crossover_ABE3}
sampleN.TOST(CV = 0.125, theta0 = 0.975, theta1 = 0.90)
```
<small>[TOC ↩](#powertost)</small>
Sample size for equivalence of the ratio of two means with normality on the original scale based on Fieller’s (‘fiducial’) confidence interval.<sup id="a2">[2](#f2)</sup> 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.
```{r crossover_fieller}
sampleN.RatioF(CV = 0.20, CVb = 0.40)
```
<small>[TOC ↩](#powertost)</small>
### Replicate Designs{#replicate}
#### ABE{#repl.ABE}
##### Conventional (unscaled){#repl.ABE.conv}
Sample size for assumed within- (intra-) subject *CV* 0.45 (45\%), *θ*~0~ 0.90, three period full replicate study (TRT|RTR *or* TRR|RTT).
```{r replicate_ABE1}
sampleN.TOST(CV = 0.45, theta0 = 0.90, design = "2x2x3")
```
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 <span title="Average Bioequivalence">ABE</span>. 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.
```{r replicate_ABE2}
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)
```
Similar sample size because the pooled *CV*~w~ is still 0.45.
<small>[TOC ↩](#powertost)</small>
##### Highly Variable Narrow Therapeutic Index Drug{#HVNTID}
Sample size assuming heteroscedasticity (*CV*~w~ 0.45, variance-ratio 2.5, *i.e.*, the test treatment has a substantially higher variability than the reference). TRTR|RTRT according to the FDA’s guidances.<sup id="a3">[3,](#f3)</sup><sup id="a4">[4,](#f4)</sup><sup id="a5">[5](#f5)</sup> Assess additionally which one of the components (<span title="Average Bioequivalence">ABE</span>, *s*~wT~/*s*~wR~-ratio) drives the sample size.
```{r HVNTID}
CV <- signif(CVp2CV(CV = 0.45, ratio = 2.5), 4)
n <- sampleN.HVNTID(CV = CV, details = FALSE)[["Sample size"]]
suppressMessages(power.HVNTID(CV = CV, n = n, details = TRUE))
```
The ABE component shows a lower probability to demonstrate BE than the *s*~wT~/*s*~wR~ component and hence, drives the sample size.
<small>[TOC ↩](#powertost)</small>
#### ABEL{#ABEL}
Sample size assuming homoscedasticity (*CV*~wT~ = *CV*~wR~ = 0.45).
```{r ABEL_1}
sampleN.scABEL(CV = 0.45)
```
<small>[TOC ↩](#powertost)</small>
Iteratively adjust *α* to control the Type I Error.<sup id="a6">[6](#f6)</sup> Heteroscedasticity (*CV*~wT~ 0.30, *CV*~wR~ 0.40, *i.e.*, variance-ratio ~0.58), four period full replicate study (any of TRTR|RTRT, TRRT|RTTR, TTRR|RRTT), 24 subjects, balanced sequences.
```{r ABEL_2}
scABEL.ad(CV = c(0.30, 0.40), design = "2x2x4", n = 24)
```
With the nominal *α* 0.05 the Type I Error will be inflated (0.05953). With the adjusted *α* 0.03997 (*i.e.*, a ~92\% <span title="Confidence Interval">CI</span>) the <span title="Type I Error">TIE</span> will be controlled, although with a slight loss in power (decreases from 0.805 to 0.778).
Consider `sampleN.scABEL.ad(CV = c(0.30, 0.35), design = "2x2x4")` to estimate the sample size preserving both the <span title="Type I Error">TIE</span> and target power. In this example 26 subjects would be required.
<small>[TOC ↩](#powertost)</small>
<span title="Average Bioequivalence with Expanded Limits">ABEL</span> cannot be applied for *AUC* (except for the <span title="World Health Organization">WHO<span>). Hence, in many cases <span title="Average Bioequivalence">ABE</span> drives the sample size. Four period full replicate study (any of TRTR|RTRT, TRRT|RTTR, TTRR|RRTT).
```{r ABEL_3}
PK <- c("Cmax", "AUC")
CV <- c(0.45, 0.30)
# extract sample sizes and power
r1 <- sampleN.scABEL(CV = CV[1], design = "2x2x4",
print = FALSE, details = FALSE)[8:9]
r2 <- sampleN.TOST(CV = CV[2], theta0 = 0.90, design = "2x2x4",
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)
```
*AUC* drives the sample size.
For Health Canada it is the opposite (ABE for *C*~max~ and ABEL for *AUC*).
```{r ABEL_4}
PK <- c("Cmax", "AUC")
CV <- c(0.45, 0.30)
# extract sample sizes and power
r1 <- sampleN.TOST(CV = CV[1], theta0 = 0.90, design = "2x2x4",
print = FALSE, details = FALSE)[7:8]
r2 <- sampleN.scABEL(CV = CV[2], design = "2x2x4",
print = FALSE, details = FALSE)[8:9]
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("ABE", "ABEL"),
n = n, power = pwr)
print(res, row.names = FALSE)
```
Here *C*~max~ drives the sample size.
<small>[TOC ↩](#powertost)</small>
Sample size assuming homoscedasticity (*CV*~wT~ = *CV*~wR~ = 0.45) for the widened limits of the Gulf Cooperation Council.
```{r ABEL_5}
sampleN.scABEL(CV = 0.45, regulator = "GCC", details = FALSE)
```
<small>[TOC ↩](#powertost)</small>
#### RSABE{#RSABE}
#### HVD(P)s{#RSABE.HVDP}
Sample size for a four period full replicate study (any of TRTR|RTRT, TRRT|RTTR, TTRR|RRTT) assuming heteroscedasticity (*CV*~wT~ 0.40, *CV*~wR~ 0.50, *i.e.*, variance-ratio ~0.67). Details of the sample size search suppressed.
```{r RSABE}
sampleN.RSABE(CV = c(0.40, 0.50), design = "2x2x4", details = FALSE)
```
<small>[TOC ↩](#powertost)</small>
#### NTIDs (FDA, CDE){#RSABE.HVNTID}
Sample size assuming heteroscedasticity (*CV*~w~ 0.10, variance-ratio 2.5, *i.e.*, the test treatment has a substantially higher variability than the reference). TRTR|RTRT according to the FDA’s guidance.<sup id="a7">[7](#f7)</sup> Assess additionally which one of the three components (scaled <span title="Average Bioequivalence">ABE</span>, conventional <span title="Average Bioequivalence">ABE</span>, *s*~wT~/*s*~wR~-ratio) drives the sample size.
```{r NTID2}
CV <- signif(CVp2CV(CV = 0.10, ratio = 2.5), 4)
n <- sampleN.NTID(CV = CV)[["Sample size"]]
suppressMessages(power.NTID(CV = CV, n = n, details = TRUE))
```
The *s*~wT~/*s*~wR~ component shows the lowest probability to demonstrate <span title="Bioequivalence">BE</span> and hence, drives the sample size.
<small>[TOC ↩](#powertost)</small>
Compare that with homoscedasticity (*CV*~wT~ = *CV*~wR~ = 0.10):
```{r NTID3}
CV <- 0.10
n <- sampleN.NTID(CV = CV, details = FALSE)[["Sample size"]]
suppressMessages(power.NTID(CV = CV, n = n, details = TRUE))
```
Here the scaled <span title="Average Bioequivalence">ABE</span> component shows the lowest probability to demonstrate <span title="Bioequivalence">BE</span> and drives the sample size – which is much lower than in the previous example.
<small>[TOC ↩](#powertost)</small>
Comparison with *fixed* narrower limits applicable in other jurisdictions. Note that a replicate design is not mandatory -- reducing the chance of dropouts and requiring less administrations
```{r NTID4}
CV <- 0.10
# extract sample sizes and power
r1 <- sampleN.NTID(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/CDE", 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. #" # number of administrations
print(res, row.names = FALSE)
```
<small>[TOC ↩](#powertost)</small>
### Dose-Proportionality
*CV* 0.20 (20\%), doses 1, 2, and 8 units, assumed slope *β*~0~ 1, target power 0.90.
```{r DP}
sampleN.dp(CV = 0.20, doses = c(1, 2, 8), beta0 = 1, targetpower = 0.90)
```
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,<sup id="a8">[8](#f8)</sup> translating in this example to an acceptance range of `0.66667 ... 1.3333` and a sample size of only six subjects.
<small>[TOC ↩](#powertost)</small>
### 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.
```{r PA}
res <- pa.ABE(CV = 0.20, targetpower = 0.90)
print(res, plotit = FALSE)
```
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,<sup id="a9">[9](#f9)</sup> 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.
<small>[TOC ↩](#powertost)</small>
### Speed Comparisons
Performed on a Xeon E3-1245v3 3.4 GHz, 8 MB cache, 16 GB RAM, R `r getRversion()` 64 bit on Windows 7.
#### ABE
2×2 crossover design, *CV* 0.17. Sample sizes and achieved power for the supported methods (the 1<sup>st</sup> 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 2<sup>nd</sup> exact method is substantially slower than the 1<sup>st</sup>. The approximation based on the noncentral *t*-distribution is slightly faster but matches the 1<sup>st</sup> 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 (any of TRTR|RTRT, TRRT|RTTR, TTRR|RRTT), 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.
<small>[TOC ↩](#powertost)</small>
## Installation
You can install the released version of PowerTOST from [CRAN](https://CRAN.R-project.org) with
```{r inst}
package <- "PowerTOST"
inst <- package %in% installed.packages()
if (length(package[!inst]) > 0) install.packages(package[!inst])
```
… and the development version from [GitHub](https://github.com/) with
```
# install.packages("remotes")
remotes::install_github("Detlew/PowerTOST")
```
Skips installation from a github remote if the [SHA-1](https://en.wikipedia.org/wiki/SHA-1) has not changed since last install. Use `force = TRUE` to force installation.
<small>[TOC ↩](#powertost)</small>
## 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 `r packageVersion("PowerTOST")` built `r packageDate("PowerTOST", date.fields = "Built")` with R `r substr(packageDescription("PowerTOST", fields = "Built"), 3, 7)`.
```{r, sessioninfo}
options(width = 66)
sessionInfo()
```
<small>[TOC ↩](#powertost)</small>
***
<span id="f1" style="font-size:smaller">1. Tóthfalusi L, Endrényi L. *Sample Sizes for Designing
Bioequivalence Studies for Highly Variable Drugs.* J Pharm Pharmacol Sci. 2012;
15(1): 73--84. [doi:10.18433/j3z88f](https://doi.org/10.18433/j3z88f). [Open access](https://ejournals.library.ualberta.ca/index.php/JPPS/article/download/11612/9489).</span> [↩](#a1)\
<span id="f2" style="font-size:smaller">2. Fieller EC. *Some Problems In Interval Estimation.* J Royal Stat Soc B. 1954; 16(2): 175–85. [JSTOR:2984043](https://www.jstor.org/stable/2984043).</span> [↩](#a2)\
<span id="f3" style="font-size:smaller">3. U.S. Food and Drug Administration, Office of Generic Drugs. *Draft Guidance on Dabigatran Etexilate Mesylate.* Recommended Jun 2012; Revised Sep 2015, Jul 2017. [Online](https://www.accessdata.fda.gov/drugsatfda_docs/psg/Dabigatran%20etexilate%20mesylate_oral%20capsule_NDA%20022512_RV05-17.pdf).</span> [↩](#a3)\
<span id="f4" style="font-size:smaller">4. U.S. Food and Drug Administration, Office of Generic Drugs. *Draft Guidance on Rivaroxaban.* Recommended Sep 2015. [Online](https://www.accessdata.fda.gov/drugsatfda_docs/psg/Rivaroxaban_oral%20tablet_22406_RC09-15.pdf).</span> [↩](#a4)\
<span id="f5" style="font-size:smaller">5. U.S. Food and Drug Administration, Office of Generic Drugs. *Draft Guidance on Edoxaban Tosylate.* Recommended May 2017; Revised Mar 2020. [Online](https://www.accessdata.fda.gov/drugsatfda_docs/psg/PSG_206316.pdf).</span> [↩](#a5)\
<span id="f6" style="font-size:smaller">6. Labes D, Schütz H. *Inflation of Type I Error in the Evaluation of Scaled Average Bioequivalence, and a Method for its Control.* Pharm Res. 2016; 33(11): 2805--14. [doi:10.1007/s11095-016-2006-1](https://doi.org/10.1007/s11095-016-2006-1).</span> [↩](#a6)\
<span id="f7" style="font-size:smaller">7. U.S. Food and Drug Administration, Center for Drug Evaluation and Research. *Draft Guidance for Industry. Bioequivalence Studies with Pharmacokinetic Endpoints for Drugs Submitted Under an ANDA.* August 2021. [Online](https://www.fda.gov/media/87219/download).</span> [↩](#a7)\
<span id="f8" style="font-size:smaller">8. Hummel J, McKendrick S, Brindley C, French R. *Exploratory assessment of dose proportionality: review of current approaches and proposal for a practical criterion.* Pharm. Stat. 2009; 8(1): 38--49. [doi:10.1002/pst.326](https://doi.org/10.1002/pst.326).</span> [↩](#a8)\
<span id="f9" style="font-size:smaller">9. International Conference on
Harmonisation of Technical Requirements for Registration of
Pharmaceuticals for Human Use. *ICH Harmonised Tripartite
Guideline. E9. Statistical Principles for Clinical Trials.* 5 February 1998.
[Online](https://database.ich.org/sites/default/files/E9_Guideline.pdf).</span> [↩](#a9)