Encoding: UTF-8
Version: 1.1.3
Date: 2022-05-02
Title: Average Bioequivalence with Expanding Limits (ABEL)
Author: Helmut Schütz ORCID iD [aut, cre], Michael Tomashevskiy [ctb], Detlew Labes ORCID iD [ctb]
Maintainer: Helmut Schütz <helmut.schuetz@bebac.at>
Depends: R (≥ 3.5.0)
Imports: readxl (≥ 1.0.0), PowerTOST (≥ 1.5.3), lmerTest, nlme, pbkrtest, graphics, grDevices
Suggests: knitr, rmarkdown, testthat, devtools
Description: Performs comparative bioavailability calculations for Average Bioequivalence with Expanding Limits (ABEL). Implemented are 'Method A' / 'Method B' and the detection of outliers. If the design allows, assessment of the empiric Type I Error and iteratively adjusting alpha to control the consumer risk. Average Bioequivalence - optionally with a tighter (narrow therapeutic index drugs) or wider acceptance range (South Africa: Cmax) - is implemented as well.
License: GPL (≥ 3)
LazyData: true
VignetteBuilder: knitr
URL: https://github.com/Helmut01/replicateBE
BugReports: https://github.com/Helmut01/replicateBE/issues
NeedsCompilation: no
Packaged: 2022-05-02 19:06:36 UTC; HS
Repository: CRAN
Date/Publication: 2022-05-02 22:52:03 UTC

Comparative BA-calculation for Average Bioequivalence

Description

This function performs the required calculations for the BE decision via conventional (unscaled) Average Bioequivalence based on ANOVA as recommended in the EMA’s guideline.

Usage

ABE(alpha = 0.05, path.in, path.out = tempdir(), file, set = "",
    ext, na = ".", sep = ",", dec = ".", logtrans = TRUE,
    print = TRUE, details = FALSE, verbose = FALSE, ask = FALSE,
    data = NULL, theta1, theta2)

Arguments

alpha

Type I Error (TIE) probability (nominal level of the test). Conventionally set to 0.05, resulting in a 100(1 – 2α) confidence interval.

path.in

Path to the data file for import.

path.out

Path to save the result file if print = TRUE. You must have write-permission to the folder. For simplicity your home folder ⁠"~/"⁠ can be used.
If missing, R’s standard temporary folder will be used.

file

Name of the dataset for import (without extension). Must be a string (i.e., enclosed in single or double quotation marks). The name is case-sensitive.

set

Name of the sheet of an Excel-file (mandatory). Must be a string (i.e., enclosed in single or double quotation marks). The name is case-sensitive.

ext

File-extension enclosed in single or double quotation marks. Acceptable are ⁠"csv"⁠ for character delimited variables (CSV) or ⁠"xls"⁠, ⁠"xlsx"⁠ for Excel-files.
The file-extension is not case-sensitive.

na

Character string denoting missing values. Acceptable are ⁠"NA"⁠ (not available), ⁠"ND"⁠ (not determined), ⁠"."⁠ (SAS), ⁠"Missing"⁠ (Phoenix WinNonlin), and ⁠""⁠ (Excel; empty cell). Missings will be converted to ⁠NA⁠ in the imported data. Defaults to ⁠"."⁠.

sep

Variable separator in the CSV-file. Acceptable are ⁠","⁠ (comma = ⁠ASCII 44⁠), ⁠";"⁠ (semicolon = ⁠ASCII 59⁠), and ⁠"\t"⁠ (tabulator = ⁠ASCII 9⁠). Defaults to ⁠","⁠.

dec

Decimal separator in the CSV-file. Acceptable are ⁠"."⁠ (period = ⁠ASCII 46⁠) or ⁠","⁠ (comma = ⁠ASCII 44⁠). Defaults to ⁠"."⁠.

logtrans

If TRUE (default) the raw data (provided in column ⁠PK⁠) will be internally log-transformed and used in the calculations. If FALSE the already log-transformed data (provided in the column ⁠logPK⁠) will be used in the calculations.

print

If TRUE (default), the function prints its results to a file. If FALSE, returns a data frame of results.

details

Defaults to FALSE. If TRUE, the function sends its results in 7-digits precision to a data frame.

verbose

Defaults to FALSE. If TRUE the ANOVA-table is send to the console.

ask

Defaults to FALSE. If TRUE the user will be asked whether an already existing result file should be overwritten.

data

Specification of one of the internal reference datasets (⁠rds01⁠ to ⁠rds30⁠). If given, the arguments ⁠path.in⁠, ⁠file⁠, ⁠set⁠, and ⁠ext⁠ are ignored. For its use see the examples.
If not given, defaults to NULL (i.e., import data from a file).

theta1

Lower limit of the acceptance range. Defaults to ⁠0.80⁠. If missing will be set to 1/theta2.

theta2

Upper limit of the acceptance range. Defaults to ⁠1.25⁠. If missing will be set to 1/theta1.

Details

The model for the treatment comparison is
lm(log(PK) ~ sequence + subject%in%sequence + period + treatment, data = data)
where all effects are fixed.

Tested designs

Data structure

Value

Prints results to a file if argument print = TRUE (default).
If argument print = FALSE, returns a data frame with the elements:

Design e.g., TRTR|RTRT
Method ABE
n total number of subjects
nTT number of subjects with two treatments of T (full replicates only)
nRR number of subjects with two treatments of R
Sub/seq number of subjects per sequence
Miss/seq if the design is unbalanced, number of missings per sequence
Miss/per if the design is incomplete, number of missings per period
alpha nominal level of the test
DF degrees of freedom of the treatment comparison
CVwT(%) intra-subject coefficient of variation of the test treatment (full replicates only)
CVwR(%) intra-subject coefficient of variation of the reference treatment
BE.lo(%) lower bioequivalence limit (e.g., ⁠ 80⁠)
BE.hi(%) upper bioequivalence limit (e.g., ⁠125⁠)
CI.lo(%) lower confidence limit of the treatment comparison
CI.hi(%) upper confidence limit of the treatment comparison
PE(%) point estimate of the treatment comparison (aka GMR)
BE assessment whether the 100(1 – 2α) CI lies entirely within the acceptance range (⁠pass|fail⁠)

Warning

Files may contain a commentary header. If reading from a CSV-file, each line of the commentary header must start with ⁠"# "⁠ (hashmark space = ⁠ASCII 35 ASCII 32⁠). If reading from an Excel-file all lines preceding the column headers are treated as a comment.

Clarification

The ‘ASCII line chart’ in the result file gives the confidence limits with filled black squares and the point estimate as a white rhombus. If a confidence limit exceeds the drawing range, it is shown as a triangle. The BE limits and 100% are given with single vertical lines. The ‘resolution’ is approximatelly 0.5% and therefore, not all symbols might be shown. The CI and PE take presedence over the limits.

Disclaimer

Program offered for Use without any Guarantees and Absolutely No Warranty. No Liability is accepted for any Loss and Risk to Public Health Resulting from Use of this R-Code.

Note

The EMA’s model assumes equal [sic!] intra-subject variances of test and reference (like in 2×2×2 trials) – even if proven false in one of the full replicate designs (were both CVwT and CVwR can be estimated). Hence, amongst biostatisticians it is called the ‘crippled model’ because the replicative nature of the study is ignored.
Conventional unscaled ABE has to be employed for Cmax (if widening of the acceptance range is clinically not justifiable), AUC0–t, AUC0–72 (immediate release products) and Cmax,ss, Cτ,ss, partialAUC (if widening of the acceptance range is clinically not justifiable), and AUC0–t, AUC0–∞, AUC0–τ (modified release products).

Author(s)

Helmut Schütz

References

European Medicines Agency, Committee for Medicinal Products for Human Use. Guideline on the Investigation of Bioequivalence. CPMP/EWP/QWP/1401/98 Rev. 1/ Corr **. London. 20 January 2010. online

