.. 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-15 .. code-block:: default from __future__ import print_function 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 16-17 We define some (classical) distributions : .. GENERATED FROM PYTHON SOURCE LINES 19-23 .. 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 24-28 Sum & difference of distributions --------------------------------- It is easy to compute the sum of distributions. For example : .. GENERATED FROM PYTHON SOURCE LINES 30-35 .. code-block:: default distribution = distribution1 + distribution2 print(distribution) graph = distribution.drawPDF() view = viewer.View(graph) .. image:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_001.png :alt: plot distribution transformation :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 36-37 We might also use substraction even with scalar values : .. GENERATED FROM PYTHON SOURCE LINES 39-44 .. code-block:: default distribution = 3.0 - distribution3 print(distribution) graph = distribution.drawPDF() view = viewer.View(graph) .. image:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_002.png :alt: plot distribution transformation :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 45-49 Product & inverse ----------------- We might also compute the product of two (or more) distributions. For example : .. GENERATED FROM PYTHON SOURCE LINES 51-56 .. code-block:: default distribution = distribution1 * distribution2 print(distribution) graph = distribution.drawPDF() view = viewer.View(graph) .. image:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_003.png :alt: plot distribution transformation :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 57-58 We could also inverse a distribution : .. GENERATED FROM PYTHON SOURCE LINES 60-65 .. code-block:: default distribution = 1 / distribution1 print(distribution) graph = distribution.drawPDF() view = viewer.View(graph) .. image:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_004.png :alt: plot distribution transformation :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 66-67 Or compute a ratio distribution : .. GENERATED FROM PYTHON SOURCE LINES 69-74 .. code-block:: default ratio = distribution2 / distribution1 print(ratio) graph = ratio.drawPDF() view = viewer.View(graph) .. image:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_005.png :alt: plot distribution transformation :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 75-102 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 104-107 .. code-block:: default graph =distribution1.log().drawPDF() view = viewer.View(graph) .. image:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_006.png :alt: plot distribution transformation :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 108-109 And for the `log2` function : .. GENERATED FROM PYTHON SOURCE LINES 111-116 .. 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:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_007.png :alt: plot distribution transformation :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 117-118 If one wants a specific method, user might rely on the :class:`~openturns.CompositeDistribution` class. .. GENERATED FROM PYTHON SOURCE LINES 118-130 .. 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 131-132 We create a 1D normal distribution : .. GENERATED FROM PYTHON SOURCE LINES 132-134 .. code-block:: default antecedent = ot.Normal() .. GENERATED FROM PYTHON SOURCE LINES 135-136 and a 1D transform : .. GENERATED FROM PYTHON SOURCE LINES 136-138 .. code-block:: default f = ot.SymbolicFunction(['x'], ['sin(x)+cos(x)']) .. GENERATED FROM PYTHON SOURCE LINES 139-140 We then create the composite distribution : .. GENERATED FROM PYTHON SOURCE LINES 140-144 .. code-block:: default distribution = ot.CompositeDistribution(f, antecedent) graph = distribution.drawPDF() view = viewer.View(graph) .. image:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_008.png :alt: plot distribution transformation :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 145-146 We can also build a distribution with the simplified construction : .. GENERATED FROM PYTHON SOURCE LINES 146-150 .. code-block:: default distribution = antecedent.exp() graph = distribution.drawPDF() view = viewer.View(graph) .. image:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_009.png :alt: plot distribution transformation :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 151-152 and by using chained operators : .. GENERATED FROM PYTHON SOURCE LINES 152-156 .. code-block:: default distribution = antecedent.abs().sqrt() graph = distribution.drawPDF() view = viewer.View(graph) .. image:: /auto_probabilistic_modeling/distributions/images/sphx_glr_plot_distribution_transformation_010.png :alt: plot distribution transformation :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 157-158 Display all figures .. GENERATED FROM PYTHON SOURCE LINES 158-159 .. code-block:: default plt.show() .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 1.028 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 `_