Hi,
I’ve been working with DifferentialEquations Package -
I am ready to run some global sensitivity analysis (GSA)
I noticed that the way to input the ranges of evaluation goes something like this
Let’s say my parameter p=1 and I want to calculate GSA using morris.sensitivity on a logarithmic range between 1/100 and 100
for example-
Let’s say
t = collect(range(0, stop=10, length=20))
p=1
p_range = [p/100, p*100]
psteps =11
# m = DiffEqSensitivity.morris_sensitivity(An_ODE_tProb,Rodas5(),t,p_ranges,p_steps, relative_scale=false)
If I am correct the range on which Morris will be evaluated for p is equivalent to
collect(range(1.0/100, length=11, stop=1.0*100))
11-element Array{Float64,1}:
0.01
10.009
20.008
30.007
40.006
50.005
60.004
70.003
80.002
90.001
100.0
Is this correct?
If this is true consider that a logscale would be a better range to sample through the different
orders of magnitude for the parameter in question-
for example-
something like this
10 .^range(log10(p/100), length=11, stop=log10(p*100))
samples through
11-element Array{Float64,1}:
0.01
0.025118864315095794
0.06309573444801933
0.15848931924611132
0.3981071705534972
1.0
2.51188643150958
6.309573444801933
15.848931924611133
39.810717055349734
100.0
Am I right that the parameter space is divided linearly and not logarithmic?
If so is there a way anyone can think to specify a logarithmic range for the parameter space given that
DiffEqSensitivity.morris_sensitivity takes a list of lower and upper limits and number of steps for each parameter and not a simple list of values?
thanks
A