DataDrivenModels

  1. Overview
  2. Parameter estimation and model fitting
  3. Toolbox utilities
  4. Data-based external input signals to dynamical systems
    1. Introduction
    2. Implementation details
  5. Trajectories


1. Overview

One important aspect of dynamical systems modeling applied to scientific research is the appropriate and efficient use of experimental data for guiding model development. Models that are largely determined from the analysis of experimental data are sometimes known as "data-driven" models.

Under the direction of [WWW] John Guckenheimer, we are trying to facilitate data-driven modeling in a number of ways.

2. Parameter estimation and model fitting

The ModelSpec classes allow easier manipulation of the components that go into developing complex models that are intended to be fitted to experimental data. In combination with this, parameter estimation utilities are provided that wrap around those from SciPy in a way to ease their use in hierarchical model search algorithms. The latter are provided in ParamEst.py. Several examples of this are provided in the PyDSTool/tests directory, for instance pest_test3.py.

3. Toolbox utilities

As part of the supplied PyDSTool/Toolbox directory we offer prototype Python code for dimensional analysis (the "correlation" and "pointwise" fractal dimensions of a data set). These can aid the identification of low-dimensional sub-manifolds in high dimensional data sets, and are sensitive to nonlinear structures in data. This analysis can complement other forms of analysis, such as principal component analysis (PCA), and nonlinear manifold learning techniques such as LLE, LTSA, and Isomap.

See the ToolboxDocumentation page for more details.

4. Data-based external input signals to dynamical systems

4.1. Introduction

An exciting feature of our package is the ability to treat discrete data as an input signal to the right-hand side of an ODE, DAE or a difference equation. This is supported through the Pointset class, instances of which can be passed as "external inputs" to an appropriate Generator sub-class constructor. Both ODE and difference equation Generators support this.

The utility of this feature in model development comes in testing a candidate model under input conditions consistent with those used in an experiment on a physical test system. The output of the model and physical systems can be compared most effectively when their inputs are equal. A measure of error between the output trajectories could be used to guide a parameter fitting process for the model, for instance.

4.2. Implementation details

A pre-computed Trajectory of many variables, a single Variable or a Pointset object can be supplied as the value of an inputs key to the initialization of an appropriate type of Generator (ODE and map generators). In the first instance, all the named dependent variables in the trajectory will be used as external inputs. In the second two cases, a single input is defined for each Variable or Pointset provided. Note that only trajectories and variables defined from an underlying mesh of discrete points can be used. In order to pass an intrinsically smooth trajectory or array as an external input, you need to first sample it to get a pointset (e.g. using the sample trajectory method, or by calling with an array of times for a variable).

While the input signals are defined only at the discrete independent variable values (times) given in the variable/pointset, the Generators will linearly interpolate between the points in order to find any necessary values for the inputs at the required integration time steps. Ideally we'd support spline interpolation up to the order of our ODE integrators, as that would ensure that the integration steps are guaranteed to converge. In the meantime we encourage high resolution input arrays so that discontinuous changes in the data are as small as possible. Thus, in order to achieve the best accuracy when integrating ODEs in this way, it is up to the user to provide a sufficiently fine time resolution in the input data so that "aliasing" effects do not occur.

ODEsystem Generators only accept continuously-valued inputs. The MapSystem Generator accepts both discrete and continuous-valued external inputs. If a continuous input is provided, it will be sampled at integer values of "time".

/!\ Important: The domains of the external inputs can be arbitrary. For any part of the time domain of the Generator's trajectory calculation that does not correspond to defined input values, those input values will be assumed to be zero.

All the integrators support events under external input conditions, and the inputs can be changed between calls to compute (using the set method), so that the external input feature can have maximally flexible utility in hybrid system modelling scenarios.

5. Trajectories

The Trajectory class can be built by Generators that convert time-series data (or other kinds of data set) into a continuous representation of a curve. By default, this is performed by linear interpolation for all trajectories, but support for splines can be expected when we implement Taylor series integration methods for ODEs. In this way, trajectories generated by numerical integration and from direct physical measurement are given equal status as Python objects, so that they can transparently share the same analytical tools.

last edited 2006-09-19 21:58:37 by RobClewley