• Descriptive
    • Moments
    • Concentration
    • Central Tendency
    • Variability
    • Stem-and-Leaf Plot
    • Histogram & Frequency Table
    • Data Quality Forensics
    • Conditional EDA
    • Quantiles
    • Kernel Density Estimation
    • Normal QQ Plot
    • Bootstrap Plot

    • Multivariate Descriptive Statistics
  • Distributions
    • Binomial Probabilities
    • Geometric Probabilities
    • Negative Binomial Probabilities
    • Hypergeometric Probabilities
    • Multinomial Probabilities
    • Dirichlet
    • Poisson Probabilities

    • Exponential
    • Gamma
    • Erlang
    • Weibull
    • Rayleigh
    • Maxwell-Boltzmann
    • Lognormal
    • Pareto
    • Inverse Gamma
    • Inverse Chi-Square

    • Beta
    • Power
    • Beta Prime (Inv. Beta)
    • Triangular

    • Normal (area)
    • Logistic
    • Laplace
    • Cauchy (standard)
    • Cauchy (location-scale)
    • Gumbel
    • Fréchet
    • Generalized Extreme Value

    • Normal RNG
    • ML Fitting
    • Tukey Lambda PPCC
    • Box-Cox Normality Plot
    • Noncentral t
    • Noncentral F
    • Sample Correlation r

    • Empirical Tests
  • Hypotheses
    • Theoretical Aspects of Hypothesis Testing
    • Bayesian Inference
    • Minimum Sample Size

    • Empirical Tests
    • Multivariate (pair-wise) Testing
  • Models
    • Manual Model Building
    • Guided Model Building
  • Time Series
    • Time Series Plot
    • Decomposition
    • Exponential Smoothing

    • Blocked Bootstrap Plot
    • Mean Plot
    • (P)ACF
    • VRM
    • Standard Deviation-Mean Plot
    • Spectral Analysis
    • ARIMA

    • Cross Correlation Function
    • Granger Causality
  1. Hypothesis Testing
  2. 120  Two One-Sided Tests (TOST) for Equivalence
  • Preface
  • Getting Started
    • 1  Introduction
    • 2  Why Do We Need Innovative Technology?
    • 3  Basic Definitions
    • 4  The Big Picture: Why We Analyze Data
  • Introduction to Probability
    • 5  Definitions of Probability
    • 6  Jeffreys’ axiom system
    • 7  Bayes’ Theorem
    • 8  Sensitivity and Specificity
    • 9  Naive Bayes Classifier
    • 10  Law of Large Numbers

    • 11  Problems
  • Probability Distributions
    • 12  Bernoulli Distribution
    • 13  Binomial Distribution
    • 14  Geometric Distribution
    • 15  Negative Binomial Distribution
    • 16  Hypergeometric Distribution
    • 17  Multinomial Distribution
    • 18  Poisson Distribution

    • 19  Uniform Distribution (Rectangular Distribution)
    • 20  Normal Distribution (Gaussian Distribution)
    • 21  Gaussian Naive Bayes Classifier
    • 22  Chi Distribution
    • 23  Chi-squared Distribution (1 parameter)
    • 24  Chi-squared Distribution (2 parameters)
    • 25  Student t-Distribution
    • 26  Fisher F-Distribution
    • 27  Exponential Distribution
    • 28  Lognormal Distribution
    • 29  Gamma Distribution
    • 30  Beta Distribution
    • 31  Weibull Distribution
    • 32  Pareto Distribution
    • 33  Inverse Gamma Distribution
    • 34  Rayleigh Distribution
    • 35  Erlang Distribution
    • 36  Logistic Distribution
    • 37  Laplace Distribution
    • 38  Gumbel Distribution
    • 39  Cauchy Distribution
    • 40  Triangular Distribution
    • 41  Power Distribution
    • 42  Beta Prime Distribution
    • 43  Sample Correlation Distribution
    • 44  Dirichlet Distribution
    • 45  Generalized Extreme Value (GEV) Distribution
    • 46  Frechet Distribution
    • 47  Noncentral t Distribution
    • 48  Noncentral F Distribution
    • 49  Inverse Chi-Squared Distribution
    • 50  Maxwell-Boltzmann Distribution
    • 51  Distribution Relationship Map

    • 52  Problems
  • Descriptive Statistics & Exploratory Data Analysis
    • 53  Types of Data
    • 54  Datasheets

    • 55  Frequency Plot (Bar Plot)
    • 56  Frequency Table
    • 57  Contingency Table
    • 58  Binomial Classification Metrics
    • 59  Confusion Matrix
    • 60  ROC Analysis

    • 61  Stem-and-Leaf Plot
    • 62  Histogram
    • 63  Data Quality Forensics
    • 64  Quantiles
    • 65  Central Tendency
    • 66  Variability
    • 67  Skewness & Kurtosis
    • 68  Concentration
    • 69  Notched Boxplot
    • 70  Scatterplot
    • 71  Pearson Correlation
    • 72  Rank Correlation
    • 73  Partial Pearson Correlation
    • 74  Simple Linear Regression
    • 75  Moments
    • 76  Quantile-Quantile Plot (QQ Plot)
    • 77  Normal Probability Plot
    • 78  Probability Plot Correlation Coefficient Plot (PPCC Plot)
    • 79  Box-Cox Normality Plot
    • 80  Kernel Density Estimation
    • 81  Bivariate Kernel Density Plot
    • 82  Conditional EDA: Panel Diagnostics
    • 83  Bootstrap Plot (Central Tendency)
    • 84  Survey Scores Rank Order Comparison
    • 85  Cronbach Alpha

    • 86  Equi-distant Time Series
    • 87  Time Series Plot (Run Sequence Plot)
    • 88  Mean Plot
    • 89  Blocked Bootstrap Plot (Central Tendency)
    • 90  Standard Deviation-Mean Plot
    • 91  Variance Reduction Matrix
    • 92  (Partial) Autocorrelation Function
    • 93  Periodogram & Cumulative Periodogram

    • 94  Problems
  • Hypothesis Testing
    • 95  Normal Distributions revisited
    • 96  The Population
    • 97  The Sample
    • 98  The One-Sided Hypothesis Test
    • 99  The Two-Sided Hypothesis Test
    • 100  When to use a one-sided or two-sided test?
    • 101  What if \(\sigma\) is unknown?
    • 102  The Central Limit Theorem (revisited)
    • 103  Statistical Test of the Population Mean with known Variance
    • 104  Statistical Test of the Population Mean with unknown Variance
    • 105  Statistical Test of the Variance
    • 106  Statistical Test of the Population Proportion
    • 107  Statistical Test of the Standard Deviation \(\sigma\)
    • 108  Statistical Test of the difference between Means -- Independent/Unpaired Samples
    • 109  Statistical Test of the difference between Means -- Dependent/Paired Samples
    • 110  Statistical Test of the difference between Variances -- Independent/Unpaired Samples

    • 111  Hypothesis Testing for Research Purposes
    • 112  Decision Thresholds, Alpha, and Confidence Levels
    • 113  Bayesian Inference for Decision-Making
    • 114  One Sample t-Test
    • 115  Skewness & Kurtosis Tests
    • 116  Paired Two Sample t-Test
    • 117  Wilcoxon Signed-Rank Test
    • 118  Unpaired Two Sample t-Test
    • 119  Unpaired Two Sample Welch Test
    • 120  Two One-Sided Tests (TOST) for Equivalence
    • 121  Mann-Whitney U test (Wilcoxon Rank-Sum Test)
    • 122  Bayesian Two Sample Test
    • 123  Median Test based on Notched Boxplots
    • 124  Chi-Squared Tests for Count Data
    • 125  Kolmogorov-Smirnov Test
    • 126  One Way Analysis of Variance (1-way ANOVA)
    • 127  Kruskal-Wallis Test
    • 128  Two Way Analysis of Variance (2-way ANOVA)
    • 129  Repeated Measures ANOVA
    • 130  Friedman Test
    • 131  Testing Correlations
    • 132  A Note on Causality

    • 133  Problems
  • Regression Models
    • 134  Simple Linear Regression Model (SLRM)
    • 135  Multiple Linear Regression Model (MLRM)
    • 136  Logistic Regression
    • 137  Generalized Linear Models
    • 138  Multinomial and Ordinal Logistic Regression
    • 139  Cox Proportional Hazards Regression
    • 140  Conditional Inference Trees
    • 141  Leaf Diagnostics for Conditional Inference Trees
    • 142  Conditional Random Forests
    • 143  Hypothesis Testing with Linear Regression Models (from a Practical Point of View)

    • 144  Problems
  • Introduction to Time Series Analysis
    • 145  Case: the Market of Health and Personal Care Products
    • 146  Decomposition of Time Series
    • 147  Ad hoc Forecasting of Time Series
  • Box-Jenkins Analysis
    • 148  Introduction to Box-Jenkins Analysis
    • 149  Theoretical Concepts
    • 150  Stationarity
    • 151  Identifying ARMA parameters
    • 152  Estimating ARMA Parameters and Residual Diagnostics
    • 153  Forecasting with ARIMA models
    • 154  Intervention Analysis
    • 155  Cross-Correlation Function
    • 156  Transfer Function Noise Models
    • 157  General-to-Specific Modeling
  • Model Building Strategies
    • 158  Introduction to Model Building Strategies
    • 159  Manual Model Building
    • 160  Model Validation
    • 161  Regularization Methods
    • 162  Hyperparameter Optimization Strategies
    • 163  Guided Model Building in Practice
    • 164  Diagnostics, Revision, and Guided Forecasting
    • 165  Leakage, Target Encoding, and Robust Regression
  • References
  • Appendices
    • Appendices
    • A  Method Selection Guide
    • B  Presentations and Teaching Materials
    • C  R Language Concepts for Statistical Computing
    • D  Matrix Algebra
    • E  Standard Normal Table (Gaussian Table)
    • F  Critical values of Student’s \(t\) distribution with \(\nu\) degrees of freedom
    • G  Upper-tail critical values of the \(\chi^2\)-distribution with \(\nu\) degrees of freedom
    • H  Lower-tail critical values of the \(\chi^2\)-distribution with \(\nu\) degrees of freedom