European Medicines Agency, Committee for Medicinal Products for Human Use. Guideline on the pharmacokinetic and clinical evaluation of modified release dosage forms. EMA/CPMP/EWP/280/96 Corr1. London. 20 November 2014. online

See Also

method.A evaluation for ABEL by a fixed effects model (ANOVA)
method.B evaluation for ABEL by a linear mixed effects model

Examples


# Importing from a CSV-file, using most of the defaults: variable
# separator comma, decimal separator period, print to file.
# Note: You must adapt the path-variables. The example reads from
# the data provided by the library. Write-permissions must be granted
# for 'path.out' in order to save the result file. Here the deafault
# (R's temporary folder) is used. If you don't know where it is,
# type tempdir() in the console.
path.in <- paste0(find.package("replicateBE"), "/extdata/")
ABE(path.in = path.in, file = "DS", set = "02", ext = "csv")
# Should result in:
#   BE-limits          :  80.00% ... 125.00%
#   Confidence interval:  97.32% ... 107.46%  pass
#   Point estimate     : 102.26%
# Generate the data.frame of results (7-digits precision) and show
# in the console. Use an internal dataset.
x <- ABE(details = TRUE, print = FALSE, data = rds02)
print(x, row.names = FALSE)

# Assuming a NTID and assess BE with narrower limits for one
# of the internal datasets.
ABE(data = rds02, theta1 = 0.90)
# Should result in:
#   BE-limits          :  90.00% ... 111.11%
#   Confidence interval:  97.32% ... 107.46%  pass
#   Point estimate     : 102.26%

Reference Dataset for TR|RT|TT|RR Replicate Designs

Description

Dataset for Balaam’s design obtained by simulations to be evaluated by method.A(), method.B().

Usage

rds27

Format

Details

Dataset N CVwR (%) Evaluation
rds27 312 >30 method.A(), method.B()

Note

In software sequences and treatments are ranked in lexical order. Hence, executing str() or summary() will show sequence as "RR", "RT", "TR", "TT" and treatment as "R", "T". In BE – by convention – sequences are ordered with T first. The package follows this convention.

Author(s)

Helmut Schütz (R-code for simulations by Detlew Labes)

Source

Dataset Origin Description
rds27 R Simulated with CVwT = CVwR = 35%, CVbT = CVbR = 75%, GMR 0.90.

Examples

str(rds27)
row <- c(1:2, 157:158, 313:314, 469:470)
rds27[row, ]
summary(rds27[2:5])

Reference Dataset for TRR|RTR (extra-reference) Designs

Description

Dataset simulated to be evaluated by method.A(), method.B().

Usage

rds22

Format

Details

Dataset N CwR (%) Evaluation
rds22 42 >30 method.A(), method.B()

Note

In software sequences and treatments are ranked in lexical order. Hence, executing str() or summary() will show sequence as "RTR", "TRR" and treatment as "R", "T". In BE – by convention – sequences are ordered with T first. The package follows this convention.
This partial replicate design is also known as the ‘extra-reference design’. Since the Test is not administered in all periods, lacking period effects must be assumed. In the presence of true period effects the treatment comparison will be biased. Hence, this design is not recommended.

Author(s)

Helmut Schütz (R-code for simulations by Detlew Labes)

Source

Dataset Origin Description
rds22 R Simulated with homoscedasticity.

Examples

str(rds22)
rds22[61:66, ]
summary(rds22[2:5])

Reference Datasets for TRR|RTR|RRT (partial) Replicate Designs

Description

Datasets from the public domain or simulated to be evaluated by method.A(), method.B(), or ABE().

Format

Details

Dataset N CVwR (%) Evaluation
rds02 24 <30 method.A(), method.B(), ABE()
rds04 51 >30 method.A(), method.B()
rds07 360 >30 method.A(), method.B()
rds30 14 <30 method.A(), method.B(), ABE()

Note

In software sequences and treatments are ranked in lexical order. Hence, executing str() or summary() will show sequence as "RRT", "RTR", "TRR" and treatment as "R", "T". In BE – by convention – sequences are ordered with T first. The package follows this convention.

Author(s)

Helmut Schütz (R-code for simulations by Detlew Labes)

Source

Dataset Origin Description
rds02 EMA Annex III.
rds04 Patterson & Jones Cmax data of Table II.
rds07 R Large simulated data set with homoscedasticity.
rds30 R Simulated with heteroscedasticity; imbalanced and incomplete.

References

European Medicines Agency. London, 21 September 2016. Annex I, Annex III.

Patterson SD, Jones B. Viewpoint: observations on scaled average bioequivalence. Pharm Stat. 2012; 11(1): 1–7. doi:10.1002/pst.498

Examples

str(rds02)
row <- c(10:12, 1:3, 16:18)
rds02[row, ]
summary(rds02[2:6])

Reference Dataset for TRR|RTT Replicate Designs

Description

Dataset from the public domain to be evaluated by method.A(), method.B(), or ABE().

Usage

rds10

Format

Details

Dataset N CVwR (%) Evaluation
rds10 36 <30 method.A(), method.B(), ABE()

Note

In software sequences and treatments are ranked in lexical order. Hence, executing str() or summary() will show sequence as "RTT", "TRR" and treatment as "R", "T". In BE – by convention – sequences are ordered with T first. The package follows this convention.
In analogy to the EMA’s Q&A: Uncertain estimate of CVwR since less than twelve subjects in sequence TRR.

Source

Dataset Origin Description
rds10 Chow & Liu AUC data given in Table 9.3.3.

References

Chow SC, Liu JP. Design and Analysis of Bioavailability and Bioequivalence Studies. Boca Raton: CRC Press; 3rd edition 2009. p275.

Examples

str(rds10)
row <- c(1:3, 28:30)
rds10[row, ]
summary(rds10[2:5])

Reference Datasets for TRRT|RTTR Replicate Designs

Description

Datasets from the public domain to be evaluated by method.A(), method.B(), or ABE().

Format

Details

Dataset N CVwR (%) Evaluation
rds05 26 <30 method.A(), method.B(), ABE()
rds11 37 >30 method.A(), method.B()
rds16 38 >30 method.A(), method.B()

Note

In software sequences and treatments are ranked in lexical order. Hence, executing str() or summary() will show sequence as "RTTR", "TRRT" and treatment as "R", "T". In BE – by convention – sequences are ordered with T first. The package follows this convention.

Source

Dataset Origin Description
rds05 Shumaker & Metzler Cmax data given in the Appendix.
rds11 Hauschke et al. Cmax data given in Table 9.6.
rds16 FDA, CDER Cmax data of Drug 14a.

References

Shumaker RC, Metzler CM. The Phenytoin Trial is a Case Study of ‘Individual’ Bioequivalence. Drug Inf J. 1998; 32(4): 1063–72. doi:10.1177/009286159803200426

Hauschke D, Steinijans VW, Pigeot I. Bioequivalence Studies in Drug Development. Chichester: John Wiley; 2007. p216.

U.S. Food and Drug Administration, Center for Drug Evaluation and Research. Bioequivalence Studies. Rockville, 1997. bioequivalence study files (archived 2017-07-23)

Examples

str(rds05)
summary(rds05[2:5])
head(rds11, 8)

Reference Dataset for TRRT|RTTR|TTRR|RRTT Designs

Description

Dataset from the public domain to be evaluated by method.A() and/or method.B().

Format

Details

Dataset N CVwR (%) Evaluation
rds24 39 >30 method.A(), method.B()

Note

In software sequences and treatments are ranked in lexical order. Hence, executing str() or summary() will show sequence as "RRTT", "RTTR", "TRRT", "TTRR" and treatment as "R", "T". In BE – by convention – sequences are ordered with T first. The package follows this convention.

Source

Dataset Origin Description
rds24 FDA, CDER Cmax data of Drug 1.

