Structural Identifiability and Observability Analysis for Nonlinear Dynamic Models - Data2Dynamics/d2d GitHub Wiki
Structural Identifiability and Observability Analysis for Nonlinear Dynamic Models
Different methods are available within the framework to analyze structural identifiability of a model. Here the use of a Lie-Derivative based method (STRIKE-GOLDD, no data needed), a method based on the sensitivity matrix (StrucID, no data needed) and a fast, data-based idea (Identifiability Test by Radial Penalization) is explained.
STRIKE-GOLDD
This toolbox is based on the STRIKE-GOLDD v3.0. The toolbox analyses the local structural identifiability and observability of nonlinear dynamic models, which can have multiple time-varying and possibly unknown inputs. It can also be used to find the symmetries in the model equations that lead to lack of identifiability or observability and to automatically reparameterize the model in order to remove those symmetries.
arSIAInit
Initializing the toolbox: To use the toolbox, the model and data should be loaded and compiled. after the arCompileAll
command you may initialize the structural identifiability analysis by
arSIAInit(m)
where m is the model number.
arSIA
Executing the analysis: Having initialized the toolbox you may execute the analysis by
arSIA
You can also execute arSIA
without initialization. In this case, the default value for model one will be applied.
Options
After initializing the toolbox a new field will be added to ar structure, ar.ia
.
You can change the default setting in ar.ia.opts
. for more information concerning the option see the STRIKE-GOLDD user manual. After changing the options you may execute arSIA
.
Auto reparametrization
Auto reparametrization is disabled by default. If you would like to run in the auto reparametization mode for repairing the model, you should turn it on by the following command after the initialization step.
ar.ia.opts.autoRepar=1;
More information on the theory of finding and breaking Lie symmetries can be found here:
- Gemma Massonis and Alejandro F. Villaverde Finding and Breaking Lie Symmetries: Implications for Structural Identifiability and Observability in Biological Modelling. Symmetry 12(3), 469, 2020.
StrucID
This method is based on sensitivity matrix analysis and it's theory can be found here (https://doi.org/10.1016/j.automatica.2015.05.004). The method performs fast analysis and can take models with known or unknown analytic input functions and gives the parameter set that causes a model to be structurally non-identifiable as a result.
To use the toolbox, the model and data should be loaded and compiled. after the arCompileAll
command the analysis can be performed by:
WriteStrucIDModel(modelname)
m = StrucIDreadmodel(modelname)
StrucIDanalysis(m)
The first line creates a .txt-file that contains the model structure in the needed format, but is easily readable, so it can be checked and changed if needed. The second line initializes the analysis and the third line gives the analysis and prints the results to the terminal, but also shows the graphical interpretation, so one can check for numerical issues.
Identifiability Test by Radial Penalization
This method is fit-based, so a sufficient fit to the data is needed be fore the analysis. The underlying theory is explained here: https://doi.org/10.1093/bioinformatics/bty035
The analysis is implemented in the framework as one of the standard functions and can be called via arIdentifiabilityTest(silent, radius, nfit, doFittingFirst)
. silent prevents the command-line output, radius determines the target radius, nfit gives the number of initial guesses and if doFitting is set, a normal fit is calculated first.