.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_probabilistic_modeling/distributions/plot_distribution_transformation.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_probabilistic_modeling_distributions_plot_distribution_transformation.py: Transform a distribution ======================== .. GENERATED FROM PYTHON SOURCE LINES 6-7 In this example we are going to use distribution algebra and distribution transformation via functions. .. GENERATED FROM PYTHON SOURCE LINES 9-14 .. code-block:: default import openturns as ot import openturns.viewer as viewer from matplotlib import pylab as plt ot.Log.Show(ot.Log.NONE) .. GENERATED FROM PYTHON SOURCE LINES 15-16 We define some (classical) distributions : .. GENERATED FROM PYTHON SOURCE LINES 18-22 .. code-block:: default distribution1 = ot.Uniform(0.0, 1.0) distribution2 = ot.Uniform(0.0, 2.0) distribution3 = ot.WeibullMin(1.5, 2.0) .. GENERATED FROM PYTHON SOURCE LINES 23-27 Sum & difference of distributions --------------------------------- It is easy to compute the sum of distributions. For example : .. GENERATED FROM PYTHON SOURCE LINES 29-34 .. code-block:: default distribution = distribution1 + distribution2 print(distribution) graph = distribution.drawPDF() view = viewer.View(graph) .. image-sg:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_001.png :alt: plot distribution transformation :srcset: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none Trapezoidal(a = 0, b = 1, c = 2, d = 3) .. GENERATED FROM PYTHON SOURCE LINES 35-36 We might also use substraction even with scalar values : .. GENERATED FROM PYTHON SOURCE LINES 38-43 .. code-block:: default distribution = 3.0 - distribution3 print(distribution) graph = distribution.drawPDF() view = viewer.View(graph) .. image-sg:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_002.png :alt: plot distribution transformation :srcset: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none RandomMixture(3 - WeibullMin(beta = 1.5, alpha = 2, gamma = 0)) .. GENERATED FROM PYTHON SOURCE LINES 44-48 Product & inverse ----------------- We might also compute the product of two (or more) distributions. For example : .. GENERATED FROM PYTHON SOURCE LINES 50-55 .. code-block:: default distribution = distribution1 * distribution2 print(distribution) graph = distribution.drawPDF() view = viewer.View(graph) .. image-sg:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_003.png :alt: plot distribution transformation :srcset: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_003.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none ProductDistribution(Uniform(a = 0, b = 1) * Uniform(a = 0, b = 2)) .. GENERATED FROM PYTHON SOURCE LINES 56-57 We could also inverse a distribution : .. GENERATED FROM PYTHON SOURCE LINES 59-64 .. code-block:: default distribution = 1 / distribution1 print(distribution) graph = distribution.drawPDF() view = viewer.View(graph) .. image-sg:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_004.png :alt: plot distribution transformation :srcset: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_004.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none CompositeDistribution=f(Uniform(a = 0, b = 1)) with f=[x]->[1.0 / x] .. GENERATED FROM PYTHON SOURCE LINES 65-66 Or compute a ratio distribution : .. GENERATED FROM PYTHON SOURCE LINES 68-73 .. code-block:: default ratio = distribution2 / distribution1 print(ratio) graph = ratio.drawPDF() view = viewer.View(graph) .. image-sg:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_005.png :alt: plot distribution transformation :srcset: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_005.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none ProductDistribution(Uniform(a = 0, b = 2) * CompositeDistribution=f(Uniform(a = 0, b = 1)) with f=[x]->[1.0 / x]) .. GENERATED FROM PYTHON SOURCE LINES 74-101 Transformation using functions ------------------------------ The library provides methods to get the full distributions of `f(x)` where `f` can be equal to : - `sin`, - `asin`, - `cos`, - `acos`, - `tan`, - `atan`, - `sinh`, - `asinh`, - `cosh`, - `acosh`, - `tanh`, - `atanh`, - `sqr` (for square), - `inverse`, - `sqrt`, - `exp`, - `log`/`ln`, - `abs`, - `cbrt`. For example for the usual `log` transformation : .. GENERATED FROM PYTHON SOURCE LINES 103-106 .. code-block:: default graph = distribution1.log().drawPDF() view = viewer.View(graph) .. image-sg:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_006.png :alt: plot distribution transformation :srcset: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_006.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 107-108 And for the `log2` function : .. GENERATED FROM PYTHON SOURCE LINES 110-115 .. code-block:: default f = ot.SymbolicFunction(['x'], ['log2(x)']) f.setDescription(["X", "ln(X)"]) graph = ot.CompositeDistribution(f, distribution1).drawPDF() view = viewer.View(graph) .. image-sg:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_007.png :alt: plot distribution transformation :srcset: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_007.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 116-117 If one wants a specific method, user might rely on the :class:`~openturns.CompositeDistribution` class. .. GENERATED FROM PYTHON SOURCE LINES 117-129 .. code-block:: default # Create a composite distribution # ------------------------------- # # In this paragraph we create a distribution defined as the push-forward distribution of a scalar distribution by a transformation. # # If we note :math:`\mathcal{L}_0` a scalar distribution, :math:`f: \mathbb{R} \rightarrow \mathbb{R}` a mapping, then it is possible to create the push-forward distribution :math:`\mathcal{L}` defined by # # .. math:: # \mathcal{L} = f(\mathcal{L}_0) # .. GENERATED FROM PYTHON SOURCE LINES 130-131 We create a 1D normal distribution : .. GENERATED FROM PYTHON SOURCE LINES 131-133 .. code-block:: default antecedent = ot.Normal() .. GENERATED FROM PYTHON SOURCE LINES 134-135 and a 1D transform : .. GENERATED FROM PYTHON SOURCE LINES 135-137 .. code-block:: default f = ot.SymbolicFunction(['x'], ['sin(x)+cos(x)']) .. GENERATED FROM PYTHON SOURCE LINES 138-139 We then create the composite distribution : .. GENERATED FROM PYTHON SOURCE LINES 139-143 .. code-block:: default distribution = ot.CompositeDistribution(f, antecedent) graph = distribution.drawPDF() view = viewer.View(graph) .. image-sg:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_008.png :alt: plot distribution transformation :srcset: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_008.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 144-145 We can also build a distribution with the simplified construction : .. GENERATED FROM PYTHON SOURCE LINES 145-149 .. code-block:: default distribution = antecedent.exp() graph = distribution.drawPDF() view = viewer.View(graph) .. image-sg:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_009.png :alt: plot distribution transformation :srcset: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_009.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 150-151 and by using chained operators : .. GENERATED FROM PYTHON SOURCE LINES 151-155 .. code-block:: default distribution = antecedent.abs().sqrt() graph = distribution.drawPDF() view = viewer.View(graph) .. image-sg:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_010.png :alt: plot distribution transformation :srcset: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_010.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 156-157 Display all figures .. GENERATED FROM PYTHON SOURCE LINES 157-158 .. code-block:: default plt.show() .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.689 seconds) .. _sphx_glr_download_auto_probabilistic_modeling_distributions_plot_distribution_transformation.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_distribution_transformation.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_distribution_transformation.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_