References

U.S. Food and Drug Administration, Center for Drug Evaluation and Research. Bioequivalence Studies. Rockville, 1997. bioequivalence study files (archived 2017-07-23)

Examples

str(rds24)
row <- c(13:16, 9:12, 1:4, 5:8)
rds24[row, ]
summary(rds24[2:5])

Reference Datasets for TRT|RTR Replicate Designs

Description

Datasets from the public domain and edited to be evaluated by method.A() and/or method.B().

Format

Details

Dataset N CVwR (%) Evaluation
rds03 77 >30 method.A(), method.B()
rds17 19 >30 method.A(), method.B()

Note

In software sequences and treatments are ranked in lexical order. Hence, executing str() or summary() will show sequence as "RTR", "TRT" and treatment as "R", "T". In BE – by convention – sequences are ordered with T first. The package follows this convention.

Author(s)

Helmut Schütz

Source

Dataset Origin Description
rds03 rds01 edited Period 4 removed.
rds17 rds03 edited Highly unbalanced (seven subjects in TRT and twelve in RTR).

Examples

head(rds03, 6)
summary(rds03[2:5])

Reference Datasets for TRTR|RTRT Designs

Description

Datasets from the public domain, edited, or obtained by simulations to be evaluated by method.A() and/or method.B().

Format

Details

Dataset N CVwR (%) Evaluation
rds01 77 >30 method.A(), method.B()
rds06 77 >30 method.A(), method.B()
rds08 222 >30 method.A(), method.B()
rds09 222 >30 method.A(), method.B()
rds12 77 >30 method.A(), method.B()
rds13 222 >30 method.A(), method.B()
rds14 77 >30 method.A(), method.B()
rds15 222 >30 method.A(), method.B()
rds18 77 >30 method.A(), method.B()
rds19 61 >30 method.A(), method.B()
rds20 61 >30 method.A(), method.B()
rds21 77 >30 method.A(), method.B()
rds25 70 >30 method.A(), method.B()
rds26 54 >30 method.A(), method.B()
rds29 12 <30 method.A(), method.B(), ABE()

Note

In software sequences and treatments are ranked in lexical order. Hence, executing str() or summary() will show sequence as "RTRT", "TRTR" and treatment as "R", "T". In BE – by convention – sequences are ordered with T first. The package follows this convention.

Author(s)

Helmut Schütz (R-code for simulations by Detlew Labes), Michael Tomashevskiy (simulations in Phoenix NLME)

Source

Dataset Origin Description
rds01 EMA Annex II.
rds06 rds01 edited T and R switched.
rds08 R Large simulated data set with slight heteroscedasticity.
rds09 rds08 Wide numeric range (data of last 37 subjects multiplied by 1,000,000).
rds12 Phoenix NLME Simulated with extreme intra- and intersubject variability.
rds13 rds08 edited Highly incomplete (approx. 50% of period 4 data deleted).
rds14 Phoenix NLME Simulated with high intra-/intersubject variability and
number of dropouts increasing with period.
rds15 rds08 edited Highly incomplete (approx. 50% of period 4 data coded as missing 'NA').
rds18 rds14 edited Removed T data of subjects 63–78.
rds19 rds18 edited Removed data of subjects 63–78.
rds20 rds19 edited Outlier of R (subject 1) introduced: original value ×100.
rds21 rds01 edited One extreme result of subjects 45 & 52 set to NA.
rds25 R Simulated with heteroscedasticity.
rds26 Patterson & Jones Cmax data given in Tables 4.40 and 4.31.
rds29 R Simulated with heteroscedasticity; imbalanced and incomplete.

References

European Medicines Agency. London, 21 September 2016. Annex I, Annex II.

Patterson SD, Jones B. Bioequivalence and Statistics in Clinical Pharmacology. Boca Raton: CRC Press; 2nd edition 2016. p105–6.

Examples

str(rds01)
summary(rds01[2:6])

Reference Dataset for TRTR|RTRT|TRRT|RTTR Designs

Description

Dataset from the public domain to be evaluated by method.A() and/or method.B().

Format

Details

Dataset N CVwR (%) Evaluation
rds23 22 >30 method.A(), method.B()

Note

In software sequences and treatments are ranked in lexical order. Hence, executing str() or summary() will show sequence as "RTRT", "RTTR", "TRRT", "TRTR" and treatment as "R", "T". In BE – by convention – sequences are ordered with T first. The package follows this convention.

Source

Data set Origin Description
rds23 FDA, CDER Cmax data of Drug 7.

References

U.S. Food and Drug Administration, Center for Drug Evaluation and Research. Bioequivalence Studies. Rockville, 1997. bioequivalence study files (archived 2017-07-23)

Examples

str(rds23)
row <- c(25:28, 5:8, 9:12, 1:4)
rds23[row, ]
summary(rds23[2:5])

Reference Datasets for TTRR|RRTT Designs

Description

Dataset obtained by simulations to be evaluated by method.A() and/or method.B().

Format

Details

Dataset N CVwR (%) Evaluation
rds28 64 <30 method.A(), method.B()

Note

In software sequences and treatments are ranked in lexical order. Hence, executing str() or summary() will show sequence as "RRTT", "TTRR" and treatment as "R", "T". In BE – by convention – sequences are ordered with T first. The package follows this convention.

Author(s)

Helmut Schütz (R-code for simulations by Detlew Labes)

Source

Dataset Origin Description
rds28 R Simulated with CVwT = CVwR = 35%, CVbT = CVbR = 75%, GMR 0.90.

Examples

str(rds28)
summary(rds28[1:5])

Comparative BA-calculation for Average Bioequivalence with Expanding Limits by the EMA's 'Method A'

Description

This function performs the required calculations for the mixed (or aggregate) BE decision via Average Bioequivalence with Expanding Limits (ABEL) based on ANOVA (‘Method A’) as recommended in Annex I.

Usage

method.A(alpha = 0.05, path.in, path.out = tempdir(), file, set = "",
         ext, na = ".", sep = ",", dec = ".", logtrans = TRUE,
         regulator = "EMA", ola = FALSE, print = TRUE, details = FALSE,
         adjust = FALSE, verbose = FALSE, ask = FALSE,
         plot.bxp = FALSE, fence = 2, data = NULL)

Arguments

alpha

Type I Error (TIE) probability (nominal level of the test). Conventionally set to 0.05, resulting in a 100(1 – 2α) confidence interval.

path.in

Path to the data file for import.

path.out

Path to save the result file if print=TRUE. You must have write-permission to the folder. For simplicity your home folder ⁠"~/"⁠ can be used.
If missing, R’s standard temporary folder will be used.
If a box plot of outliers should be saved (plot.bxp = TRUE), this path will be used as well.

file

Name of the dataset for import (without extension). Must be a string (i.e., enclosed in single or double quotation marks).

set

Name of the sheet of an Excel-file (mandatory). Must be a string (i.e., enclosed in single or double quotation marks).

ext

File-extension enclosed in single or double quotation marks. Acceptable are ⁠"csv"⁠ for character delimited variables (CSV) or ⁠"xls"⁠, ⁠"xlsx"⁠ for Excel-files.
The file-extension is not case-sensitive.

na

Character string denoting missing values. Acceptable are ⁠"NA"⁠ (not available), ⁠"ND"⁠ (not determined), ⁠"."⁠ (SAS), ⁠"Missing"⁠ (Phoenix WinNonlin), and ⁠""⁠ (Excel; empty cell). Missings will be converted to ⁠NA⁠ in the imported data. Defaults to ⁠"."⁠.

sep

Variable separator in the CSV-file. Acceptable are ⁠","⁠ (comma = ⁠ASCII 44⁠), ⁠";"⁠ (semicolon = ⁠ASCII 59⁠), and ⁠"\t"⁠ (tabulator = ⁠ASCII 9⁠). Defaults to ⁠","⁠.