Table of contents

  • 120.1 Definition
  • 120.2 The Equivalence Margin
  • 120.3 Hypotheses
  • 120.4 Test Statistic
  • 120.5 Decision Rule
  • 120.6 Confidence Interval Approach
  • 120.7 Example
  • 120.8 R Module
    • 120.8.1 Public website
    • 120.8.2 RFC
    • 120.8.3 R Code
  • 120.9 Comparison with Traditional t-test
  • 120.10 Pros & Cons
    • 120.10.1 Pros
    • 120.10.2 Cons
  • 120.11 Task
  1. Hypothesis Testing
  2. 120  Two One-Sided Tests (TOST) for Equivalence

120  Two One-Sided Tests (TOST) for Equivalence

120.1 Definition

The Two One-Sided Tests (TOST) procedure (Schuirmann 1987) is a method for testing whether two means are equivalent within a pre-specified margin. Unlike traditional hypothesis testing which tests for a difference, equivalence testing tests whether any difference is small enough to be considered negligible.

In traditional hypothesis testing (Chapter 104), the null hypothesis states that there is no difference between groups, and we reject this null when evidence suggests a difference exists. In equivalence testing, the logic is reversed: the null hypothesis states that the groups are not equivalent, and we reject this null when evidence suggests the groups are equivalent.

