python - stats - Scipy Normaltest ¿cómo se usa?
statistical test scipy (2)
Necesito usar normaltest en scipy para probar si el conjunto de datos es normal. Pero no puedo encontrar buenos ejemplos de cómo usar scipy.stats.normaltest
.
Mi conjunto de datos tiene más de 100 valores.
Primero descubrí que scipy.stats.normaltest es casi lo mismo. La biblioteca mstats se usa para matrices enmascaradas. Arrays donde puede marcar los valores como inválidos y no incluirlos en el cálculo.
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"
"Tradicionalmente, en las estadísticas, se necesita un valor p de menos de 0,05 para rechazar la hipótesis nula". - http://mathforum.org/library/drmath/view/72065.html
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
devuelve una 2-tupla de la estadística chi-cuadrado, y el valor p asociado. Dada la hipótesis nula de que x
proviene de una distribución normal, el valor p representa la probabilidad de que se vea una estadística chi cuadrado que sea grande (o más grande).
Si el p-val es muy pequeño, significa que es poco probable que los datos provengan de una distribución normal. Por ejemplo:
In [15]: y = stats.uniform.rvs(size = 100)
In [16]: stats.normaltest(y)
Out[16]: (31.487039026711866, 1.4543748291516241e-07)