111 votes

Tracé des quantiles à l'aide de SciPy

Comment créer un qq-plot en utilisant Python ?

Supposons que vous disposiez d'un grand ensemble de mesures et que vous utilisiez une fonction de traçage qui prend les valeurs XY en entrée. La fonction doit tracer les quantiles des mesures par rapport aux quantiles correspondants d'une certaine distribution (normale, uniforme...).

Le graphique résultant nous permet alors d'évaluer si notre mesure suit ou non la distribution supposée.

http://en.wikipedia.org/wiki/Quantile-quantile_plot

R et Matlab fournissent tous deux des fonctions prêtes à l'emploi pour cela, mais je me demande quelle serait la méthode la plus propre pour l'implémenter en Python.

3voto

grasshopper Points 3621

2voto

sushmit Points 1590

Vous pouvez utiliser le bokeh

from bokeh.plotting import figure, show
from scipy.stats import probplot
# pd_series is the series you want to plot
series1 = probplot(pd_series, dist="norm")
p1 = figure(title="Normal QQ-Plot", background_fill_color="#E8DDCB")
p1.scatter(series1[0][0],series1[0][1], fill_color="red")
show(p1)

2voto

Ravi G Points 492
import numpy as np 
import pylab 
import scipy.stats as stats
measurements = np.random.normal(loc = 20, scale = 5, size=100)   
stats.probplot(measurements, dist="norm", plot=pylab)
pylab.show()

Ici probplot dessine le graphique des mesures par rapport à la distribution normale qui est spécifiée dans dist="norm".

1voto

Jean A. Points 191

Quelle est la taille de votre échantillon ? Voici une autre option pour tester vos données par rapport à n'importe quelle distribution en utilisant Bibliothèque OpenTURNS . Dans l'exemple ci-dessous, je génère un échantillon x de 1.000.000 de nombres à partir d'une distribution uniforme et je le teste par rapport à une distribution normale. Vous pouvez remplacer x par vos données si vous le remodelez comme suit x= [[x1], [x2], .., [xn]]

import openturns as ot

x = ot.Uniform().getSample(1000000)
g = ot.VisualTest.DrawQQplot(x, ot.Normal())
g

Dans mon carnet de notes Jupyter, je vois : enter image description here

Si vous écrivez un script, vous pouvez le faire plus correctement

from openturns.viewer import View`
import matplotlib.pyplot as plt
View(g)
plt.show()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X