dec

Decimal separator in the CSV-file. Acceptable are ⁠"."⁠ (period = ⁠ASCII 46⁠) or ⁠","⁠ (comma = ⁠ASCII 44⁠). Defaults to ⁠"."⁠.

logtrans

If TRUE (default) the raw data (provided in column ⁠PK⁠) will be internally log-transformed and used in the calculations. If FALSE the already log-transformed data (provided in the column ⁠logPK⁠) will be used in the calculations.

regulator

Set regulatory conditions. If "EMA" (default) conventional ABEL will be used. If "GCC" direct widening to 75.00–133.33% will be used if CVwR > 30%.

ola

Defaults to FALSE. If TRUE an outlier analysis based on the studentized and standardized (aka internally studentized) residuals of the model estimating CVwR is performed.

print

If TRUE (default), the function prints its results to a file. If FALSE, returns a data frame of results.

details

Defaults to FALSE. If TRUE, the function sends its results in full precision to a data frame.

adjust

Defaults to FALSE.
If TRUE, the empiric Type I Error (TIE) is evaluated via simulations (by the function scABEL.ad of library ⁠PowerTOST⁠). Currently implemented designs are ⁠2x2x4⁠, ⁠2x2x3⁠, and ⁠2x3x3⁠. If the TIE exceeds the nominal level of the test alpha, α is iteratively adjusted until TIE = α ± 10–6.
If ola = TRUE and outlier(s) found – which lead to an always lower – recalculated CVwR, the assessment is repeated for its value.

verbose

Defaults to FALSE. If TRUE the ANOVA-table is send to the console. If ola = TRUE additional information about outliers are shown.

ask

Defaults to FALSE. If TRUE the user will be asked whether an already existing result file (and if outliers are found, the box plot) should be overwritten.

plot.bxp

Only observed if ola = TRUE and at least one outlier is found. If FALSE (default) the box plot will be shown in the graphics device. If TRUE the box plot will be saved in PNG format to path.out.

fence

Only observed if ola = TRUE. The limit for outlier detection as a multiplier of the interquartile range. Defaults to 2. Less outliers will be detected with higher values (not recommended).

data

Specification of one of the internal reference datasets (⁠rds01⁠ to ⁠rds30⁠). If given, the arguments ⁠path.in⁠, ⁠file⁠, ⁠set⁠, and ⁠ext⁠ are ignored. For its use see the examples.
If not given, defaults to NULL (i.e., import data from a file).

Details

The model for the estimation of CVwR is
lm(log(PK) ~ sequence + subject%in%sequence + period, data = data[data$treatment == "R", ])
where all effects are fixed.
The model for the treatment comparison is
lm(log(PK) ~ sequence + subject%in%sequence + period + treatment, data = data)
where all effects are fixed.

Tested designs

Data structure

Value

Prints results to a file if argument print = TRUE (default).
If argument print = FALSE, returns a data frame with the elements:

Design e.g., TRTR|RTRT
Method A
n total number of subjects
nTT number of subjects with two treatments of T (full replicates only)
nRR number of subjects with two treatments of R
Sub/seq number of subjects per sequence
Miss/seq if the design is unbalanced, number of missings per sequence
Miss/per if the design is incomplete, number of missings per period
alpha nominal level of the test
DF degrees of freedom of the treatment comparison
CVwT(%) intra-subject coefficient of variation of the test treatment (full replicates only)
CVwR(%) intra-subject coefficient of variation of the reference treatment
swT intra-subject standard deviation of the test treatment (full replicates only)
swR intra-subject standard deviation of the reference treatment
sw.ratio ratio of intra-subject deviations of T and R (full replicates only)
sw.ratio.CL upper confidence limit of sw.ratio (full replicates only)
CL.lo(%) lower confidence limit of the treatment comparison
CL.hi(%) upper confidence limit of the treatment comparison
PE(%) point estimate of the treatment comparison (aka GMR)
CI assessment whether the 100(1 – 2α) CI lies entirely within the acceptance range (⁠pass|fail⁠)
GMR assessment whether the PE lies entirely within the GMR-restriction 80.00--125.00% (⁠pass|fail⁠)
BE mixed (aggregate) assessment whether the study demonstrates bioequivalence (⁠pass|fail⁠)
log.half-width half-width of the confidence interval in log-scale

If ola = TRUE and at least one studentized outlier was detected:

outlier outlying subject(s)
CVwR.rec(%) intra-subject coefficient of variation of R; recalculated after exclusion of outlier(s)
swR.rec intra-subject standard deviation of the reference treatment after exclusion of outlier(s)
sw.ratio.rec ratio of intra-subject standard deviations of T and R after exclusion of outlier(s); full replicates only
sw.ratio.rec.CL upper confidence limit of sw.ratio.rec (full replicates only)
CI.rec assessment whether the 100(1–2α) CI lies entirely within the new acceptance range (⁠pass|fail⁠)
GMR.rec assessment whether the PE lies entirely within the GMR-restriction 80.00--125.00% (⁠pass|fail⁠)
BE.rec mixed (aggregate) assessment whether the study demonstrates bioequivalence (⁠pass|fail⁠)

Warning

Files may contain a commentary header. If reading from a CSV-file, each line of the commentary header must start with ⁠"# "⁠ (hashmark space = ⁠ASCII 35 ASCII 32⁠). If reading from an Excel-file all lines preceding the column headers are treated as a comment.

Clarification

The ‘ASCII line chart’ in the result file gives the confidence limits with filled black squares and the point estimate as a white rhombus. If a confidence limit exceeds the maximum possible expansion limit, it is shown as a triangle. Expanded limits are given as double vertical lines. Unscaled limits, the GMR restriction, and 100% are given with single vertical lines. The ‘resolution’ is approximatelly 0.5% and therefore, not all symbols might be shown. The CI and PE take presedence over the limits and the expanded limits over unscaled ones.

Disclaimer

Program offered for Use without any Guarantees and Absolutely No Warranty. No Liability is accepted for any Loss and Risk to Public Health Resulting from Use of this R-Code.

Note

The EMA’s model specified as ‘Method B’ in Annex I assumes equal [sic] intra-subject variances of test and reference (like in 2×2×2 trials) – even if proven false in one of the full replicate designs (were both CVwT and CVwR can be estimated). Hence, amongst biostatisticians it is called the ‘crippled model’ because the replicative nature of the study is ignored.
The half-width of the CI in log-scale allows a comparison of methods (B vs A) where a higher value might point towards a more conservative decision. In the provided reference datasets – with one exception – the conclusion of BE (based on the mixed CI and GMR criteria) agrees between ‘Method A’ and ‘Method B’. However, for the highly incomplete dataset 14 ‘Method A’ was liberal (passing by ANOVA but failing by the mixed effects model).

Reference-scaling is acceptable for Cmax (immediate release products) and Cmax,ss, Cτ,ss, and partialAUC (modified release products). However, quoting the BE guideline:
The applicant should justify that the calculated intra-subject variability is a reliable estimate and that it is not the result of outliers.
Quoting the Q&A on the Revised EMA Bioequivalence Guideline:
... a study could be acceptable if the bioequivalence requirements are met both including the outlier subject (using the scaled average bioequivalence approach and the within-subject CV with this subject) and after exclusion of the outlier (using the within-subject CV without this subject).
An outlier test is not an expectation of the medicines agencies but outliers could be shown by a box plot. This would allow the medicines agencies to compare the data between them.


The EMA’s method of reference-scaling for highly variable drugs / drug products is currently recommended in other jurisdictions as well (e.g., the WHO; ASEAN States, Australia, Belarus, Brazil, Chile, Egypt, the Eurasian Economic Union, the East African Community, New Zealand, the Russian Federation).