120.2 The Equivalence Margin

The equivalence margin \(\Delta\) (delta) defines the largest difference that is considered practically unimportant. If the true difference between means lies within the interval \([-\Delta, +\Delta]\), the two groups are considered equivalent.

The choice of \(\Delta\) must be made before data collection and should be based on:

  • Domain knowledge about what constitutes a meaningful difference
  • Regulatory requirements (e.g., bioequivalence studies typically use \(\Delta = 0.2\) or 20%)
  • Clinical or practical significance thresholds

120.3 Hypotheses

The TOST procedure decomposes the equivalence hypothesis into two one-sided hypotheses:

Test 1 (Lower bound):

\[ H_{01}: \mu_1 - \mu_2 \leq -\Delta \quad \text{vs.} \quad H_{a1}: \mu_1 - \mu_2 > -\Delta \]

Test 2 (Upper bound):

\[ H_{02}: \mu_1 - \mu_2 \geq +\Delta \quad \text{vs.} \quad H_{a2}: \mu_1 - \mu_2 < +\Delta \]

Equivalence is concluded if both null hypotheses are rejected at significance level \(\alpha\). This is equivalent to checking whether the \((1 - 2\alpha)\) confidence interval for the difference falls entirely within \([-\Delta, +\Delta]\).

120.4 Test Statistic

For each one-sided test, the test statistic follows the same form as the two-sample t-test (Chapter 118):

\[ t_1 = \frac{(\bar{x}_1 - \bar{x}_2) - (-\Delta)}{SE} = \frac{(\bar{x}_1 - \bar{x}_2) + \Delta}{SE} \]

\[ t_2 = \frac{(\bar{x}_1 - \bar{x}_2) - (+\Delta)}{SE} = \frac{(\bar{x}_1 - \bar{x}_2) - \Delta}{SE} \]

where \(SE\) is the standard error of the difference between means. For independent samples with equal variances:

\[ SE = s_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}} \]

where \(s_p\) is the pooled standard deviation.

120.5 Decision Rule

