f1 {disprofas}R Documentation

Dissimilarity factor f1 for dissolution data

Description

The function f1() calculates the dissimilarity factor f_1.

Usage

f1(data, tcol, grouping, use_ema = "yes", bounds = c(1, 85), nsf = c(1, 2))

Arguments

data

A data frame with the dissolution profile data in wide format.

tcol

A vector of indices that specifies the columns in data that contain the % release values. The length of tcol must be three or longer.

grouping

A character string that specifies the column in data that contains the group names (i.e. a factorial variable, e.g., for the differentiation of batches or formulations of a drug product).

use_ema

A character string indicating whether the dissimilarity factor f_1 should be calculated following the EMA guideline “On the investigation of bioequivalence” ("yes", the default) or not ("no"), i.e. the recommendations concerning the similarity factor f_2. A third option is "ignore". If use_ema is "yes" or "no" the appropriate profile portion is determined on the basis of the values of the parameter bounds. If it is "ignore", the complete profiles are used as specified by the parameter tcol.

bounds

A numeric vector of the form c(lower, upper) that specifies the “lower” and “upper” limits, respectively, for the % drug release given that use_ema is "no". The default is c(1, 85). Mean % release values of any of the two groups being compared that are smaller than or equal to the lower bound are ignored and only the first mean % release value that is greater than or equal to the upper bound is included while all the subsequent values are ignored. If use_ema is "yes" the bounds are c(0, 85) per definition. If use_ema is "ignore" the bounds are disregarded.

nsf

A vector of positive integers that specify the “number of significant figures” (nsf) of the corresponding values of the bounds parameter. It must thus have the same length as the bounds parameter. Before the % release values are compared with the limits that are specified by the bounds parameter, they are rounded to the corresponding number of significant figures as specified by the nsf parameter.

Details

Similarity of dissolution profiles is often assessed using the similarity factor f_2, as recommended by the EMA guideline (European Medicines Agency 2010) “On the investigation of bioequivalence”. The evaluation of the similarity factor is based on the following constraints:

  1. A minimum of three time points (zero excluded).

  2. The time points should be the same for the two formulations.

  3. Twelve individual values for every time point for each formulation.

  4. Not more than one mean value of > 85% dissolved for any of the formulations.

  5. The relative standard deviation or coefficient of variation of any product should be less than 20% for the first time point and less than 10% from the second to the last time point.

The dissimilarity factor, or difference factor, f_1, is the counterpart of the similarity factor f_2. The difference factor f_1 is a measure of the relative error between two curves. Current FDA guidelines suggest that two profiles can be considered similar if f_1 is less than 15 (0 - 15) and f_2 is greater than 50 (50 - 100), which is equivalent to an average difference of 10% at all sampling time points. The dissimilarity factor f_1 is calculated by aid of the equation

f_1 = 100 \times \frac{\sum_{t=1}^{n} \left( \left| \bar{R}(t) - \bar{T}(t) \right| \right)}{\sum_{t=1}^{n} (\bar{R}(t))} .

In this equation

f_1

is the dissimilarity factor,

n

is the number of time points,

\bar{R}(t)

is the mean percent reference drug dissolved at time t after initiation of the study, and

\bar{T}(t)

is the mean percent test drug dissolved at time t after initiation of the study.

Value

A list with the following elements is returned:

f1

A numeric value representing the similarity factor f_1.

Profile.TP

A named numeric vector of the columns in data specified by tcol and depending on the selection of use_ema. Given that the column names contain extractable numeric information, e.g., the testing time points of the dissolution profile, it contains the corresponding numeric values. Elements where no numeric information could be extracted are NA.

References

United States Food and Drug Administration (FDA). Guidance for industry: dissolution testing of immediate release solid oral dosage forms. 1997.
https://www.fda.gov/media/70936/download

United States Food and Drug Administration (FDA). Guidance for industry: immediate release solid oral dosage form: scale-up and post-approval changes, chemistry, manufacturing and controls, in vitro dissolution testing, and in vivo bioequivalence documentation (SUPAC-IR). 1995.
https://www.fda.gov/media/70949/download

European Medicines Agency (EMA), Committee for Medicinal Products for Human Use (CHMP). Guideline on the Investigation of Bioequivalence. 2010; CPMP/EWP/QWP/1401/98 Rev. 1.

See Also

f2.

Examples

# Use of defaults, i.e. 'use_ema = "yes"', 'bounds = c(1, 85)'
# Comparison always involves only two groups.
f1(data = dip1, tcol = 3:10, grouping = "type")

# $f1
# [1] 18.19745
#
# $Profile.TP
# t.5 t.10 t.15 t.20 t.30 t.60 t.90
#   5   10   15   20   30   60   90

# Use of 'use_ema = "no"', 'bounds = c(5, 80)'
f1(data = dip1, tcol = 3:10, grouping = "type", use_ema = "no",
   bounds = c(5, 80), nsf = c(1, 2))

# $f1
# [1] 21.333
#
# $Profile.TP
# t.5 t.10 t.15 t.20 t.30 t.60
#   5   10   15   20   30   60

# Use of 'use_ema = "no"', 'bounds = c(1, 95)'
f1(data = dip1, tcol = 3:10, grouping = "type", use_ema = "no",
   bounds = c(1, 95), nsf = c(1, 2))

# $f1
# [1] 16.22299
#
# $Profile.TP
# t.5  t.10  t.15  t.20  t.30  t.60  t.90 t.120
#   5    10    15    20    30    60    90   120

# In this case, the whole profiles are used. The same result is obtained
# when setting 'use_ema = "ignore"' (ignoring values passed to 'bounds').
f1(data = dip1, tcol = 3:10, grouping = "type", use_ema = "ignore")

# Passing in a data frame with a grouping variable with a number of levels that
# differs from two produces an error.
## Not run: 
  tmp <- rbind(dip1,
               data.frame(type = "T2",
                          tablet = as.factor(1:6),
                          dip1[7:12, 3:10]))

  tryCatch(
    f1(data = tmp, tcol = 3:10, grouping = "type"),
    error = function(e) message(e),
    finally = message("\nMaybe you want to remove unesed levels in data."))

## End(Not run)

# Error in f1(data = tmp, tcol = 3:10, grouping = "type") :
#   The number of levels in column type differs from 2.

[Package disprofas version 0.2.0 Index]