Module request: ICH Q1E stability analysis, shelf-life estimation and extrapolation

Everything related to the development of modules in jamovi
Post Reply
Maged-Magdy
Posts: 3
Joined: Wed Jul 01, 2026 12:20 pm

Module request: ICH Q1E stability analysis, shelf-life estimation and extrapolation

Post by Maged-Magdy »

I would like to suggest a module for pharmaceutical stability analysis following ICH Q1E. I have not found a module covering this workflow. Is one available or under development?
Suggested functionality:
- Import time, batch and quantitative results, with user-defined specification limits.
- Fit regression models and provide model diagnostics.
- Assess batch poolability using ANCOVA: test slopes first, then intercepts where appropriate, using α = 0.25.
- Support the three resulting models: separate slopes and intercepts; a common slope with separate intercepts; or a common slope and intercept. Where slopes differ, use the pooled residual mean square error across batches. Where batch-specific estimates remain, report the shortest.
- Estimate shelf life/retest period from the earliest intersection of the appropriate 95% confidence bound for the mean with a specification limit: lower one-sided for decreasing attributes, upper one-sided for increasing attributes, and two-sided when direction is unknown.
- Distinguish the statistical estimate from the extrapolation permitted under the applicable ICH Q1E conditions and Appendix A decision tree.
- Provide plots and exportable results.
Future extensions could support multifactor studies, using α = 0.25 for batch-related terms and α = 0.05 for non-batch-related terms.
This would help pharmaceutical QC and stability researchers use jamovi for a complete stability evaluation workflow.
Would any module developers be interested in implementing this or extending an existing module?
Reference: ICH Q1E — Evaluation of Stability Data
User avatar
yurismol
Posts: 67
Joined: Sat May 27, 2023 6:40 am
Location: Chita
Contact:

Re: Module request: ICH Q1E stability analysis, shelf-life estimation and extrapolation

Post by yurismol »

I can give it a try
User avatar
yurismol
Posts: 67
Joined: Sat May 27, 2023 6:40 am
Location: Chita
Contact:

Re: Module request: ICH Q1E stability analysis, shelf-life estimation and extrapolation

Post by yurismol »

You can test and critique the first attempt (Stability Analysis ICH Q1E).
https://github.com/yurismol/jYS/release ... _1.2.0.jmo

Sample dataset included into the module.
Description: https://github.com/yurismol/jYS/release ... iption.pdf
User avatar
yurismol
Posts: 67
Joined: Sat May 27, 2023 6:40 am
Location: Chita
Contact:

Re: Module request: ICH Q1E stability analysis, shelf-life estimation and extrapolation

Post by yurismol »

A new version of the jYS module (1.2.0), featuring stability analysis, is now available in the Jamovi library.
Maged-Magdy
Posts: 3
Joined: Wed Jul 01, 2026 12:20 pm

Re: Module request: ICH Q1E stability analysis, shelf-life estimation and extrapolation

Post by Maged-Magdy »

Thank you very much for taking this on, and for the quick turnaround. I’m glad to see the stability analysis now available in jYS 1.2.0.

I’ll install it from the Jamovi library, test it with the sample dataset and with real stability data, and share my feedback (results, any discrepancies, and suggestions) here soon.

Thanks again for your time and effort, this will be a valuable addition for pharmaceutical QC and stability researchers using jamovi.
Maged-Magdy
Posts: 3
Joined: Wed Jul 01, 2026 12:20 pm

Re: Module request: ICH Q1E stability analysis, shelf-life estimation and extrapolation

Post by Maged-Magdy »

Apologies for the delay in getting back to you, and thank you again for developing this module and making it available.

After exploring the module and reviewing the ICH Q1E guideline more closely, I have several suggestions. I have included practical examples to explain the intended behaviour.

The numerical examples below are hypothetical and are intended to illustrate the functionality.

1. Complete individual shelf-life plots:

I found the “Individual Batch Trajectories (Faceted)” option. It provides a useful overview, but could you also provide a complete, standalone plot for each batch when the analysis produces batch-specific estimates?

The existing combined plot would still be useful and should remain available.

Similar to the attached Minitab screenshots, each individual plot would ideally include:

- Its own axes and batch identifier.
- The observed data points.
- The fitted regression line and its equation.
- The appropriate confidence bound or bounds.
- The applicable specification limits.
- The batch-specific shelf-life estimate and a labelled vertical marker.