Equivalence is established if:

  • \(t_1 > t_{\alpha, df}\) (reject \(H_{01}\)), AND
  • \(t_2 < -t_{\alpha, df}\) (reject \(H_{02}\))

Alternatively, using p-values: equivalence is established if both \(p_1 < \alpha\) and \(p_2 < \alpha\).

The overall p-value for the TOST procedure is the larger of the two one-sided p-values:

\[ p_{TOST} = \max(p_1, p_2) \]

120.6 Confidence Interval Approach

An equivalent approach uses the \((1 - 2\alpha) \times 100\%\) confidence interval for the difference \(\mu_1 - \mu_2\):

\[ (\bar{x}_1 - \bar{x}_2) \pm t_{\alpha, df} \times SE \]

If this confidence interval lies entirely within \([-\Delta, +\Delta]\), equivalence is concluded at significance level \(\alpha\).

120.7 Example

A pharmaceutical company wants to demonstrate that a generic drug is bioequivalent to a brand-name drug. The equivalence margin is set at \(\Delta = 5\) units. Two groups of patients receive either the generic (\(n_1 = 24\)) or brand-name (\(n_2 = 24\)) drug, and a pharmacokinetic measure is recorded.

Results:

  • Generic: \(\bar{x}_1 = 102.3\), \(s_1 = 4.3\)
  • Brand: \(\bar{x}_2 = 100.1\), \(s_2 = 3.8\)
  • Difference: \(\bar{x}_1 - \bar{x}_2 = 2.2\)

The 90% confidence interval for the difference (using \(\alpha = 0.05\) for each one-sided test) is \([0.3, 4.2]\).

Since the entire 90% confidence interval lies within \([-5, 5]\), equivalence can be established at \(\alpha = 0.05\). The generic drug is shown to be bioequivalent to the brand-name drug based on this study.

120.8 R Module

120.8.1 Public website

The TOST procedure is available on the public website:

  • https://compute.wessa.net/tost.wasp

120.8.2 RFC

The TOST module is available in RFC under the menu “Hypothesis Testing / Equivalence Testing (TOST)”.

120.8.3 R Code

The following code demonstrates the TOST procedure using the TOSTER package:

install.packages("TOSTER")
library(TOSTER)

# Example data
generic <- c(98, 105, 102, 99, 108, 101, 95, 110, 103, 97,
             106, 100, 104, 99, 107, 102, 96, 109, 101, 98,
             105, 103, 100, 108)
brand <- c(96, 102, 100, 98, 105, 99, 94, 107, 101, 95,
           103, 98, 102, 97, 104, 100, 94, 106, 99, 96,
           103, 101, 98, 105)

# TOST procedure with equivalence margin of 5
result <- tsum_TOST(
  m1 = mean(generic),
  sd1 = sd(generic),
  n1 = length(generic),
  m2 = mean(brand),
  sd2 = sd(brand),
  n2 = length(brand),
  eqb = 5,           # equivalence bound (symmetric)
  alpha = 0.05
)

print(result)

Welch Two Sample t-test

The equivalence test was significant, t(45.39) = -2.398, p = 1.03e-02
The null hypothesis test was non-significant, t(45.39) = 1.897, p = 6.42e-02
NHST: don't reject null significance hypothesis that the effect is equal to zero 
TOST: reject null equivalence hypothesis

TOST Results 
                t    df p.value
t-test      1.897 45.39   0.064
TOST Lower  6.192 45.39 < 0.001
TOST Upper -2.398 45.39    0.01

Effect Sizes 
               Estimate     SE             C.I. Conf. Level
Raw              2.2083 1.1640 [0.2538, 4.1629]         0.9
Hedges's g(av)   0.5385 0.3003 [0.0596, 1.0117]         0.9
Note: SMD confidence intervals are an approximation. See vignette("SMD_calcs").

For a manual implementation without external packages:

# Manual TOST implementation
tost_test <- function(x1, x2, delta, alpha = 0.05) {
  n1 <- length(x1)
  n2 <- length(x2)
  m1 <- mean(x1)
  m2 <- mean(x2)

  # Pooled standard deviation
  sp <- sqrt(((n1 - 1) * var(x1) + (n2 - 1) * var(x2)) / (n1 + n2 - 2))
  se <- sp * sqrt(1/n1 + 1/n2)
  df <- n1 + n2 - 2

  # Difference
  diff <- m1 - m2

  # Two one-sided tests
  t1 <- (diff + delta) / se  # Test against lower bound
  t2 <- (diff - delta) / se  # Test against upper bound

  p1 <- pt(t1, df, lower.tail = FALSE)  # Upper tail for t1
  p2 <- pt(t2, df, lower.tail = TRUE)   # Lower tail for t2

  # Confidence interval (90% for alpha = 0.05)
  t_crit <- qt(1 - alpha, df)
  ci_lower <- diff - t_crit * se
  ci_upper <- diff + t_crit * se

  # Decision
  equivalent <- (p1 < alpha) & (p2 < alpha)

  list(
    difference = diff,
    se = se,
    t1 = t1, p1 = p1,
    t2 = t2, p2 = p2,
    p_tost = max(p1, p2),
    ci = c(ci_lower, ci_upper),
    delta = delta,
    equivalent = equivalent
  )
}

