.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_meta_modeling/polynomial_chaos_metamodel/plot_chaos_ishigami_grouped_indices.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_meta_modeling_polynomial_chaos_metamodel_plot_chaos_ishigami_grouped_indices.py: Compute grouped indices for the Ishigami function ================================================= .. GENERATED FROM PYTHON SOURCE LINES 6-7 In this example, we compute grouped Sobol' indices for the :ref:`Ishigami function `. .. GENERATED FROM PYTHON SOURCE LINES 10-15 .. code-block:: Python from openturns.usecases import ishigami_function import openturns as ot ot.Log.Show(ot.Log.NONE) .. GENERATED FROM PYTHON SOURCE LINES 16-17 We load the Ishigami test function from usecases module: .. GENERATED FROM PYTHON SOURCE LINES 17-19 .. code-block:: Python im = ishigami_function.IshigamiModel() .. GENERATED FROM PYTHON SOURCE LINES 20-22 The `IshigamiModel` data class contains the input distribution :math:`X=(X_1, X_2, X_3)` in `im.distributionX` and the Ishigami function in `im.model`. We also have access to the input variable names with: .. GENERATED FROM PYTHON SOURCE LINES 22-25 .. code-block:: Python input_names = im.distributionX.getDescription() .. GENERATED FROM PYTHON SOURCE LINES 26-27 Create a training sample. .. GENERATED FROM PYTHON SOURCE LINES 29-33 .. code-block:: Python N = 100 inputTrain = im.distributionX.getSample(N) outputTrain = im.model(inputTrain) .. GENERATED FROM PYTHON SOURCE LINES 34-35 Create the chaos. .. GENERATED FROM PYTHON SOURCE LINES 37-50 .. code-block:: Python multivariateBasis = ot.OrthogonalProductPolynomialFactory([im.X1, im.X2, im.X3]) selectionAlgorithm = ot.LeastSquaresMetaModelSelectionFactory() projectionStrategy = ot.LeastSquaresStrategy( inputTrain, outputTrain, selectionAlgorithm ) totalDegree = 8 enumfunc = multivariateBasis.getEnumerateFunction() P = enumfunc.getStrataCumulatedCardinal(totalDegree) adaptiveStrategy = ot.FixedStrategy(multivariateBasis, P) chaosalgo = ot.FunctionalChaosAlgorithm( inputTrain, outputTrain, im.distributionX, adaptiveStrategy, projectionStrategy ) .. GENERATED FROM PYTHON SOURCE LINES 51-55 .. code-block:: Python chaosalgo.run() result = chaosalgo.getResult() metamodel = result.getMetaModel() .. GENERATED FROM PYTHON SOURCE LINES 56-57 Print Sobol' indices. .. GENERATED FROM PYTHON SOURCE LINES 59-62 .. code-block:: Python chaosSI = ot.FunctionalChaosSobolIndices(result) print(chaosSI) .. rst-class:: sphx-glr-script-out .. code-block:: none FunctionalChaosSobolIndices - input dimension=3 - output dimension=1 - basis size=26 - mean=[3.50739] - std-dev=[3.70413] | Index | Multi-index | Variance part | |-------|---------------|---------------| | 7 | [0,4,0] | 0.274425 | | 1 | [1,0,0] | 0.191936 | | 6 | [1,0,2] | 0.135811 | | 13 | [0,6,0] | 0.134001 | | 5 | [3,0,0] | 0.122952 | | 10 | [3,0,2] | 0.0856397 | | 3 | [0,2,0] | 0.0237185 | | 11 | [1,0,4] | 0.0112027 | | Input | Name | Sobol' index | Total index | |-------|---------------|---------------|---------------| | 0 | X1 | 0.31752 | 0.559269 | | 1 | X2 | 0.440685 | 0.440794 | | 2 | X3 | 1.87833e-05 | 0.241742 | .. GENERATED FROM PYTHON SOURCE LINES 63-64 We compute the first order indice of the group [0,1]. .. GENERATED FROM PYTHON SOURCE LINES 66-68 .. code-block:: Python chaosSI.getSobolGroupedIndex([0, 1]) .. rst-class:: sphx-glr-script-out .. code-block:: none 0.7582578489711685 .. GENERATED FROM PYTHON SOURCE LINES 69-76 This group collects all the multi-indices containing variables only in this group, including interactions within the group (by decreasing order of significance): * [0,4,0] : 0.279938 * [1,0,0] : 0.190322 * [0,6,0] : 0.130033 * [3,0,0] : 0.12058 * [0,2,0] : 0.0250262 .. GENERATED FROM PYTHON SOURCE LINES 78-80 .. code-block:: Python 0.279938 + 0.190322 + 0.130033 + 0.12058 + 0.0250262 .. rst-class:: sphx-glr-script-out .. code-block:: none 0.7458992 .. GENERATED FROM PYTHON SOURCE LINES 81-82 The difference between the previous sum and the output of `getSobolGroupedIndex` is lower than 0.01, which is the threshold used by the `__str__` method. .. GENERATED FROM PYTHON SOURCE LINES 84-85 We compute the total order indice of the group [1,2]. .. GENERATED FROM PYTHON SOURCE LINES 87-89 .. code-block:: Python chaosSI.getSobolGroupedTotalIndex([1, 2]) .. rst-class:: sphx-glr-script-out .. code-block:: none 0.6824803087795113 .. GENERATED FROM PYTHON SOURCE LINES 90-98 This group collects all the multi-indices containing variables in this group, including interactions with variables outside the group: * [0,4,0] : 0.279938 * [1,0,2] : 0.136823 * [0,6,0] : 0.130033 * [3,0,2] : 0.0837457 * [0,2,0] : 0.0250262 * [1,0,4] : 0.0111867 .. GENERATED FROM PYTHON SOURCE LINES 100-101 .. code-block:: Python 0.279938 + 0.136823 + 0.130033 + 0.0837457 + 0.0250262 + 0.0111867 .. rst-class:: sphx-glr-script-out .. code-block:: none 0.6667526 .. _sphx_glr_download_auto_meta_modeling_polynomial_chaos_metamodel_plot_chaos_ishigami_grouped_indices.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_chaos_ishigami_grouped_indices.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_chaos_ishigami_grouped_indices.py `