TrueGate Bio · Analytics Case Work

Shelf life: can the batches be pooled?

An ICH Q1E poolability analysis for three stability batches, and the shelf life the data actually supports.

Synthetic data, built to demonstrate the method

The question

Three registration batches show slightly different degradation rates. The draft proposes a shelf life from all the data pooled together, extrapolated beyond the 24 months of real-time data. Is pooling justified, and what shelf life does the data actually support?

The analysis

ICH Q1E sets the order: test whether the batches share a slope, then whether they share an intercept, each at a significance level of 0.25 so that a real difference is not waved through. Only if both pass can the data be pooled.

Poolability testp-valueResult at 0.25
Equal slopes (batch x time interaction)0.001Slopes differ: do not pool
Equal intercepts (given common slope)0.031Not reached: slopes already differ
2026-09-25T02:50:25.332224 image/svg+xml Matplotlib v3.10.9, https://matplotlib.org/
BatchSlope (% per month)Where the 95% lower bound meets 95.0%
Batch 1-0.12632.3 months
Batch 2-0.14229.3 months
Batch 3-0.24820.1 months
Pooled (not justified)-0.17226.6 months
Why it matters. Pooling averages the fastest-degrading batch together with the slower ones and overstates the shelf life by 6.5 months here. With unequal slopes, the shelf life comes from the worst batch: about 20.1 months. Extrapolation beyond the real-time data is also limited under Q1E, so a claim past 24 months needs additional justification either way.

What to do

  • Base the proposed shelf life on the worst batch, or justify a common slope with more data.
  • Investigate why one batch degrades faster; it may be a process or packaging signal, not noise.
  • Keep any extrapolation within Q1E limits and commit to confirming with ongoing real-time data.

How it was done

Synthetic assay data for three batches at seven time points. ANCOVA (ordinary least squares) for slope and intercept equality at alpha 0.25; one-sided 95% lower confidence bound on the mean for each regression. You can estimate a single batch in the shelf-life tool. Download the data (CSV).

Back to all work   Discuss a similar problem