# Apply to example data
result <- tost_test(generic, brand, delta = 5, alpha = 0.05)

cat("TOST Results\n")
cat("============\n")
cat("Mean difference:", round(result$difference, 3), "\n")
cat("90% CI: [", round(result$ci[1], 3), ",", round(result$ci[2], 3), "]\n")
cat("Equivalence bounds: [-", result$delta, ", +", result$delta, "]\n")
cat("\nTest 1 (lower bound): t =", round(result$t1, 3), ", p =", round(result$p1, 4), "\n")
cat("Test 2 (upper bound): t =", round(result$t2, 3), ", p =", round(result$p2, 4), "\n")
cat("TOST p-value:", round(result$p_tost, 4), "\n")
cat("\nConclusion:", ifelse(result$equivalent, "Equivalence established", "Equivalence not established"), "\n")
TOST Results
============
Mean difference: 2.208 
90% CI: [ 0.254 , 4.162 ]
Equivalence bounds: [- 5 , + 5 ]

Test 1 (lower bound): t = 6.192 , p = 0 
Test 2 (upper bound): t = -2.398 , p = 0.0103 
TOST p-value: 0.0103 

Conclusion: Equivalence established 

120.9 Comparison with Traditional t-test

Table 120.1: Comparison of Traditional t-test and TOST
Aspect Traditional t-test TOST
Null hypothesis No difference (\(\mu_1 = \mu_2\)) Not equivalent (\(|\mu_1 - \mu_2| \geq \Delta\))
Alternative hypothesis Difference exists (\(\mu_1 \neq \mu_2\)) Equivalent (\(|\mu_1 - \mu_2| < \Delta\))
Failure to reject Cannot claim difference Cannot claim equivalence
Question answered Are they different? Are they equivalent?

A non-significant t-test does not establish equivalence — it only indicates insufficient evidence for a difference. TOST provides positive evidence for equivalence.

120.10 Pros & Cons

120.10.1 Pros

TOST has the following advantages:

  • Provides positive evidence for equivalence rather than relying on failure to reject a null hypothesis of no difference.
  • Controls the Type I error rate at the nominal level \(\alpha\).
  • The confidence interval approach provides an intuitive visual assessment of equivalence.
  • Widely accepted in regulatory settings for bioequivalence studies.

120.10.2 Cons

TOST has the following disadvantages:

  • Requires pre-specification of the equivalence margin \(\Delta\), which may be difficult to justify.
  • Larger sample sizes are typically needed compared to traditional t-tests to achieve adequate power.
  • The choice of \(\Delta\) directly affects conclusions — a larger margin makes equivalence easier to establish.
  • Assumes the same distributional requirements as the underlying t-test (normality, independence).

120.11 Task

  1. Two laboratories measure the concentration of a chemical compound in the same samples. Lab A reports a mean of 45.2 (SD = 3.1, n = 15) and Lab B reports a mean of 44.8 (SD = 2.9, n = 15). Using an equivalence margin of \(\Delta = 2\), test whether the laboratories produce equivalent results.

  2. A company claims their new manufacturing process produces equivalent results to the old process. The equivalence margin is set at 10% of the old process mean. Design a study to test this claim with 80% power at \(\alpha = 0.05\).

  3. Explain why a non-significant two-sample t-test cannot be used to conclude equivalence. Illustrate with an example where the t-test is non-significant but TOST fails to establish equivalence.

Schuirmann, Donald J. 1987. “A Comparison of the Two One-Sided Tests Procedure and the Power Approach for Assessing the Equivalence of Average Bioavailability.” Journal of Pharmacokinetics and Biopharmaceutics 15 (6): 657–80. https://doi.org/10.1007/BF01068419.
119  Unpaired Two Sample Welch Test
121  Mann-Whitney U test (Wilcoxon Rank-Sum Test)

© 2026 Patrick Wessa. Provided as-is, without warranty.

Feedback: e-mail | Anonymous contributions: click to copy (Sats) | click to copy (XMR)

Cookie Preferences