forked from mbaudin47/othdrplot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.rst
139 lines (94 loc) · 4.35 KB
/
README.rst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|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