2.5. Forecast scenarios¶
The example file predation.toml
(shown below) defines all of details that
are needed to generate forecasts.
See the Key Concepts for further information.
Note
A single TOML file may contain multiple forecast scenarios. These can be used to generate separate forecasts for different time periods, locations, observation models, etc.
- The key components are defined in the
[components]
table:- The simulation model (
model
); - The time scale (
time
, either scalar time or date-time); - The prior distribution sampler (
sampler
, seepypfilt.sampler
); and - The output recorder (
summary
).
- The simulation model (
- Prior distributions for each model parameter are defined in the
[prior]
table. - Summary statistics to be recorded in the output file are defined in the
[summary.monitors]
and[summary.tables]
tables. - Various particle filter settings are defined in the
[filter]
table, including:- The number of particles (
particles
); and - The seed for the pseudo-random number generator (
prng_seed
).
- The number of particles (
- The simulation time scale and simulation period are defined in the
[time]
table.
It also defines a single forecast scenario in the [scenario.example]
table, which contains:
- A unique name to identify this scenario (
"Example Scenario"
); - An observation model for \(x(t)\) observations
(
[scenario.example.observations.x]
table); and - The observation model for \(y(t)\) observations
(
[scenario.example.observations.y]
table).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | [components] model = "pypfilt.examples.predation.LotkaVolterra" time = "pypfilt.Scalar" sampler = "pypfilt.sampler.Independent" summary = "pypfilt.summary.HDF5" [time] start = 0.0 until = 15.0 steps_per_unit = 1 [prior] x = { name = "uniform", args.low = 0.5, args.high = 1.5 } y = { name = "uniform", args.low = 0.2, args.high = 0.4 } alpha = { name = "uniform", args.low = 0.6, args.high = 0.8 } beta = { name = "uniform", args.low = 1.2, args.high = 1.4 } gamma = { name = "uniform", args.low = 0.9, args.high = 1.1 } delta = { name = "uniform", args.low = 0.9, args.high = 1.1 } [summary] save_history = true metadata.packages = [ "matplotlib" ] [summary.tables] model_cints.component = "pypfilt.summary.ModelCIs" model_cints.credible_intervals = [ 0, 50, 95 ] forecasts.component = "pypfilt.summary.PredictiveCIs" forecasts.credible_intervals = [ 0, 50, 95 ] [filter] particles = 1000 prng_seed = 42 history_window = -1 resample.threshold = 0.25 regularisation.enabled = true [filter.regularisation.bounds] x = { min = 0, max = 2 } y = { min = 0, max = 2 } alpha = { min = 0, max = 2} beta = { min = 0, max = 2} gamma = { min = 0, max = 2} delta = { min = 0, max = 2} [files] input_directory = "." output_directory = "." delete_cache_file_before_forecast = true delete_cache_file_after_forecast = true [scenario.example] name = "Example Scenario" [scenario.example.observations.x] model = "pypfilt.examples.predation.ObsModel" file = "predation-counts-x.ssv" parameters.sdev = 0.2 descriptor.format.sdev = "0.1f" descriptor.name.sdev = "sdev" [scenario.example.observations.y] model = "pypfilt.examples.predation.ObsModel" file = "predation-counts-y.ssv" parameters.sdev = 0.2 descriptor.format.sdev = "0.1f" descriptor.name.sdev = "sdev" |