GSUA-CSB Toolbox

Global sensitivity and uncertainty analysis, parameter estimation, and confidence sub-contour boxes for dynamical models — in MATLAB and Python.

Universidad EAFIT · GitHub · File Exchange · User guide

Worked examples

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.

User-defined model

Pharmacokinetics: when a perfect fit hides an unidentifiable parameter

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.

Symbolic ODE model

Epidemic modelling: identifiability depends on when you stopped looking

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.

What the two examples share

Both reach the same conclusion from opposite directions, which is the reason to read them together.

 Better fitBetter identified
Pharmacokineticsall three factors freevolume fixed
Epidemicearly phase onlyfull 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.

Guided course (en español)

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óduloTemaEjecutado
01Introducción a los modelos dinámicos (logístico discreto, SIR continuo) MATLAB · Python
02Muestreo del espacio de parámetros (Uniforme, Hipercubo Latino, Sobol) MATLAB · Python
03Análisis de incertidumbre y filtrado Monte Carlo MATLAB · Python
04Análisis de sensibilidad global (Sobol / Xiao) MATLAB · Python
05Estimación de parámetros e identificabilidad práctica MATLAB · Python

Where to go next

The user guide covers the whole toolbox. The functions these examples lean on most:

FunctionRole
gsua_dataprepBuild the summary table from a Simulink, symbolic or user-defined model
gsua_peMultistart parameter estimation
gsua_iaPractical identifiability: correlations, ranges, multiple global minima
gsua_likelihoodProfile-likelihood confidence intervals
gsua_covmetricScores an uncertainty band for the confounding signature
gsua_noisefloorNoise-calibrated threshold for which fits to accept
gsua_dmatrixFactor sampling, including correlation-preserving joint sampling