Skip to contents

be_compare() runs be_assess() under several regulatory frameworks and stacks the results, so the same study can be judged side by side under the different reference-scaling rules. Frameworks that the design does not support (for example NTID on a partial replicate) are skipped with a warning. Rows for the "descriptive" framework have NA in the decision columns.

Usage

be_compare(
  object,
  reference_col,
  reference_value,
  endpoints = c("cmax", "aucinf.obs", "aucinf.pred", "auclast"),
  regulators = c("ABE", "EMA", "HC", "GCC", "FDA"),
  model_type = NULL,
  alpha = 0.1,
  subject = NULL,
  sequence = NULL,
  period = NULL,
  design = NULL,
  covariates = NULL,
  heteroscedastic = FALSE
)

Arguments

object

A PKNCAresults object or a tidy long data.frame with a PPTESTCD column of parameter names, a PPORRES/PPSTRES column of values, and subject/sequence/period/treatment columns.

reference_col

The column identifying the formulation/treatment.

reference_value

The value of reference_col that is the reference formulation.

endpoints

Character vector of NCA parameters (matched against PPTESTCD) to assess.

regulators

A character vector of regulatory frameworks to compare (see be_regulator()).

model_type

The model for the average-BE point estimate, one of "lmer" (mixed model, for crossover/replicate designs), "anova" (fixed-effects, for parallel designs), "isc" (intra-subject contrasts, the FDA reference-scaled path), "nlme" (mixed model with treatment-specific residual variances, for crossover/replicate designs), or "gls" (generalized least squares with treatment-specific residual variances, for parallel designs). When NULL (default) it is chosen from the design, the regulator, and heteroscedastic.

alpha

The significance level; the confidence interval has level 1 - alpha (default 0.10 gives the 90% interval).

subject, sequence, period

Column names for the subject, randomization sequence, and period. When NULL they are taken from the PKNCAresults object or detected from common column names. sequence may be absent.

design

An optional be_design() object; computed from the data when NULL.

covariates

An optional character vector of column names added to every model as additive fixed effects (numeric columns as linear terms, character or factor columns as factors). They must not be missing in any analyzed row. For a PKNCAresults object they must be columns of as.data.frame(object), which means grouping columns. The within-subject variances used for reference scaling and the intra-subject contrasts do not use covariates.

heteroscedastic

Logical. When TRUE, estimate a separate residual variance for each treatment (see Details).

Value

An object of class be_compare (a data.frame) with the be_assess() columns for every endpoint, test formulation, and regulator.

Examples

set.seed(1)
nsub <- 24
seqs <- rep(c("TRTR", "RTRT"), length.out = nsub)
b <- stats::rnorm(nsub, sd = 0.4)
d <- do.call(rbind, lapply(seq_len(nsub), function(i) {
  trt <- strsplit(seqs[i], "")[[1]]
  data.frame(
    subject = i, sequence = seqs[i], period = seq_along(trt), treatment = trt,
    PPTESTCD = "auclast",
    PPORRES = exp(log(100) + ifelse(trt == "T", 0.04, 0) + b[i] +
                    stats::rnorm(length(trt), sd = 0.45))
  )
}))
be_compare(d, reference_col = "treatment", reference_value = "R",
           endpoints = "auclast", regulators = c("EMA", "HC", "GCC", "FDA"))
#> Warning: Units were not found in the data; omitting the `units` column. Supply units via a PKNCAresults object or `PPSTRESU`/`PPORRESU` columns.
#> Bioequivalence comparison across EMA, HC, GCC, FDA (90% CI)
#> 
#>  regulator endpoint test gmr_percent ci_lower ci_upper cvwr_percent limit_lower
#>        EMA  auclast    T          98    85.72   112.04        34.11       77.71
#>         HC  auclast    T          98    85.72   112.04        34.11       77.71
#>        GCC  auclast    T          98    85.72   112.04        34.11       75.00
#>        FDA  auclast    T          98    85.75   112.00        34.11          NA
#>  limit_upper criterion pass
#>       128.68        NA TRUE
#>       128.68        NA TRUE
#>       133.33        NA TRUE
#>           NA  -0.05081 TRUE