Defining an Estimation Engine
The estimation engine is the definition of the method
through which model-fitting will take place, as defined
by Bristlecone's EstimationEngine
type. If you are
competing multiple hypotheses, a single EstimationEngine
will suffice for all model hypotheses.
Forthcoming
Time Modes
Bristlecone can run models in either discrete time, or continuous time. When running models in continuous time, an integration function is required:
Currently only fixed timesteps are supported, but variable timestep support (e.g. for sediment core data) is planned.
Two integration functions are included:
Solver |
Function |
Description |
---|---|---|
Runge-Kutta 4 (MathNet Numerics) |
|
A fourth-order Runge Kutta method to provide approximate solutions to ODE systems. |
Runge-Kutta 547M (Open Solving Library for ODEs - Microsoft Research) |
|
A method based on classic Runge-Kutta, but with automatic error and step size control. See the documentation. |
Optimisation
Bristlecone supports optimisation functions that have the following type signature:
type Optimise<'data> = int -> int -> Domain -> ('data[] -> 'data) -> ('data * 'data []) list
There are two optimsation techniques currently built-in:
Method |
Function |
Description |
---|---|---|
Amoeba (Nelder-Mead) |
|
A gradient-descent method. |
MCMC Random Walk |
|
A method based on classic Runge-Kutta, but with automatic error and step size control. See the documentation. |
Estimation Engines
To use Bristlecone functions requires a configured EstimationEngine
. The easiest way is with the helper functions within the Bristlecone
module:
Function |
Type |
Description |
---|---|---|
|
EstimationEngine |
Default continuous engine |
|
EstimationEngine |
Default discrete model engine |
|
t : Integrate<'a,'b> -> engine: EstimationEngine<'a,'b> -> EstimationEngine<'a,'b> |
Transforms engine to continuous time mode, using the given integrator function. |
|
c: Conditioning -> engine: EstimationEngine<'a,'b> -> EstimationEngine<'a,'b> |
Choose how the start point is chosen when solving the model system. |
*
val int: value: 'T -> int (requires member op_Explicit)
--------------------
type int = int32
--------------------
type int<'Measure> = int