Dear all,
I’d like to use DifferentialEquations.jl with Turing.jl, I read that this was possible, but I’ve trouble to run it.
Here is a simple try with Lotka-Voltera equation, how to fix it to make it running?
using DifferentialEquations
using Turing
# define Lotka-Voltera model
function odeLotkaVoltera(dx,x,p,t)
dx[1] = x[1]*(p[1]-p[2]*x[2])
dx[2] = x[2]*(p[3]*x[1]-p[4])
end
# Turing Bayesian model
@model probLotkaVoltera(x,y,tspan) = begin
# priors
s ~ InverseGamma(2, 3)
α ~ Normal(0, sqrt(s))
β ~ Normal(0, sqrt(s))
p = [α,β,1.0,1.0]
x0 = [1.0;1.0]
# models
prob = ODEProblem(odeLotkaVoltera,x0,tspan,p)
xProb = prob(1,:)
yProb = prob(2,:)
# likelihood
for i in 1:length(xProb)
x[i] ~ Normal(xProb[i], sqrt(s))
y[i] ~ Normal(yProb[i], sqrt(s))
end
end
# Data
x0 = [1.0;1.0]
p = [2/3,4/3,1.0,1.0]
tspan = (0.0, 10.0)
prob = ODEProblem(odeLotkaVoltera,x0,tspan,p)
sol = solve(prob)
x = sol[1,:]
y = sol[2,:]
# Run sampler, collect results
chnLotkaVoltera = sample(probLotkaVoltera(x, y, tspan), HMC(0.1, 5), 100)