I have a simple model for which I have three replicates (data) to be used in inference. I’m new to julia. Right now I’m setting up inference using turing.jl .
My Turing model looks like this :
@model function fit_(data1, data2, data3, prob)
# Prior distributions.
α ~ Uniform(0,0.1)
β ~ Uniform(0,0.1)
γ ~ Uniform(0,0.1)
δ ~ Uniform(0,0.1)
λ ~ Uniform(0,0.2)
ζ ~ Uniform(0,0.2)
σ ~ Uniform(0,2000)
p = [ α, β, γ, δ, λ, ζ]
prob = remake(problem, p=p)
predicted = solve(prob, Tsit5(), saveat=1)'
for i in 1:6
data1[:,i] .~ MvNormal(predicted[:,i], σ^2 * I)
data2[:, i] .~ MvNormal(predicted[:,i], σ^2 * I)
data3[:, i] .~ MvNormal(predicted[:,i], σ^2 * I)
end
return nothing
end
model = fit_(z1, z2, z3 , problem)
Do you guys think its a correct approach ? because model is simple and I inferred same model in r but here i’m not getting correct fitting except for first state in my model.
Model:
function new_model(du, u, p, t)
x, y, z, m, n, r, s = u
α, β, γ, δ, λ, ζ = p
du[1] = - (α + β + γ + δ + λ + ζ ) * x * s
du[2] = α * x * s
du[3] = β * x * s
du[4] = γ * x * s
du[5] = δ * x * s
du[6] = λ * x * s
du[7] = 0
end
true parameters these are random parameters for setting up problem
p = [0.5, 0.2, 0.1, 0.3, 0.4, 0.5]
initial state values
u0 = [2000, 0, 0, 0, 0, 0, 5]
problem = ODEProblem(new_model, u0, (0.0,4.0), p)