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 |
grouping |
A character string that specifies the column in |
use_ema |
A character string indicating whether the dissimilarity
factor |
bounds |
A numeric vector of the form |
nsf |
A vector of positive integers that specify the “number
of significant figures” (nsf) of the corresponding values of the
|
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:
A minimum of three time points (zero excluded).
The time points should be the same for the two formulations.
Twelve individual values for every time point for each formulation.
Not more than one mean value of > 85% dissolved for any of the formulations.
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 |
Profile.TP |
A named numeric vector of the columns in |
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.