Estimating parameter and function in an ODE model

Hi all,

I’m working on an ODE model where I want to infer a parameter μ and a function ϕ(t), and I’m looking for recommendations for tools or approaches in Julia to solve this problem. My dataset is small, with just 7 data points in the form (t, n).

The model is given by:

\frac{dn}{dt} = \phi(t) - \mu \, n(t), \quad n(t=0) = 0

I’m considering two possible approaches for modeling ϕ(t):

  1. Gaussian Process (GP) for a non-parametric approach.
  2. Neural Networks (NNs) to approximate ϕ(t), but with strong regularization given the limited data.

Which approach and related packages would you recommend in Julia for this problem?

Any guidance or relevant examples would be greatly appreciated!

Thanks in advance for your help!

See for example Parameter Estimation of Ordinary Differential Equations · SciMLSensitivity.jl

For your case here, I’d recommend using DataInterpolations.jl to represent the phi via a spline at a bunch of points, and differentiate w.r.t. those points.

Isn’t at least anything known/assumed about \phi(t)?

1 Like

Thank you for your suggestion!

I’ll definitely look into SciMLSensitivity.jl and explore how to use it.

In my case, I can indeed make some reasonable assumptions: I would assume that \mu > 0 and \phi(t) > 0 for all t. These constraints are physically meaningful in the context of my problem, and incorporating them into the model could help improve the robustness of the inference, but I would like to keep the function \phi(t) as flexible as possible without overfitting.

1 Like

Any other assumption? Can continuity (or perhaps even smoothnesss) of \phi(t) be assumed? Is some upper bound on the amplitude of \phi(t) known?

Yes, I can assume that ϕ(t) is continuous and smooth. However, I’m not sure how to determine or set an upper bound.