.. 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_data_analysis_distribution_fitting_plot_estimate_normal.py:
Fit a parametric distribution
=============================
In this example we estimate the parameters of a distribution from a given sample.
Once we are settled on a good candidate, we use the corresponding factory to fit
the distribution. Each distribution factory has one or several estimators available.
They are all derived from either the Maximum Likelihood method or from the method of moments (see :ref:`parametric_estimation`).
.. 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)
The Normal distribution
-----------------------
The parameters are estimated by the method of moments.
We consider a sample, here created from a standard normal distribution :
.. code-block:: default
sample = ot.Normal().getSample(1000)
We can estimate a normal distribution with `ǸormalFactory` :
.. code-block:: default
distribution = ot.NormalFactory().build(sample)
We take a look at the estimated parameters with the `getParameter` method :
.. code-block:: default
print(distribution.getParameter())
.. rst-class:: sphx-glr-script-out
Out:
.. code-block:: none
[0.00320214,1.02733]
We draw the fitted distribution
.. code-block:: default
graph = distribution.drawPDF()
graph.setTitle("Fitted Normal distribution")
view = viewer.View(graph)
.. image:: /auto_data_analysis/distribution_fitting/images/sphx_glr_plot_estimate_normal_001.png
:alt: Fitted Normal distribution
:class: sphx-glr-single-img
The Student distribution
------------------------
The parameters of the Student law are estimated by a mixed method of moments and reduces MLE.
We generate a sample from a Student distribution with parameters :math:`\nu=5.0`, :math:`\mu = -0.5` and a scale parameter :math:`\sigma=2.0`.
.. code-block:: default
sample = ot.Student(5.0, -0.5, 2.0).getSample(1000)
We use the factory to build an estimated distribution :
.. code-block:: default
distribution = ot.StudentFactory().build(sample)
We can obtain the estimated parameters with the `getParameter` method :
.. code-block:: default
print(distribution.getParameter())
.. rst-class:: sphx-glr-script-out
Out:
.. code-block:: none
[3.65576,-0.515215,1.84614]
Draw fitted distribution
.. code-block:: default
graph = distribution.drawPDF()
graph.setTitle("Fitted Student distribution")
view = viewer.View(graph)
.. image:: /auto_data_analysis/distribution_fitting/images/sphx_glr_plot_estimate_normal_002.png
:alt: Fitted Student distribution
:class: sphx-glr-single-img
The Pareto distribution
-----------------------
By default the parameters of the Pareto distribution are estimated by least squares.
We use a sample from a Pareto distribution with a scale parameter :math:`\beta=1.0`, a shape parameter :math:`\alpha > 1.0` and a location parameter :math:`\gamma = 0.0`.
.. code-block:: default
sample = ot.Pareto(1.0, 1.0, 0.0).getSample(1000)
Draw fitted distribution
.. code-block:: default
distribution = ot.ParetoFactory().build(sample)
print(distribution.getParameter())
graph = distribution.drawPDF()
graph.setTitle("Fitted Pareto distribution")
view = viewer.View(graph)
plt.show()
.. image:: /auto_data_analysis/distribution_fitting/images/sphx_glr_plot_estimate_normal_003.png
:alt: Fitted Pareto distribution
:class: sphx-glr-single-img
.. rst-class:: sphx-glr-script-out
Out:
.. code-block:: none
[0.787856,0.944192,0.246677]
.. rst-class:: sphx-glr-timing
**Total running time of the script:** ( 0 minutes 0.328 seconds)
.. _sphx_glr_download_auto_data_analysis_distribution_fitting_plot_estimate_normal.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_estimate_normal.py `
.. container:: sphx-glr-download sphx-glr-download-jupyter
:download:`Download Jupyter notebook: plot_estimate_normal.ipynb `
.. only:: html
.. rst-class:: sphx-glr-signature
`Gallery generated by Sphinx-Gallery `_