1
1
using DiffEqBayes, OrdinaryDiffEq, ParameterizedFunctions, Distances, StatsBase, RecursiveArrayTools
2
- using Test
2
+ using Test, Distributions
3
3
4
4
# One parameter case
5
5
f1 = @ode_def begin
@@ -20,15 +20,33 @@ bayesian_result = abc_inference(prob1,Tsit5(),t,data,priors;
20
20
21
21
@test mean (bayesian_result. parameters, weights (bayesian_result. weights)) ≈ 1.5 atol= 0.1
22
22
23
+ priors = [Normal (1. ,0.01 ),Normal (1. ,0.01 ),Normal (1.5 ,0.01 )]
24
+ bayesian_result = abc_inference (prob1,Tsit5 (),t,data,priors;
25
+ num_samples= 500 ,ϵ = 0.001 ,sample_u0= true )
26
+
27
+ meanvals = mean (bayesian_result. parameters, weights (bayesian_result. weights), 1 )
28
+ @test meanvals[1 ] ≈ 1. atol= 0.1
29
+ @test meanvals[2 ] ≈ 1. atol= 0.1
30
+ @test meanvals[3 ] ≈ 1.5 atol= 0.1
31
+
23
32
sol = solve (prob1,Tsit5 (),save_idxs= [1 ])
24
33
randomized = VectorOfArray ([(sol (t[i]) + .01 randn (1 )) for i in 1 : length (t)])
25
34
data = convert (Array,randomized)
26
-
35
+ priors = [ Normal ( 1.5 , 0.01 )]
27
36
bayesian_result = abc_inference (prob1,Tsit5 (),t,data,priors;
28
37
num_samples= 500 ,ϵ = 0.001 ,save_idxs= [1 ])
29
38
30
39
@test mean (bayesian_result. parameters, weights (bayesian_result. weights)) ≈ 1.5 atol= 0.1
31
40
41
+ priors = [Normal (1. ,0.01 ),Normal (1.5 ,0.01 )]
42
+ bayesian_result = abc_inference (prob1,Tsit5 (),t,data,priors;
43
+ num_samples= 500 ,ϵ = 0.001 ,sample_u0= true ,save_idxs= [1 ])
44
+
45
+ meanvals = mean (bayesian_result. parameters, weights (bayesian_result. weights), 1 )
46
+ @test meanvals[1 ] ≈ 1. atol= 0.1
47
+ @test meanvals[2 ] ≈ 1.5 atol= 0.1
48
+
49
+
32
50
# custom distance-function
33
51
weights_ = ones (size (data)) # weighted data
34
52
for i = 1 : 3 : length (data)
@@ -42,6 +60,7 @@ distfn = function (d1, d2)
42
60
end
43
61
return sqrt (d)
44
62
end
63
+ priors = [Normal (1.5 ,0.01 )]
45
64
bayesian_result = abc_inference (prob1,Tsit5 (),t,data,priors;
46
65
num_samples= 500 , ϵ = 0.001 ,
47
66
distancefunction = distfn)
0 commit comments