Мне нужно использовать normaltest в scipy для тестирования, если набор данных является обычным дистрибутивом. Но я не могу найти хороших примеров, как использовать scipy.stats.normaltest
.
Мой набор данных имеет более 100 значений.
Мне нужно использовать normaltest в scipy для тестирования, если набор данных является обычным дистрибутивом. Но я не могу найти хороших примеров, как использовать scipy.stats.normaltest
.
Мой набор данных имеет более 100 значений.
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
возвращает 2-кортеж статистики хи-квадрат и связанное с ним значение p. Учитывая нулевую гипотезу о том, что x
поступает из нормального распределения, p-значение представляет вероятность того, что статистика хи-квадрата будет видна (или больше).
Если p-val очень мал, это означает, что маловероятно, чтобы данные поступали из нормального распределения. Например:
In [15]: y = stats.uniform.rvs(size = 100)
In [16]: stats.normaltest(y)
Out[16]: (31.487039026711866, 1.4543748291516241e-07)
Сначала я узнал, что scipy.stats.normaltest почти то же самое. Библиотека mstats используется для маскированных массивов. Массивы, в которых вы можете пометить значения как недопустимые и не принимать в расчет.
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"
"Традиционно в статистике вам нужно значение p менее 0,05 для отвергнуть нулевую гипотезу." - http://mathforum.org/library/drmath/view/72065.html