In a pilot phase the WHO accepted reference-scaling for AUC (4-period full replicate studies are mandatory in order to assess the variability associated with each product). It was an open issue how this assessment should be done. In Population Bioequivalence (PBE) and Individual Bioequivalence (IBE) the swT/swR ratio was assessed and similar variability was concluded for a ratio within 0.667–1.500. However, the power of comparing variabilities in a study designed to demonstrate ABE is low. This was one of the reasons why PBE and IBE were not implemented in regulatory practice. An alternative approach is given in the FDA’s draft ANDA guidance. Variabilities are considered comparable if the upper confidence limit of σwT/σwR is less than or equal to 2.5.
In 2021 the requirement of comparing variabilities was lifted.

Author(s)

Helmut Schütz, Michael Tomashevskiy, Detlew Labes

References

European Medicines Agency, Committee for Medicinal Products for Human Use. Guideline on the Investigation of Bioequivalence. CPMP/EWP/QWP/1401/98 Rev. 1/ Corr **. London. 20 January 2010. online

European Generic and Biosimilar Medicines Association. 3rd EGA Symposium on Bioequivalence. Questions and Answers on the Revised EMA Bioequivalence Guideline. London. 1 June 2010. online

European Medicines Agency, Committee for Medicinal Products for Human Use. Questions & Answers: positions on specific questions addressed to the Pharmacokinetics Working Party (PKWP). EMA/618604/2008 Rev. 13. London. 19 November 2015. online

European Medicines Agency. Clinical pharmacology and pharmacokinetics: questions and answers. 3.1 Which statistical method for the analysis of a bioequivalence study does the Agency recommend? Annex I. EMA/582648/2016. London. 21 September 2016. online

Executive Board of the Health Ministers’ Council for GCC States. The GCC Guidelines for Bioequivalence. Version 3.0. May 2021. online

Health Canada. Guidance Document. Conduct and Analysis of Comparative Bioavailability Studies. Ottawa. 2018/06/08. online

European Medicines Agency, Committee for Medicinal Products for Human Use. Guideline on the pharmacokinetic and clinical evaluation of modified release dosage forms. EMA/CPMP/EWP/280/96 Corr1. London. 20 November 2014. online

World Health Organization, Prequalification Team: medicines. Guidance Document: Application of reference-scaled criteria for AUC in bioequivalence studies conducted for submission to PQTm. Geneva. 22 November 2018. online

World Health Organization. Application of reference-scaled criteria for AUC in bioequivalence studies conducted for submission to PQT/MED. Geneva. 02 July 2021. online

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. download

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

See Also

method.B evaluation by a linear mixed effects model (subjects random)
ABE evaluation for conventional (unscaled) Average Bioequivalence

Examples

# Importing from a CSV-file, using most of the defaults: variable
# separator colon, decimal separator period, no outlier-analyis,
# print to file.
# Note: You must adapt the path-variables. The example reads from
# the data provided by the library. Write-permissions must be granted
# for 'path.out' in order to save the result file. Here the default
# (R's temporary folder) is used. If you don't know where it is,
# type tempdir() in the console.

path.in  <- paste0(find.package("replicateBE"), "/extdata/")
method.A(path.in = path.in, file = "DS", set = "01", ext = "csv")
# Should result in:
#   CVwT               :  35.16%
#   swT                :   0.34138
#   CVwR               :  46.96% (reference-scaling applicable)
#   swR                :   0.44645
#   Expanded limits    :  71.23% ... 140.40% [100exp(±0.760·swR)]
#   swT / swR          :   0.7647 (similar variabilities of T and R)
#   sw-ratio (upper CL):   0.9324 (comparable variabilities of T and R)
#   Confidence interval: 107.11% ... 124.89%  pass
#   Point estimate     : 115.66%              pass
#   Mixed (CI & PE)    :                      pass
#
# Internal reference dataset 01 used and results to R's
# temporary folder. Additional outlier-analyis.
method.A(ola = TRUE, data = rds01)
# Should give the same as above. Additionally:
#   Outlier fence      :  2×IQR of studentized residuals.
#   Recalculation due to presence of 2 outliers (subj. 45|52)
#   CVwR (outl. excl.) :  32.16% (reference-scaling applicable)
#   swR (recalculated) :   0.31374
#   Expanded limits    :  78.79% ... 126.93% [100exp(±0.760·swR)]
#   swT / swR (recalc.):   1.0881 (similar variabilities of T and R)
#   sw-ratio (upper CL):   1.3282 (comparable variabilities of T and R)
#   Confidence interval: pass
#   Point estimate     : pass
#   Mixed (CI & PE)    : pass
# Same dataset. Show information about outliers and the ANOVA-table.
method.A(ola = TRUE, print = FALSE, verbose = TRUE, data = rds01)
# Generate the data.frame of results (full precision) and show it
# in the console
x <- method.A(ola = TRUE, details = TRUE, print = FALSE, data = rds01)
print(x, row.names = FALSE)
#
# Assess the Type I Error and iteratively adjust alpha if necessary.
# Not run: due to timing policy of CRAN for examples

method.A(adjust = TRUE, data = rds01)
# Should give in the result file:
#   Assessment of the empiric Type I Error (TIE); 1,000,000 studies simulated.
#     TIE not > nominal 0.05; consumer risk is controlled.
#
# Same with recalculation based on outliers, iteratively adjust alpha
# if necessary

method.A(ola = TRUE, adjust = TRUE, data = rds01)
# Should give in the result file:
#   Assessment of the empiric Type I Error (TIE) based on original CVwR;
#   1,000,000 studies simulated.
#     TIE not > nominal 0.05; consumer risk is controlled.
#   Assessment of the empiric Type I Error (TIE) based on recalculated CVwR;
#   1,000,000 studies in each of the 8 iterations simulated.
#     TIE for alpha 0.050000         : 0.07018
#     TIE for adjusted alpha 0.033416: 0.05000
#
# Repeat the evaluation with the adjusted alpha.

method.A(alpha = 0.033416, ola = TRUE, adjust = TRUE, data = rds01)
# Should give in the result file:
#   alpha              :   0.033416 (93.3168% CI)
#   Confidence interval: 106.16% ... 126.00%  pass
#   Point estimate     : 115.66%              pass
#   Mixed (CI & PE)    :                      pass
#   Assessment based on recalculated CVwR 32.16%
#   Confidence interval: pass
#   Point estimate     : pass
#   Mixed (CI & PE)    : pass
#   Assessment of the empiric Type I Error (TIE) based on original CVwR;
#   1,000,000 studies simulated.
#     TIE not > nominal 0.05; consumer risk is controlled.
#   Assessment of empiric Type I Error (TIE) based on recalculated CVwR;
#   1,000,000 studies in each of the 8 iterations simulated.
#     TIE for alpha 0.033416         : 0.05000
#     TIE not > nominal 0.05; consumer risk is controlled.

Comparative BA-calculation for Average Bioequivalence with Expanding Limits by the EMA's 'Method B'

Description

This function performs the required calculations for the mixed (or aggregate) BE decision via Average Bioequivalence with Expanding Limits (ABEL) based on a linear mixed effects model with subjects as a random effect (‘Method B’) as specified in Annex I.

Usage

method.B(alpha = 0.05, path.in, path.out = tempdir(), file, set = "",
         ext, na = ".", sep = ",", dec = ".", logtrans = TRUE,
         regulator = "EMA", ola = FALSE, print = TRUE, details = FALSE,
         verbose = FALSE, ask = FALSE, plot.bxp = FALSE, fence = 2,
         data = NULL, option = 2)

Arguments

alpha

Type I Error (TIE) probability (nominal level of the test). Conventionally set to 0.05, resulting in a 100(1 – 2α) confidence interval.
If regulator = "HC" and alpha = 0.5 only the point estimate will be assessed (for highly variable Cmax within 80.0–125.0%).

path.in

Path to the data file for import.

path.out

