-
Notifications
You must be signed in to change notification settings - Fork 87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sobol index considering MvNormal distribution #364
Comments
So there are a few of things to note. When it comes to sum smaller or larger than one, your results seems to be valid. Sum of main indices can be smaller than 1 and Sum of total indices can be larger. Second, as a general rule of thumb, Sobol indices for dependent random variables is a hard problem. Third, Rosenblatt tranformation technique does not work with Sobol indices as you are now measuring the wrong thing. Sobol is a measure between input and output, but with the transformation you effectively replacing your input with new more managable ones. So what are you left with then? I think your best bet is Saltellis method (also described in the wikipedia article). |
Hi Jonathan, I see your point about the sums, it completely makes sense! Regarding your 3rd point, I have run an experiment, comparing 1st order Sobol indices obtained by Quasi-Monte Carlo using Saltelli method and PCE with the Rosenblatt transformation approach described above. Both approaches seem to produce the same result, expect at t=0. The model I've used is the Coffee cup, where the dependency between kappa and T_env parameters is introduced using cp.MvNormal(). The correlation between the variables is quite large, with Pearson coeff. 0.83. Could you please extend your argument why this 'Rosenblatt transformation technique does not work with Sobol indices'? Could you maybe point me to some more mathematical reasoning behind this? |
Sorry the late reply. My kid's kindergarten has been hit by the omicron variant and we're stuck in quarentine. Rosenblatt-transformation is in its essence a variable switch. Instead of looking at Sobol indices is by its design an interaction between input and output. For |
Describe your problem
Hello, I am trying to compute the sensitivity of my model to parameters which are correlated. I use
cp.MvNormal()
to model the distribution of the parameters, using the Cholesky decorrelation algorithm to construct the orthogonal polynomials. But with this approach I get stuck at callingcp.Sens_m(uhat, joint)
which requiresjoint
to be stochastically independent.Initial implementation
Roughly, this is the code that I am using, failing at the last step calling
cp.Sens_m()
Additional context
I've also tried the approach with Rosenblatt transformation, but the 1st order Sobol indices I get seem to be wrong. The sum across the parameters is less than 1, while the total order is greater than 1 (somehow mirror image of the first order sums).
Do you have any advice/recommendations what else should I try? How should I interpret the Sobol indices I've got with the Rosenblatt approach?
The text was updated successfully, but these errors were encountered: