Skip to content

High density plot

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.LESSER
GPL-3.0
COPYING
Notifications You must be signed in to change notification settings

tupui/othdrplot

 
 

Repository files navigation

|CI|_ |Python|_ |License|_

.. |CI| image:: https://circleci.com/gh/tupui/othdrplot.svg?style=svg
.. _CI: https://circleci.com/gh/tupui/othdrplot

.. |Python| image:: https://img.shields.io/badge/python-2.7,_3.7-blue.svg
.. _Python: https://python.org

.. |License| image:: https://img.shields.io/badge/license-LGPL-blue.svg
.. _License: https://opensource.org/licenses/LGPL

otHDRPlot
=========

What is it?
-----------

This project implements the Functional highest density region boxplot technique [Hyndman2009]_.
It is based on `OpenTURNS <http://www.openturns.org>`_.

When you have functional data, which is to say: a curve, you will want to answer
some questions such as:

* What is the median curve?
* Can I draw a confidence interval?
* Or, is there any outliers?

This module allows you to do exactly this: 

.. code-block:: python

    hdr = ProcessHighDensityRegionAlgorithm(sample)
    hdr.setOutlierAlpha(0.8)
    hdr.run()
    hdr.plotOutlierTrajectories()

The output is the following figure: 

.. image::  doc/images/npfda-elnino-OutlierTrajectoryPlot.png

In the situation where a multivariate sample is given, the 
HighDensityRegionAlgorithm allows to plot the 
regions where the density is associated with a 
given fraction of the population.

.. code-block:: python

    sample = ot.Sample.ImportFromCSVFile('gauss-mixture.csv')
    # Estimate the distribution
    myks = ot.KernelSmoothing()
    sampleDistribution = myks.build(sample)
    # Create the HDR algorithm
    mydp = HighDensityRegionAlgorithm(sample, sampleDistribution)
    mydp.run()
    # Draw contour
    plotData = False
    mydp.plotContour(plotData)
    plt.show()

The output is the following figure: 

.. image::  doc/images/gauss-mixture-OutlierPlot.png

How to install?
---------------

Requirements
............

The dependencies are: 

- Python >= 2.7 or >= 3.3
- `numpy <http://www.numpy.org>`_ >= 0.10
- `OpenTURNS <http://www.openturns.org>`_ >= 1.12
- `matplotlib <https://matplotlib.org>`_ >= 1.5.3


Installation
............

Using the latest python version is prefered! Then to install::

    git clone [email protected]:mbaudin47/othdrplot.git
    cd othdrplot
    python setup.py install

References
----------

.. [Hyndman2009] Rob J Hyndman and Han Lin Shang. Rainb ow plots , bagplots and b oxplots for functional data. Journal of Computational and Graphical Statistics, 19:29-45, 2009

Algorithms
##########

There are two classes:

- HighDensityRegionAlgorithm : Un algorithme pour calculer la densité d'un échantillon de points multidimensionnel
- ProcessHighDensityRegionAlgorithm : Un algorithme pour calculer la densité d'un échantillon de trajectoires 

The HighDensityRegionAlgorithm class
####################################

Algorithme pour calculer la densité d'un échantillon de points multidimensionnel

- Calcul du min. levelset
- Graphique des levelset à 50% et 95%, outliers 
- Calcul des points inliers et outliers
- Ingrédient : Une méthode pour estimer la densité d'un échantillon de points : kernel smoothing, mélange de gaussienne (otmixmod) 

The ProcessHighDensityRegionAlgorithm class
###########################################

Algorithme pour calculer la densité d'un échantillon de trajectoires

- Graphique des trajectoires dans la bande à 50% et 95%, outliers
- Ingrédients : Une méthode de réduction de dimension : ACP


Roadmap
#######

TODO-List  général
******************

- Créer une classe pour l’ACP. Draft de Géraud. Sortir l’ACP de la classe Process pour pouvoir remplacer par KL

TODO-List  HighDensityRegionAlgorithm 
*************************************

- pouvoir créer le graphique avec une dimension supérieure à 2 : utiliser un Pairs avec des lignes de contours (actuellement : uniquement dimension 2)
- créer un exemple pour utiliser un mélange de gaussiennes

TODO-List  ProcessHighDensityRegionAlgorithm 
********************************************

- print the fraction of explained variance in the title
- pouvoir choisir une autre méthode de réduction de dimension, comme par exemple avec la réduction de dimension par Karhunen-Loève (actuellement : uniquement par ACP)
- Pouvoir spécifier la méthode d’estimation de densité que l’on souhaite (actuellement : uniquement KernelSmoothing)
- méthode de Pamphile

About

High density plot

Resources

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.LESSER
GPL-3.0
COPYING

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%