Hi,
I was trying to calculate the analytical total sensitivity index for Sobol G-function using the default values for a ([0, 1, 4.5, 9, 99, 99, 99, 99]). These values appear to come from Sobol et al (2007; DOI: 10.1016/j.ress.2006.07.001). But the results from SALib do not match the analytical values given in the paper.
I can get matching results with Sobol et al. using the formula from Saltelli et al., (2010; https://doi.org/10.1016/j.cpc.2009.09.018) but this formula appears different to the one used in SALib for the Sobol G-function, see Table below.
| Factor |
Analytic Values from Sobol 2007 |
SALib |
My calculation using Saltelli 2010 |
| 1 |
0.787 |
7.898277850460805327e-01 |
7.871441266592746899e-01 |
| 2 |
0.242 |
2.526836583868056207e-01 |
2.421981928182383448e-01 |
| 3 |
0.034 |
9.731139034486657735e-02 |
3.431691015408282197e-02 |
| 4 |
0.010 |
8.079753785583765335e-02 |
1.046038706523952887e-02 |
| 5 |
1.05e-04 |
7.370723538393519902e-02 |
1.049490519195059676e-04 |
| 6 |
1.05e-04 |
7.370723538393519902e-02 |
1.049490519195059676e-04 |
| 7 |
1.05e-04 |
7.370723538393519902e-02 |
1.049490519195059676e-04 |
| 8 |
1.05e-04 |
7.370723538393519902e-02 |
1.049490519195059676e-04 |
I am unable to find which method SALib is using to calculate the analytic values.
Here is the code I used:
a = [0, 1, 4.5, 9, 99, 99, 99, 99]
vd = np.array([1/3/ (i +1)**2 for i in a])
vtd = np.zeros(vd.shape[0])
total_vtd = np.prod([i + 1 for i in vd])
for i in range(vtd.shape[0]):
vtd[i] = vd[i] * total_vtd / (vd[i] + 1) / _total_variance(a)
_total_variance() is the same one as found in SALib
Best wishes,
Qian
Hi,
I was trying to calculate the analytical total sensitivity index for Sobol G-function using the default values for
a([0, 1, 4.5, 9, 99, 99, 99, 99]). These values appear to come from Sobol et al (2007; DOI: 10.1016/j.ress.2006.07.001). But the results from SALib do not match the analytical values given in the paper.I can get matching results with Sobol et al. using the formula from Saltelli et al., (2010; https://doi.org/10.1016/j.cpc.2009.09.018) but this formula appears different to the one used in SALib for the Sobol G-function, see Table below.
I am unable to find which method SALib is using to calculate the analytic values.
Here is the code I used:
_total_variance()is the same one as found in SALibBest wishes,
Qian