web-dev-qa-db-fra.com

Scipy Normaltest comment est-il utilisé?

J'ai besoin d'utiliser normaltest dans scipy pour tester si l'ensemble de données est normal distributet. Mais je ne peux pas trouver de bons exemples pour utiliser scipy.stats.normaltest .

Mon ensemble de données a plus de 100 valeurs.

43
The Demz
In [12]: import scipy.stats as stats

In [13]: x = stats.norm.rvs(size = 100)

In [14]: stats.normaltest(x)
Out[14]: (1.627533590094232, 0.44318552909231262)

normaltest renvoie un 2-Tuple de la statistique chi carré et la valeur p associée. Étant donné l'hypothèse nulle que x provenait d'une distribution normale, la valeur p représente la probabilité qu'une statistique khi-carré aussi grande (ou plus grande) soit vue.

Si le p-val est très petit, cela signifie qu'il est peu probable que les données proviennent d'une distribution normale. Par exemple:

In [15]: y = stats.uniform.rvs(size = 100)

In [16]: stats.normaltest(y)
Out[16]: (31.487039026711866, 1.4543748291516241e-07)
71
unutbu

J'ai d'abord découvert que scipy.stats.normaltest est presque le même. La bibliothèque mstats est utilisée pour les tableaux masqués. Tableaux dans lesquels vous pouvez marquer des valeurs comme non valides et non prises en compte dans le calcul.

import numpy as np
import numpy.ma as ma
from scipy.stats import mstats

x = np.array([1, 2, 3, -1, 5, 7, 3]) #The array needs to be larger than 20, just an example
mx = ma.masked_array(x, mask=[0, 0, 0, 1, 0, 0, 0])
z,pval = mstats.normaltest(mx)

if(pval < 0.055):
    print "Not normal distribution"

"Traditionnellement, dans les statistiques, vous avez besoin d'une valeur de p inférieure à 0,05 pour rejeter l'hypothèse nulle." - http://mathforum.org/library/drmath/view/72065.html

12
The Demz