Supported Problem Types

Mica.jl is designed to detect changepoints in model-based time series. Instead of relying on statistical shifts (e.g., mean/variance), Mica tracks changes in the parameters of an explicit model.

This section outlines the types of models currently supported by the package.


Model Categories

1. Ordinary Differential Equation (ODE) Models

These models describe the system as a set of continuous-time equations:

  • Suitable for: epidemiology, population dynamics, physics-based systems
  • Requires: a function defining the ODE, a time span (t₀, t₁), and initial conditions
struct ODEModelSpec <: AbstractModelSpec
    model_function::Function
    params
    initial_conditions::Vector{Float64}
    tspan::Tuple{Float64, Float64}
end

Use when your system evolves continuously and smoothly over time.


2. Difference Equation Models

These simulate discrete-time systems where the state evolves via recurrence relations.

  • Suitable for: digital control systems, econometrics, thermal systems
  • Requires: initial value, number of steps, external inputs (optional)
struct DifferenceModelSpec <: AbstractModelSpec
    model_function::Function
    params
    initial_conditions::Float64
    num_steps::Int
    extra_data::Tuple{Vector{Float64}, Vector{Float64}}
end

Use when the system is updated at regular discrete time intervals.


3. Regression Models

Simple predictive models based on a parametric function.

  • Suitable for: trend fitting, linear/nonlinear regression, control baselines
  • Requires: a function, number of time steps, and parameters
struct RegressionModelSpec <: AbstractModelSpec
    model_function::Function
    params
    time_steps::Int
end

Use for interpretable baselines or when data relationships are simple but nonlinear.


Future Extensions

While the current version focuses on ODEs, difference, and regression models, Mica.jl is designed to be extensible.

Planned or possible extensions include:

  • State-space models (e.g., Kalman filters)
  • Agent-based models
  • Hybrid continuous/discrete systems
  • Neural differential equations

If you'd like to contribute new model types or request support, visit the GitHub repository.


Next: Learn how to define and simulate your own model in the Tutorials section.