Path to save the result file if print = TRUE. You must have write-permission to the folder. For simplicity your home folder ⁠"~/"⁠ can be used.
If missing, R’s standard temporary folder will be used.
If a box plot of outliers should be saved (plot.bxp = TRUE), this path will be used as well.

file

Name of the dataset for import (without extension). Must be a string (i.e., enclosed in single or double quotation marks).

set

Name of the sheet of an Excel-file (mandatory). Must be a string (i.e., enclosed in single or double quotation marks).

ext

File-extension enclosed in single or double quotation marks. Acceptable are ⁠"csv"⁠ for character delimited variables (CSV) or ⁠"xls"⁠, ⁠"xlsx"⁠ for Excel-files.
The file-extension is not case-sensitive.

na

Character string denoting missing values. Acceptable are ⁠"NA"⁠ (not available), ⁠"ND"⁠ (not determined), ⁠"."⁠ (SAS), ⁠"Missing"⁠ (Phoenix WinNonlin), and ⁠""⁠ (Excel; empty cell). Missings will be converted to ⁠NA⁠ in the imported data. Defaults to ⁠"."⁠.

sep

Variable separator in the CSV-file. Acceptable are ⁠","⁠ (comma = ⁠ASCII 44⁠), ⁠";"⁠ (semicolon = ⁠ASCII 59⁠), and ⁠"\t"⁠ (tabulator = ⁠ASCII 9⁠). Defaults to ⁠","⁠.

dec

Decimal separator in the CSV-file. Acceptable are ⁠"."⁠ (period = ⁠ASCII 46⁠) or ⁠","⁠ (comma = ⁠ASCII 44⁠). Defaults to ⁠"."⁠.

logtrans

If TRUE (default) the raw data (provided in column ⁠PK⁠) will be internally log-transformed and used in the calculations. If FALSE the already log-transformed data (provided in the column ⁠logPK⁠) will be used in the calculations.

regulator

Set regulatory conditions. If "EMA" (default) conventional ABEL will be used. If "HC" Health Canada’s upper cap of scaling (~57.4%) will be applied. If "GCC" direct widening to 75.00–133.33% will be used if CVwR > 30%.

ola

Defaults to FALSE. If TRUE an outlier analysis based on the studentized and standardized (aka internally studentized) residuals of the model estimating CVwR is performed.

print

If TRUE (default), the function prints its results to a file. If FALSE, returns a data frame of results.

details

Defaults to FALSE. If TRUE, the function sends its results in full precision to a data frame.

verbose

Defaults to FALSE. If TRUE the model-table is send to the console. If ola = TRUE additional information about outliers are shown.

ask

Defaults to FALSE. If TRUE the user will be asked whether an already existing result file (and if outliers are found, the box plot) should be overwritten.

plot.bxp

Only observed if ola = TRUE and at least one outlier is found. If FALSE (default) the box plot will be shown in the graphics device. If TRUE the box plot will be saved in PNG format to path.out.

fence

Only observed if ola = TRUE. The limit for outlier detection as a multiplier of the interquartile range. Defaults to 2. Less outliers will be detected with higher values (not recommended).

data

Specification of one of the internal reference datasets (⁠rds01⁠ to ⁠rds30⁠). If given, the arguments ⁠path.in⁠, ⁠file⁠, ⁠set⁠, and ⁠ext⁠ are ignored. For its use see the examples.
If not given, defaults to NULL (i.e., import data from a file).

option

If 2 (default), the model will be evaluated by ⁠lme()⁠ of package ⁠nlme⁠. The degrees of freedom of the treatment comparison will be equivalent to SAS⁠DDFM=CONTAIN⁠ and Phoenix WinNonlin’s ⁠Residual⁠.
If 1 or 3, the model will be evaluated by ⁠lmer()⁠ of package ⁠lmerTest⁠. With 1 the degrees of freedom of the treatment comparison will be equivalent to SAS⁠DDFM=SATTERTHWAITE⁠ and Phoenix WinNonlin’s ⁠Satterthwaite⁠.
3 uses the Kenward-Roger approximation equivalent to Stata’s ⁠dfm=Kenward Roger (EIM)⁠.
If ⁠regulator = "HC"⁠, only 1 or 3 are supported.

Details

The model for the estimation of CVwR is
lm(log(PK) ~ sequence + subject%in%sequence + period, data = data[data$treatment == "R", ])
where all effects are fixed.
The model for the treatment comparison is with the default option=2
lme(log(PK) ~ sequence + period + treatment, random = ~1|subject, data = data)
and with option=1, option=3
lmer(log(PK) ~ sequence + period + treatment + (1|subject), data = data)
where sequence, period, and treatment are fixed effects and subject(sequence) is a random effect.

Tested designs

Data structure

Value

Prints results to a file if argument print = TRUE (default).
If argument print = FALSE, returns a data.frame with the elements:

Design e.g., TRTR|RTRT
Method B-option (1, 2, or 3)
n total number of subjects
nTT number of subjects with two treatments of T (full replicates only)
nRR number of subjects with two treatments of R
Sub/seq number of subjects per sequence
Miss/seq if the design is unbalanced, number of missings per sequence
Miss/per if the design is incomplete, number of missings per period
alpha nominal level of the test
DF degrees of freedom of the treatment comparison
CVwT(%) intra-subject coefficient of variation of the test treatment (full replicates only)
CVwR(%) intra-subject coefficient of variation of the reference treatment
swT intra-subject standard deviation of the test treatment (full replicates only)
swR intra-subject standard deviation of the reference treatment
sw.ratio ratio of intra-subject deviations of T and R (full replicates only)
sw.ratio.CL upper confidence limit of sw.ratio (full replicates only)
CL.lo(%) lower confidence limit of the treatment comparison
CL.hi(%) upper confidence limit of the treatment comparison
PE(%) point estimate of the treatment comparison (aka GMR)
CI assessment whether the 100(1 – 2α) CI lies entirely within the acceptance range (⁠pass|fail⁠)
GMR assessment whether the PE lies entirely within the GMR-restriction 80.00--125.00% (⁠pass|fail⁠)
BE mixed (aggregate) assessment whether the study demonstrates bioequivalence (⁠pass|fail⁠)
log.half-width half-width of the confidence interval in log-scale

If ola = TRUE and at least one studentized outlier was detected:

outlier outlying subject(s)
CVwR.rec(%) intra-subject coefficient of variation of R; recalculated after exclusion of outlier(s)
swR.rec intra-subject standard deviation of the reference treatment after exclusion of outlier(s)
sw.ratio.rec ratio of intra-subjectstandard deviations of T and R after exclusion of outlier(s); full replicates only
sw.ratio.rec.CL upper confidence limit of sw.ratio.rec (full replicates only)
CI.rec assessment whether the 100(1–2α) CI lies entirely within the new acceptance range (⁠pass|fail⁠)
GMR.rec assessment whether the PE lies entirely within the GMR-restriction 80.00--125.00% (⁠pass|fail⁠)
BE.rec mixed (aggregate) assessment whether the study demonstrates bioequivalence (⁠pass|fail⁠)

Warning

Files may contain a commentary header. If reading from a CSV-file, each line of the commentary header must start with ⁠"# "⁠ (hashmark space = ⁠ASCII 35 ASCII 32⁠). If reading from an Excel-file all lines preceding the column headers are treated as a comment.

Clarification

The ‘ASCII line chart’ in the result file gives the confidence limits with filled black squares and the point estimate as a white rhombus. If a confidence limit exceeds the maximum possible expansion limit, it is shown as a triangle. Expanded limits are given as double vertical lines. Unscaled limits, the GMR restriction, and 100% are given with single vertical lines. The ‘resolution’ is approximatelly 0.5% and therefore, not all symbols might be shown. The CI and PE take presedence over the limits and the expanded limits over unscaled ones.

Disclaimer

