Hello, I am studying sensitivity analysis recently. In an uncertain and complex environment, I cannot build an accurate mathematical model. However, I have input data and corresponding output data. How can I get the degree of influence of input variables on output? Thank you!
A first simple check is to compute the (rank) correlation coefficients between each input parameter X_i and the output Y. If there are monotonic relationships between inputs and outputs, coefficients close to zero mean “unimportant variables”. Such an approach works however only for linear or monotonic input/output relationships. In general, global sensitivity analysis would be more robust.
If the input parameters are statistically independent (which you can see by computing the correlation matrix of your input data set, and also check with a scatterplot that there is no functional dependence between some parameters) then you can use Sobol’ indices for sensitivity analysis.
One way is to build a surrogate model such as polynomial chaos expansions or Kriging with your data. Global sensitivity analysis however requires that you specify the probabilistic distributions of your input parameters. This can be easily done using the “statistical inference” module of UQLab with your input data. Once you have a PCE or a Kriging model, you can compute the Sobol’ indices at low cost to carry out sensitivity analysis.
All the tools and example files for such an analysis are available in UQLab examples. The links to the user manuals listed above in the text give you some entry points to the relevant methodology and literature, and could be useful even if you don’t use UQLab.
Hello, thank you very much for your reply. There is a problem I don’t understand. In UQLab, Sobol’ indices sensitivity analysis requires an exact function expression (for example, in the case analysis of Sobol’ indices, the function is uq_borehole), which is the main reason why I cannot use it. I am currently analyzing the life degradation of a mechanical system, which is composed of four motion units. In practical engineering applications, I use measurement technology to obtain the data of the four units and the system. My purpose is to analyze the sensitivity of these four units to the system.
As mentioned above, you should use your data to first build a model like polynomial expansion or Kriging.
Such a MODEL object is in fact a function in UQLab, that you can evaluate on new inputs, but also use for your subsequent sensitivity analysis.
Hello, I am interresting in this discussion. I am facing the same problem. I need to conduct sensitivity analysis of five inputs and one output variables. The output is obtained after simulation. But I don’t understand how to create a customize function for my analysis as in the case of uq_borehole function. Do I need to create a new function. I found you talk about surrogate models ( [polynomial chaos expansions ]) and think create a surrogate base on my dataset before conducting any sensistivity on variable is like inverse problem. I need to study the sensitivity of each variable before create surrogate. Any answers are welcome. Thank!
As @bsudret mentioned in his previous answer, you can use your data to first build a surrogate model like polynomial chaos expansion or Kriging (within UQLab). Then, this model can be used as a function in UQLab for sensitivity analysis.
To build a surrogate model from existing data, the input matrix X and the associated model responses Y are passed into UQLab by
MetaOpts.ExpDesign.X = X; MetaOpts.ExpDesign.Y = Y;
Please refer to Section 4 of this example for the usage of polynomial chaos expansions and Section 3 of this one for Kriging. Moreover, the associated manuals are also very useful.
Once the UQLab model is constructed, you can use it for sensitivity analysis as a standard function (e.g., Section 4.2 of this example).