For context, the fitted regression line describes the estimated average change over time. The confidence bound represents uncertainty around that estimated mean. The statistical shelf-life estimate is determined by the relevant confidence bound reaching the specification limit.

Could the confidence bounds be displayed as clearly visible dashed lines? The current shading is quite faint, especially where the batch profiles overlap.

Please also consider extending the fitted lines and confidence bounds far enough to show the intersection used to estimate shelf life. In the current faceted plot, the curves for batches B and C stop at 30 months, before their intersections with the lower specification limit are visible.

Where the statistical estimate and the proposed shelf life differ, their markers should be labelled separately.

2. Support for multifactor stability studies:

Could you clarify whether the module supports additional factors, such as product strength and container size, including their relevant interactions?

For example, consider a product available in:

- Two strengths: 100 mg and 200 mg.
- Two bottle sizes: 30 tablets and 60 tablets.
- Three manufacturing batches of each strength, with each batch studied in both bottle sizes.
- Measurements at 0, 6, 12, 18, and 24 months.

This creates four strength–bottle combinations:

- Combination 1: 100 mg, 30-tablet bottle.
- Combination 2: 100 mg, 60-tablet bottle.
- Combination 3: 200 mg, 30-tablet bottle.
- Combination 4: 200 mg, 60-tablet bottle.

Each combination contains three batches measured at five time points. Assuming one result per time point, this gives 15 measurements per combination and 60 measurements overall.

There are six manufacturing batches in total. Each batch appears under both bottle sizes, so the statistical model needs to preserve that study structure.

Each data row would contain:

- Strength.
- Bottle size.
- Batch identifier.
- Storage time.
- Measured response, such as assay.

For example, batch “100-A” would have five results in the 30-tablet bottle and another five in the 60-tablet bottle.

The practical questions are:

- Do batches have different starting levels or rates of change?
- Does strength affect the stability profile?
- Does bottle size affect the stability profile?
- Does the effect of bottle size depend on strength?
- Can some or all of these data be combined to estimate one shelf life?

An interaction means that the effect of one factor depends on another. For example, changing bottle size might affect the 200 mg product differently from the 100 mg product.

In regression terms, the intercept represents the estimated starting level, while the slope represents the rate of change over time.

ICH Q1E Section B.3.2.2.1 recommends:

- α = 0.25 for batch-related terms, including interactions involving batch.
- α = 0.05 for non-batch-related terms, such as strength, bottle size, and their interactions with time.

These are thresholds used in the statistical tests. They should be applied within the appropriate model hierarchy and testing order.

For illustration, suppose pooling is not justified and separate analyses give these statistical shelf-life estimates:

- 100 mg, 30-tablet bottle: 36 months.
- 100 mg, 60-tablet bottle: 35 months.
- 200 mg, 30-tablet bottle: 34 months.
- 200 mg, 60-tablet bottle: 24 months.

If one shelf life is required for all four combinations, the shortest estimate would limit it to 24 months, subject to the applicable extrapolation rules and other requirements.

If pooling is justified, the common estimate would be calculated from the appropriate combined model rather than by averaging these four estimates.

Could the module handle this study in one analysis? If the current implementation supports only time and batch, could additional factors be considered for a future version?

3. Guided study questions for the Appendix A decision tree:

Could the module guide the user through the study information needed to select the correct extrapolation branch?

Extrapolation means proposing a shelf life beyond the period covered by actual long-term stability data.

The long-term measurements alone do not tell the software:

- Whether the product is intended for room-temperature or refrigerated storage.
- What happened during accelerated testing.
- Whether an intermediate study was performed and what its result was.
- Whether relevant supporting data are available.

For the current workflow, a practical approach could be to keep the long-term measurements as the regression input and add a short questionnaire.

The questions would appear as needed, based on previous answers, and cover:

- Intended storage condition.
- Whether significant change occurred at the accelerated condition within six months.
- For refrigerated products, whether that change occurred within the first three months.
- The intermediate-condition result, where applicable.
- Whether the long-term data show little or no change and little or no variability.
- Whether the accelerated data also show little or no change and little or no variability.
- Whether relevant supporting data are available, with space to record their source or justification.

The software would calculate the statistical results and combine them with the supplied study information to identify the appropriate decision-tree branch.

The accelerated-study “significant change” decision should be distinguished from the statistical tests for batch poolability. Similarly, “no significant change” does not automatically establish that the data show little change and little variability; the tree asks about these separately.