Program offered for Use without any Guarantees and Absolutely No Warranty. No Liability is accepted for any Loss and Risk to Public Health Resulting from Use of this R-Code.

Note

The EMA’s model specified as ‘Method B’ in Annex I assumes equal [sic] intra-subject variances of test and reference (like in 2×2×2 trials) – even if proven false in one of the full replicate designs (were both CVwT and CVwR can be estimated). Hence, amongst biostatisticians it is called the “crippled model” because the replicative nature of the study is ignored.
The method for calculating the degrees of freedom is not specified in the SAS code provided by the EMA in Annex I. Hence, the default in PROC MIXED, namely DDFM=CONTAIN is applied.
For incomplete data (i.e., missing periods) Satterthwaite’s approximation of the degrees of freedom (option = 1) or Kenward-Roger (option = 3) might be better choices – if stated as such in the statistical analysis plan.
The half-width of the confidence interval in log-scale allows a comparison of methods (B v.s. A) or options (2 v.s. 1). A higher value might point towards a more conservative decision. Quoting the Q&A-document:
A simple linear mixed model, which assumes identical within-subject variability (Method B), may be acceptable as long as results obtained with the two methods do not lead to different regulatory decisions. However, in borderline cases [...] additional analysis using Method A might be required.
In the provided reference datasets – with one exception – the conclusion of BE (based on the mixed CI and GMR criteria) agrees between ‘Method A’ and ‘Method B’. However, for the highly incomplete dataset 14 ‘Method A’ was liberal (passing by ANOVA but failing by the mixed effects model).

Reference-scaling is acceptable for Cmax (immediate release products) and Cmax,ss, Cτ,ss, and partialAUC (modified release products). However, quoting the BE guideline:
The applicant should justify that the calculated intra-subject variability is a reliable estimate and that it is not the result of outliers.
Quoting the Q&A on the Revised EMA Bioequivalence Guideline:
... a study could be acceptable if the bioequivalence requirements are met both including the outlier subject (using the scaled average bioequivalence approach and the within-subject CV with this subject) and after exclusion of the outlier (using the within-subject CV without this subject).
An outlier test is not an expectation of the medicines agencies but outliers could be shown by a box plot. This would allow the medicines agencies to compare the data between them.


The EMA’s method of reference-scaling for highly variable drugs / drug products is currently recommended in other jurisdictions as well (e.g., the WHO; ASEAN States, Australia, Belarus, Brazil, Chile, Egypt, the Eurasian Economic Union, the East African Community, New Zealand, the Russian Federation).

Health Canada’s variant of ABEL (upper cap of scaling ~57.4% limiting the expansion at 67.7–150.0%) is only approximate because a mixed-effects model would be required.

In a pilot phase the WHO accepted reference-scaling for AUC (4-period full replicate studies are mandatory in order to assess the variability associated with each product). It was an open issue how this assessment should be done. In Population Bioequivalence (PBE) and Individual Bioequivalence (IBE) the swT/swR ratio was assessed and similar variability was concluded for a ratio within 0.667–1.500. However, the power of comparing variabilities in a study designed to demonstrate ABE is low. This was one of the reasons why PBE and IBE were not implemented in regulatory practice. An alternative approach is given in the FDA’s draft ANDA guidance. Variabilities are considered comparable if the upper confidence limit of σwT/σwR is less than or equal to 2.5.
In 2021 the requirement of comparing variabilities was lifted by the WHO.

Author(s)

Helmut Schütz, Michael Tomashevskiy, Detlew Labes

References

European Medicines Agency, Committee for Medicinal Products for Human Use. Guideline on the Investigation of Bioequivalence. CPMP/EWP/QWP/1401/98 Rev. 1/ Corr **. London. 20 January 2010. online

European Generic and Biosimilar Medicines Association. 3rd EGA Symposium on Bioequivalence. Questions and Answers on the Revised EMA Bioequivalence Guideline. London. 1 June 2010. online

European Medicines Agency, Committee for Medicinal Products for Human Use. Questions & Answers: positions on specific questions addressed to the Pharmacokinetics Working Party (PKWP). EMA/618604/2008 Rev. 13. London. 19 November 2015. online

European Medicines Agency. Clinical pharmacology and pharmacokinetics: questions and answers. 3.1 Which statistical method for the analysis of a bioequivalence study does the Agency recommend? Annex I. EMA/582648/2016. London. 21 September 2016. online

Executive Board of the Health Ministers’ Council for GCC States. The GCC Guidelines for Bioequivalence. Version 3.0. May 2021. online

Health Canada. Guidance Document. Conduct and Analysis of Comparative Bioavailability Studies. Ottawa. 2018/06/08. online

European Medicines Agency, Committee for Medicinal Products for Human Use. Guideline on the pharmacokinetic and clinical evaluation of modified release dosage forms. EMA/CPMP/EWP/280/96 Corr1. London. 20 November 2014. online

World Health Organization, Prequalification Team: medicines. Guidance Document: Application of reference-scaled criteria for AUC in bioequivalence studies conducted for submission to PQTm. Geneva. 22 November 2018. online

World Health Organization. Application of reference-scaled criteria for AUC in bioequivalence studies conducted for submission to PQT/MED. Geneva. 02 July 2021. online

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. download

See Also

method.A evaluation by a fixed effects model (ANOVA)
ABE evaluation for conventional (unscaled) Average Bioequivalence

Examples


# Importing from a CSV-file, using most of the defaults: variable
# separator colon, decimal separator period, no outlier-analyis,
# print to file.
# Note: You must adapt the path-variables. The example reads from
# the data provided by the library. Write-permissions must be granted
# for 'path.out' in order to save the result file. Here the default
# (R's temporary folder) is used. If you don't know where it is,
# type tempdir() in the console.
path.in <- paste0(find.package("replicateBE"), "/extdata/")
method.B(path.in = path.in, file = "DS", set = "01", ext = "csv")
# Should result in:
#   CVwT               :  35.16%
#   swT                :   0.34138
#   CVwR               :  46.96% (reference-scaling applicable)
#   swR                :   0.44645
#   Expanded limits    :  71.23% ... 140.40% [100exp(±0.760·swR)]
#   swT / swR          :   0.7647 (similar variabilities of T and R)
#   sw-ratio (upper CL):   0.9324 (comparable variabilities of T and R)
#   Confidence interval: 107.17% ... 124.97%  pass
#   Point estimate     : 115.73%              pass
#   Mixed (CI & PE)    :                      pass
#
# Internal reference dataset 01 used and results to R's temporary
# folder. Additional outlier-analyis and box plot saved as PNG.
method.B(ola = TRUE, plot.bxp = TRUE, data = rds01)
# Should give the same as above. Additionally:
#   Recalculation due to presence of 2 outliers (subj. 45|52)
#   CVwR (outl. excl.) :  32.16% (reference-scaling applicable)
#   swR  (recalc.)     :   0.31374
#   Expanded limits    :  78.79% ... 126.93% [100exp(±0.760·swR)]
#   swT / swR (recalc.):   1.0881 (similar variabilities of T and R)
#   sw-ratio (upper CL):   1.3282 (comparable variabilities of T and R)
#   Confidence interval: pass
#   Point estimate     : pass
#   Mixed (CI & PE)    : pass
#
# Same dataset. Show information about outliers and the model-table.
method.B(ola = TRUE, print = FALSE, verbose = TRUE, data = rds01)
# data.frame of results (full precision) shown in the console.
x <- method.B(ola = TRUE, print = FALSE, details = TRUE, data = rds01)
print(x, row.names = FALSE)
# Compare Method B with Method A for all reference datasets.

ds <- substr(grep("rds", unname(unlist(data(package = "replicateBE"))),
                  value = TRUE), start = 1, stop = 5)
