Title: | Functions for Applying the T^2-Test for Equivalence |
---|---|
Description: | Contains functions for applying the T^2-test for equivalence. The T^2-test for equivalence is a multivariate two-sample equivalence test. Distance measure of the test is the Mahalanobis distance. For multivariate normally distributed data the T^2-test for equivalence is exact and UMPI. The function T2EQ() implements the T^2-test for equivalence according to Wellek (2010) <DOI:10.1201/ebk1439808184>. The function T2EQ.dissolution.profiles.hoffelder() implements a variant of the T^2-test for equivalence according to Hoffelder (2016) <http://www.ecv.de/suse_item.php?suseId=Z|pi|8430> for the equivalence comparison of highly variable dissolution profiles. |
Authors: | Thomas Hoffelder |
Maintainer: | Thomas Hoffelder <[email protected]> |
License: | GPL-3 |
Version: | 1.1 |
Built: | 2024-10-31 22:23:21 UTC |
Source: | CRAN |
-Test for Equivalence
Contains functions for applying the -test for equivalence.
The
-test for equivalence is a multivariate two-sample equivalence test.
Distance measure of the test is the Mahalanobis distance.
For multivariate normally distributed data the
-test for equivalence is exact and UMPI.
The function T2EQ() implements the
-test for equivalence according to Wellek (2010).
The function T2EQ.dissolution.profiles.hoffelder() implements a variant of the
-test for equivalence according to Hoffelder (2016) for the equivalence comparison of highly variable dissolution profiles.
Index of help topics:
T2EQ Function for applying the T^2-test for equivalence T2EQ-package Functions for Applying the T^2-Test for Equivalence T2EQ.dissolution.profiles.hoffelder The T^2-test for equivalence for dissolution data ex_data_JoBS Example dataset from Hoffelder et al. (2015) ex_data_pharmind Example dataset from Hoffelder (2016)
Thomas Hoffelder
Maintainer: Thomas Hoffelder <[email protected]>
Wellek, S. (2010), Testing Statistical Hypotheses of Equivalence and Noninferiority. Second edition. Boca Raton: Chapman & Hall/CRC.
Hoffelder, T., Goessl, R., Wellek, S. (2015). Multivariate Equivalence Tests for Use in Pharmaceutical Development. Journal of Biopharmaceutical Statistics, 25:3, 417-437. URL: http://dx.doi.org/10.1080/10543406.2014.920344
Hoffelder, T. (2016). Highly Variable Dissolution Profiles: Comparison of -Test for Equivalence and
Based Methods. pharmind, 78:4, 587-592.
URL: http://www.ecv.de/suse_item.php?suseId=Z|pi|8430
Tsong, Y., Hammerstrom, T., Sathe, P., Shah, V.P. (1996). Statistical Assessment of Mean Differences between two Dissolution Data Sets. Drug Information Journal, 30:4, 1105-1112. URL: http://dx.doi.org/10.1177/009286159603000427
EMA (2010). Guidance on the Investigation of Bioequivalence. URL: http://www.ema.europa.eu/docs/en_GB/document_library/Scientific_guideline/2010/01/WC500070039.pdf
## Not run: A recalculation of the example evaluation in Hoffelder et al. (2015) can be done with the following code: ## End(Not run) data(ex_data_JoBS) REF_JoBS <- cbind(ex_data_JoBS[ which(ex_data_JoBS$Group=='REF'), ] [c("Diss_15_min","Diss_20_min","Diss_25_min")]) TEST_JoBS <- cbind(ex_data_JoBS[ which(ex_data_JoBS$Group=='TEST'), ] [c("Diss_15_min","Diss_20_min","Diss_25_min")]) equivalence_margin_JoBS <- 0.74^2 test_T2EQ_JoBS <- T2EQ(X=REF_JoBS,Y=TEST_JoBS,eq_margin = equivalence_margin_JoBS) ## Not run: A recalculation of the results underlying Figure 1 in Hoffelder (2016) can be done with the following code: ## End(Not run) data(ex_data_pharmind) REF_pharmind <- cbind(ex_data_pharmind[ which(ex_data_pharmind$Group=='REF'), ] [c("Diss_10_min","Diss_20_min","Diss_30_min")]) TEST_pharmind <- cbind(ex_data_pharmind[ which(ex_data_pharmind$Group=='TEST'), ] [c("Diss_10_min","Diss_20_min","Diss_30_min")]) test_T2EQ.dissolution.profiles.hoffelder_pharmind <- T2EQ.dissolution.profiles.hoffelder(X=REF_pharmind,Y=TEST_pharmind)
## Not run: A recalculation of the example evaluation in Hoffelder et al. (2015) can be done with the following code: ## End(Not run) data(ex_data_JoBS) REF_JoBS <- cbind(ex_data_JoBS[ which(ex_data_JoBS$Group=='REF'), ] [c("Diss_15_min","Diss_20_min","Diss_25_min")]) TEST_JoBS <- cbind(ex_data_JoBS[ which(ex_data_JoBS$Group=='TEST'), ] [c("Diss_15_min","Diss_20_min","Diss_25_min")]) equivalence_margin_JoBS <- 0.74^2 test_T2EQ_JoBS <- T2EQ(X=REF_JoBS,Y=TEST_JoBS,eq_margin = equivalence_margin_JoBS) ## Not run: A recalculation of the results underlying Figure 1 in Hoffelder (2016) can be done with the following code: ## End(Not run) data(ex_data_pharmind) REF_pharmind <- cbind(ex_data_pharmind[ which(ex_data_pharmind$Group=='REF'), ] [c("Diss_10_min","Diss_20_min","Diss_30_min")]) TEST_pharmind <- cbind(ex_data_pharmind[ which(ex_data_pharmind$Group=='TEST'), ] [c("Diss_10_min","Diss_20_min","Diss_30_min")]) test_T2EQ.dissolution.profiles.hoffelder_pharmind <- T2EQ.dissolution.profiles.hoffelder(X=REF_pharmind,Y=TEST_pharmind)
Multivariate example dataset of dissolution profiles. Dataset consists of two three-dimensional samples. The names of the three variables are "Diss_15_min","Diss_20_min" and "Diss_25_min". Variable "Group" discriminates between first sample (Group == "REF"
) and second sample (Group == "Test"
). Sample size is 12 per group.
data("ex_data_JoBS")
data("ex_data_JoBS")
A data frame with 24 observations on the following 4 variables.
Group
a factor with levels REF
TEST
Diss_15_min
a numeric vector
Diss_20_min
a numeric vector
Diss_25_min
a numeric vector
Example dataset from Hoffelder et al. (2015).
Hoffelder, T., Goessl, R., Wellek, S. (2015), "Multivariate Equivalence Tests for Use in Pharmaceutical Development", Journal of Biopharmaceutical Statistics, 25:3, 417-437.
URL: http://dx.doi.org/10.1080/10543406.2014.920344
data(ex_data_JoBS)
data(ex_data_JoBS)
Multivariate example dataset of dissolution profiles. Dataset consists of two three-dimensional samples. The names of the three variables are "Diss_10_min","Diss_20_min" and "Diss_30_min". Variable "Group" discriminates between first sample (Group == "REF"
) and second sample (Group == "Test"
). Sample size is 12 per group.
data("ex_data_pharmind")
data("ex_data_pharmind")
A data frame with 24 observations on the following 4 variables.
Diss_10_min
a numeric vector
Diss_20_min
a numeric vector
Diss_30_min
a numeric vector
Group
a character vector
Example dataset underlying Figure 1 in Hoffelder (2016).
Hoffelder, T. (2016), "Highly Variable Dissolution Profiles: Comparison of -Test for Equivalence and
Based Methods", pharmind, 78:4, 587-592.
URL: http://www.ecv.de/suse_item.php?suseId=Z|pi|8430
data(ex_data_pharmind)
data(ex_data_pharmind)
-test for equivalence
The function T2EQ()
implements the -test for equivalence (see Wellek,2010 or Hoffelder et al., 2015). The
-test for equivalence is a multivariate two-sample equivalence test.
Distance measure of the test is the Mahalanobis distance.
T2EQ(X, Y, eq_margin, alpha = 0.05, print.results = TRUE)
T2EQ(X, Y, eq_margin, alpha = 0.05, print.results = TRUE)
X |
numeric data matrix of the first sample. The rows of |
Y |
numeric data matrix of the second sample. The rows of |
eq_margin |
numeric (>0). The equivalence margin of the test. |
alpha |
numeric (0< |
print.results |
logical; if TRUE (default) summary statistics and test results are printed in the output. If NO no output is created |
For multivariate normally distributed data the -test for equivalence is exact and UMPI.
a data frame; three columns containing the results of the test
p.value |
numeric; the p-value of the |
testresult.num |
numeric; 0 (null hypothesis of nonequivalence not rejected) or 1 (null hypothesis of nonequivalence rejected, decision in favor of equivalence) |
testresult.text |
character; test result of the |
Thomas Hoffelder <thomas.hoffelder at boehringer-ingelheim.com>
Wellek, S. (2010), Testing Statistical Hypotheses of Equivalence and Noninferiority. Second edition. Boca Raton: Chapman & Hall/CRC.
Hoffelder, T., Goessl, R., Wellek, S. (2015). Multivariate Equivalence Tests for Use in Pharmaceutical Development. Journal of Biopharmaceutical Statistics, 25:3, 417-437. URL: http://dx.doi.org/10.1080/10543406.2014.920344
## Not run: A recalculation of the example evaluation in Hoffelder et al. (2015) can be done with the following code: ## End(Not run) data(ex_data_JoBS) REF_JoBS <- cbind(ex_data_JoBS[ which(ex_data_JoBS$Group=='REF'), ] [c("Diss_15_min","Diss_20_min","Diss_25_min")]) TEST_JoBS <- cbind(ex_data_JoBS[ which(ex_data_JoBS$Group=='TEST'), ] [c("Diss_15_min","Diss_20_min","Diss_25_min")]) equivalence_margin_JoBS <- 0.74^2 test_T2EQ_JoBS <- T2EQ(X=REF_JoBS,Y=TEST_JoBS,eq_margin = equivalence_margin_JoBS)
## Not run: A recalculation of the example evaluation in Hoffelder et al. (2015) can be done with the following code: ## End(Not run) data(ex_data_JoBS) REF_JoBS <- cbind(ex_data_JoBS[ which(ex_data_JoBS$Group=='REF'), ] [c("Diss_15_min","Diss_20_min","Diss_25_min")]) TEST_JoBS <- cbind(ex_data_JoBS[ which(ex_data_JoBS$Group=='TEST'), ] [c("Diss_15_min","Diss_20_min","Diss_25_min")]) equivalence_margin_JoBS <- 0.74^2 test_T2EQ_JoBS <- T2EQ(X=REF_JoBS,Y=TEST_JoBS,eq_margin = equivalence_margin_JoBS)
-test for equivalence for dissolution data
The function T2EQ.dissolution.profiles.hoffelder()
implements a variant of the -test for equivalence analyses of highly variable dissolution profiles (see Hoffelder,2016). It is a multivariate two-sample equivalence procedure. Distance measure of the test is the Mahalanobis distance.
T2EQ.dissolution.profiles.hoffelder(X, Y, alpha = 0.05, print.results = TRUE)
T2EQ.dissolution.profiles.hoffelder(X, Y, alpha = 0.05, print.results = TRUE)
X |
numeric data matrix of the first sample (REF). The rows of |
Y |
numeric data matrix of the second sample (TEST). The rows of |
alpha |
numeric (0< |
print.results |
logical; if TRUE (default) summary statistics and test results are printed in the output. If NO no output is created |
This function implements a variant of the -test for equivalence suggested in Hoffelder (2016): The equivalence margin of the test is a compromise between the suggestions of Tsong et al. (1996) and EMA (2010) requirements. See Hoffelder (2016) for a discussion on that equivalence margin.
a data frame; three columns containing the results of the test
p.value |
numeric; the p-value of the equivalence test according to Hoffelder (2016) |
testresult.num |
numeric; 0 (null hypothesis of nonequivalence not rejected) or 1 (null hypothesis of nonequivalence rejected, decision in favor of equivalence) |
testresult.text |
character; test result of the test in text mode |
Thomas Hoffelder <thomas.hoffelder at boehringer-ingelheim.com>
Hoffelder, T. (2016). Highly Variable Dissolution Profiles: Comparison of -Test for Equivalence and
Based Methods. pharmind, 78:4, 587-592.
URL: http://www.ecv.de/suse_item.php?suseId=Z|pi|8430
Wellek, S. (2010), Testing Statistical Hypotheses of Equivalence and Noninferiority. Second edition. Boca Raton: Chapman & Hall/CRC.
Tsong, Y., Hammerstrom, T., Sathe, P., Shah, V.P. (1996). Statistical Assessment of Mean Differences between two Dissolution Data Sets. Drug Information Journal, 30:4, 1105-1112. URL: http://dx.doi.org/10.1177/009286159603000427
EMA (2010). Guidance on the Investigation of Bioequivalence. URL: http://www.ema.europa.eu/docs/en_GB/document_library/Scientific_guideline/2010/01/WC500070039.pdf
## Not run: A recalculation of the results underlying Figure 1 in Hoffelder (2016) can be done with the following code: ## End(Not run) data(ex_data_pharmind) REF_pharmind <- cbind(ex_data_pharmind[ which(ex_data_pharmind$Group=='REF'), ] [c("Diss_10_min","Diss_20_min","Diss_30_min")]) TEST_pharmind <- cbind(ex_data_pharmind[ which(ex_data_pharmind$Group=='TEST'), ] [c("Diss_10_min","Diss_20_min","Diss_30_min")]) test_T2EQ.dissolution.profiles.hoffelder_pharmind <- T2EQ.dissolution.profiles.hoffelder(X=REF_pharmind,Y=TEST_pharmind)
## Not run: A recalculation of the results underlying Figure 1 in Hoffelder (2016) can be done with the following code: ## End(Not run) data(ex_data_pharmind) REF_pharmind <- cbind(ex_data_pharmind[ which(ex_data_pharmind$Group=='REF'), ] [c("Diss_10_min","Diss_20_min","Diss_30_min")]) TEST_pharmind <- cbind(ex_data_pharmind[ which(ex_data_pharmind$Group=='TEST'), ] [c("Diss_10_min","Diss_20_min","Diss_30_min")]) test_T2EQ.dissolution.profiles.hoffelder_pharmind <- T2EQ.dissolution.profiles.hoffelder(X=REF_pharmind,Y=TEST_pharmind)