If accelerated and intermediate datasets are supported directly, they should be identified by study type and storage condition and evaluated through the appropriate workflow.

Significant change during accelerated testing does not mean that the long-term measurements should be replaced. It changes the evaluation pathway and may make the intermediate-study result necessary.

Worked example:

Suppose a product has:

- Intended storage at room temperature.
- 24 months of long-term data.
- A statistical shelf-life estimate of 34 months.
- Significant change at the accelerated condition.
- No significant change at the intermediate condition.
- Relevant supporting data, with the remaining conditions satisfied.

Under Section 2.4.2.1, the extrapolation ceiling for this branch is the smaller of:

- 1.5 × 24 = 36 months.
- 24 + 6 = 30 months.

The ceiling is therefore 30 months.

The statistical estimate supports 34 months, but the selected extrapolation branch limits the proposal to 30 months.

If the statistical estimate supported only 26 months, the proposal could not exceed 26 months.

If significant change had also occurred at the intermediate condition, extrapolation beyond the 24 months of long-term data would not be appropriate, and a shorter period might be necessary.

If the required intermediate-study result is unavailable, the report should identify that missing information rather than assume a favourable result.

The current option “Significant change observed at accelerated condition (No extrapolation)” appears too broad for this room-temperature example. Could you clarify whether the intermediate-condition branch is already covered?

Other branches have different limits. For example:

- With significant change at the accelerated condition but none at the intermediate condition, an extension of up to three months may be supported when statistical analysis is unsuitable or not performed, provided relevant supporting data are available.
- With no significant change at the accelerated condition, the applicable ceiling depends on the observed change, variability, statistical analysis, and supporting data.
- Refrigerated products have different limits.
- Frozen products are outside the Appendix A tree and are addressed separately in the guideline.

It would therefore help to state clearly which storage scenarios and decision-tree branches the module supports.

4. Clear reporting of inputs, calculations, and the proposed duration:

Could the report distinguish between information supplied by the user and results calculated by the software?

A useful output could show:

- Long-term data coverage: the period actually covered by the submitted long-term measurements.
- Statistical estimate: the duration supported by the fitted model and appropriate confidence bound, where applicable.
- Study information: storage conditions and accelerated/intermediate-study information supplied by the user.
- Selected decision-tree branch: the route taken through Appendix A, with its conditions.
- Extrapolation ceiling: the conditional upper limit from that branch.
- Proposed shelf life: the duration being evaluated and whether the available evidence supports it.

Some branches normally do not require statistical analysis, so the workflow should also accommodate those situations if they are within the module’s intended scope.

It would also be useful to enter a proposed shelf life, such as 24 months, and assess whether every relevant batch or factor combination supports it.

Sections B.2.1 and B.3.1 describe this approach. If all relevant estimates support the proposed duration and the other requirements are satisfied, identifying the most reduced model is not always necessary.

5. Checks to help prevent input mistakes:

The module could help the user identify issues such as:

- Missing measurements or study information.
- Unclear or inconsistent time units.
- Unclear study-type or storage-condition labels.
- Accidental duplicate records, while allowing correctly identified replicates.
- Missing information required to select a decision-tree branch.
- Model diagnostics that raise concerns about the statistical estimate.

Where information is unavailable, an explicit “unknown/not available” option would be useful.

These checks would help the user enter and interpret the study correctly. The user would still need to verify the measurements and study details against the original records.

6. Possible future extensions:

For broader coverage of the guideline, the following could also be useful:

- Bracketing designs — Section B.4: studies that test selected extremes, such as the smallest and largest container sizes, to represent intermediate sizes. The analysis needs to respect the assumptions behind that design.
- Matrixing designs — Section B.5: studies where a planned subset of samples is tested at each time point. This requires attention to which effects can be estimated and which assumptions are justified.
- A summary across quality attributes — Section 2.1: assay, degradation products, and other relevant attributes are assessed separately, but the overall proposed shelf life must respect the limiting attribute.

I appreciate that some of these suggestions may require substantial development. Please let me know which capabilities are already supported and which would be suitable for future updates.

Thank you again for your time and effort.

Reference : ICH Q1E Guideline
Attachments
Screenshot 2026-10-21 213902_edited.PNG
Screenshot 2026-10-21 213902_edited.PNG (119.4 KiB) Viewed 172 times
Screenshot 2026-10-21 213820_edited (2).PNG
Screenshot 2026-10-21 213820_edited (2).PNG (109.53 KiB) Viewed 172 times
Post Reply