for (i in seq_along(ds)) {
  A <- method.A(print=FALSE, details=TRUE, data=eval(parse(text=ds[i])))$BE
  B <- method.B(print=FALSE, details=TRUE, data=eval(parse(text=ds[i])))$BE
  r <- paste0("A ", A, ", B ", B, " - ")
  cat(paste0(ds[i], ":"), r)
  if (A == B) {
    cat("Methods A and B agree.\n")
  } else {
    if (A == "fail" & B == "pass") {
      cat("Method A is conservative.\n")
    } else {
      cat("Method B is conservative.\n")
    }
  }
}
# should give
#   rds01: A pass, B pass - Methods A and B agree.
#   ...
#   rds14: A pass, B fail - Method B is conservative.
#   ...

# Health Canada: Only the PE of Cmax has to lie within 80.0-125.0%
# (i.e., no CI is required). With alpha = 0.5 the CI is practically
# supressed (zero width) and ignored in the assessment.
x    <- method.B(alpha = 0.5, regulator = "HC", option = 1,
                 data = rds03, print = FALSE, details = TRUE)[19:20]
x[1] <- round(x[1], 1) # only one decimal place for HC
print(x, row.names = FALSE)
# Should result in:
# PE(%)  GMR
# 124.5 pass

Reference Datasets

Description

Datasets of replicate designs from the public domain, edited, or obtained by simulations to be evaluated by method.A(), method.B(), or ABE().

Details

Design Specification Dataset N CVwR (%) Evaluation
TRTR|RTRT full rds01 77 >30 method.A(), method.B()
TRTR|RTRT full rds06 77 >30 method.A(), method.B()
TRTR|RTRT full rds12 77 >30 method.A(), method.B()
TRTR|RTRT full rds14 77 >30 method.A(), method.B()
TRTR|RTRT full rds18 77 >30 method.A(), method.B()
TRTR|RTRT full rds21 77 >30 method.A(), method.B()
TRTR|RTRT full rds19 61 >30 method.A(), method.B()
TRTR|RTRT full rds20 61 >30 method.A(), method.B()
TRTR|RTRT full rds08 222 >30 method.A(), method.B()
TRTR|RTRT full rds09 222 >30 method.A(), method.B()
TRTR|RTRT full rds13 222 >30 method.A(), method.B()
TRTR|RTRT full rds15 222 >30 method.A(), method.B()
TRTR|RTRT full rds25 70 >30 method.A(), method.B()
TRTR|RTRT full rds29 12 <30 method.A(), method.B(), ABE()
TRRT|RTTR full rds26 54 >30 method.A(), method.B()
TRRT|RTTR full rds05 26 <30 method.A(), method.B(), ABE()
TRRT|RTTR full rds11 37 >30 method.A(), method.B()
TRRT|RTTR full rds16 38 >30 method.A(), method.B()
TTRR|RRTT full rds28 64 <30 method.A(), method.B(), ABE()
TRTR|RTRT|TRRT|RTTR full rds23 22 >30 method.A(), method.B()
TRRT|RTTR|TTRR|RRTT full rds24 39 >30 method.A(), method.B()
TRT|RTR full rds03 77 >30 method.A(), method.B()
TRT|RTR full rds17 19 >30 method.A(), method.B()
TRR|RTT full rds10 18 <30 method.A(), method.B(), ABE()
TR|RT|TT|RR Balaam’s rds27 312 >30 method.A(), method.B()
TRR|RTR|RRT partial rds02 24 <30 method.A(), method.B(), ABE()
TRR|RTR|RRT partial rds04 51 >30 method.A(), method.B()
TRR|RTR|RRT partial rds07 360 >30 method.A(), method.B()
TRR|RTR|RRT partial rds30 14 <30 method.A(), method.B(), ABE()
TRR|RTR partial rds22 36 >30 method.A(), method.B()

In full replicate designs both R and T are administered twice (in 3-period designs to ½ of the subjects).
Balaam’s design is a mixture of a conventional crossover (½ of the subjects) and a replicate design (¼ of the subjects receive either R or T twice).
In partial replicate designs only R is administered twice.

Author(s)

Helmut Schütz (R-code for simulations by Detlew Labes), Michael Tomashevskiy (simulations in Phoenix NLME)

Source

Dataset Origin Description
rds01 EMA Data set in Annex II
rds06 rds01 edited T and R switched
rds12 Phoenix NLME Simulated with extreme variability
rds14 Phoenix NLME Simulated with high variability and number of dropouts increasing with period
rds18 rds14 edited Removed T data of subjects 63–78
rds21 rds01 edited One extreme result of subjects 45 & 52 set to NA
rds19 rds18 edited Removed data of subjects 63–78
rds20 rds19 edited Outlier of R (subject 1) introduced: original value ×100
rds08 R Simulated with slight heteroscedasticity
rds09 rds08 Wide numeric range (data of last 37 subjects multiplied by 1,000,000)
rds13 rds08 edited Highly incomplete (approx. 50% of period 4 data deleted)
rds15 rds08 edited Highly incomplete (approx. 50% of period 4 data coded as missing 'NA')
rds25 R Simulated with heteroscedasticity
rds29 R Simulated with heteroscedasticity; imbalanced and incomplete
rds26 Patterson & Jones 2016 Cmax data given in Tables 4.30 & 4.31
rds05 Shumaker & Metzler Cmax data given in the Appendix
rds11 Hauschke et al. Cmax data given in Table 9.6.
rds16 FDA, CDER Cmax data of Drug 14a
rds28 R Simulated with homoscedasticity
rds23 FDA, CDER Cmax data of Drug
rds24 FDA, CDER Cmax data of Drug 1
rds03 rds01 edited Period 4 removed
rds17 rds03 edited Highly unbalanced (twelve subjects in RTR and seven in TRT)
rds10 Chow & Liu AUC data given in Table 9.3.3.
rds27 R Simulated with homoscedasticity
rds02 EMA Data set in Annex III
rds04 Patterson & Jones 2012 Cmax data of Table II
rds07 R Simulated with homoscedasticity
rds30 R Simulated with heteroscedasticity; imbalanced and incomplete
rds22 R Simulated with homoscedasticity

References

European Medicines Agency. London, 21 September 2016. Annex II, Annex III.

Patterson SD, Jones B. Viewpoint: observations on scaled average bioequivalence. Pharm Stat. 2012; 11(1): 1–7. doi:10.1002/pst.498

Shumaker RC, Metzler CM. The Phenytoin Trial is a Case Study of ‘Individual’ Bioequivalence. Drug Inf J. 1998; 32(4): 1063–72. doi:10.1177/009286159803200426

Chow SC, Liu JP. Design and Analysis of Bioavailability and Bioequivalence Studies. Boca Raton: CRC Press; 3rd edition 2009. p275.

Hauschke D, Steinijans VW, Pigeot I. Bioequivalence Studies in Drug Development. Chichester: John Wiley; 2007. p216.

Patterson SD, Jones B. Bioequivalence and Statistics in Clinical Pharmacology. Boca Raton: CRC Press; 2nd edition 2016. p105–6.

U.S. Food and Drug Administration, Center for Drug Evaluation and Research. Bioequivalence Studies. Rockville, 1997. bioequivalence study files (archived 2017-07-23)

See Also

4-period full replicates
TRTR.RTRT, TRRT.RTTR, TTRR.RRTT, TRTR.RTRT.TRRT.RTTR, TRRT.RTTR.TTRR.RRTT
2-period replicate (Balaam’s design)
TR.RT.TT.RR
3-period full replicates
TRT.RTR, TRR.RTT
3-period partial replicates
TRR.RTR.RRT, TRR.RTR

Examples

# show structure of all data sets
ds <- substr(grep("rds", unname(unlist(data(package = "replicateBE"))),
                  value = TRUE), start = 1, stop = 5)
for (i in seq_along(ds)) {
  cat(ds[i], "\n")
  str(eval(parse(text = ds[i])))
}