Global sensitivity and uncertainty analysis, parameter estimation, and confidence sub-contour boxes for dynamical models — in MATLAB and Python.
Two complete system-identification workflows, from writing the model down to reporting confidence intervals. Each is available as a MATLAB Live Script and as a Python notebook, computing the same thing both ways.
A one-compartment model with first-order absorption, fitted to a single oral concentration curve. Every multistart run converges to the same excellent fit — and the parameters still cannot be separated, because they are correlated at nearly −1. Fixing the volume of distribution from an independent study makes the fit slightly worse and the science considerably better.
An SIR system written with Symbolic Math Toolbox (SymPy in the Python version), fitted twice: once to a full epidemic and once to the first 25 days only. The early-phase data give the better fit and the worse answer — transmission and recovery rates become perfectly confounded before the peak, and R0 is underestimated by 21% with intervals nearly seven times wider.
Both reach the same conclusion from opposite directions, which is the reason to read them together.
| Better fit | Better identified | |
|---|---|---|
| Pharmacokinetics | all three factors free | volume fixed |
| Epidemic | early phase only | full epidemic |
In both cases the dataset that produced the lower cost is the one that produced the less trustworthy parameters. Cost measures how well a curve passes through points; it says nothing about whether the parameters behind that curve could have been recovered. Only an identifiability analysis answers the second question.
A five-module course that walks the whole toolbox workflow step by step, each
module written twice — in MATLAB and Python — with commented demos and exercises.
Read it executed below, or clone the repo and run it
(course/).
| Módulo | Tema | Ejecutado |
|---|---|---|
| 01 | Introducción a los modelos dinámicos (logístico discreto, SIR continuo) | MATLAB · Python |
| 02 | Muestreo del espacio de parámetros (Uniforme, Hipercubo Latino, Sobol) | MATLAB · Python |
| 03 | Análisis de incertidumbre y filtrado Monte Carlo | MATLAB · Python |
| 04 | Análisis de sensibilidad global (Sobol / Xiao) | MATLAB · Python |
| 05 | Estimación de parámetros e identificabilidad práctica | MATLAB · Python |
The user guide covers the whole toolbox. The functions these examples lean on most:
| Function | Role |
|---|---|
gsua_dataprep | Build the summary table from a Simulink, symbolic or user-defined model |
gsua_pe | Multistart parameter estimation |
gsua_ia | Practical identifiability: correlations, ranges, multiple global minima |
gsua_likelihood | Profile-likelihood confidence intervals |
gsua_covmetric | Scores an uncertainty band for the confounding signature |
gsua_noisefloor | Noise-calibrated threshold for which fits to accept |
gsua_dmatrix | Factor sampling, including correlation-preserving joint sampling |