scipy.stats.

shapiro#

scipy.stats.shapiro(x, *, ось=None, nan_policy='propagate', keepdims=False)[источник]#

Выполнить тест Шапиро-Уилка на нормальность.

Критерий Шапиро-Уилка проверяет нулевую гипотезу о том, что данные были взяты из нормального распределения.

Параметры:
xarray_like

Массив выборочных данных. Должен содержать не менее трёх наблюдений.

осьint или None, по умолчанию: None

Если это целое число, ось входных данных, по которой вычисляется статистика. Статистика каждого среза по оси (например, строки) входных данных появится в соответствующем элементе вывода. Если None, вход будет сведён в одномерный массив перед вычислением статистики.

nan_policy{‘propagate’, ‘omit’, ‘raise’}

Определяет, как обрабатывать входные значения NaN.

  • propagate: если NaN присутствует в срезе оси (например, строке), вдоль которой вычисляется статистика, соответствующая запись вывода будет NaN.

  • omit: NaN будут пропущены при выполнении расчета. Если в срезе оси, вдоль которого вычисляется статистика, остается недостаточно данных, соответствующая запись вывода будет NaN.

  • raise: если присутствует NaN, то ValueError будет вызвано исключение.

keepdimsbool, по умолчанию: False

Если установлено значение True, оси, которые были сокращены, остаются в результате как размерности с размером один. С этой опцией результат будет корректно транслироваться относительно входного массива.

Возвращает:
статистикаfloat

Тестовая статистика.

p-значениеfloat

P-значение для проверки гипотезы.

Смотрите также

anderson

Тест Андерсона-Дарлинга на нормальность

kstest

Критерий Колмогорова-Смирнова для проверки согласия.

Тест Шапиро-Уилка на нормальность

Расширенный пример

Примечания

Используемый алгоритм описан в [4] но параметры цензурирования, как описано, не реализованы. Для N > 5000 статистика критерия W точна, но p-значение может быть неточным.

Начиная с SciPy 1.9, np.matrix входные данные (не рекомендуется для нового кода) преобразуются в np.ndarray перед выполнением вычисления. В этом случае результатом будет скаляр или np.ndarray подходящей формы вместо 2D np.matrix. Аналогично, хотя маскированные элементы маскированных массивов игнорируются, результатом будет скаляр или np.ndarray вместо маскированного массива с mask=False.

Ссылки

[2]

Shapiro, S. S. & Wilk, M.B, "An analysis of variance test for normality (complete samples)", Biometrika, 1965, Vol. 52, pp. 591-611, DOI:10.2307/2333709

[3]

Razali, N. M. & Wah, Y. B., "Сравнение мощности тестов Шапиро-Уилка, Колмогорова-Смирнова, Лилиефорса и Андерсона-Дарлинга", Journal of Statistical Modeling and Analytics, 2011, Vol. 2, pp. 21-33.

[4]

Ройстон П., «Замечание AS R94: Замечание к алгоритму AS 181: W-тест на нормальность», 1995, Applied Statistics, Том 44, DOI:10.2307/2986146

Примеры

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> x = stats.norm.rvs(loc=5, scale=3, size=100, random_state=rng)
>>> shapiro_test = stats.shapiro(x)
>>> shapiro_test
ShapiroResult(statistic=0.9813305735588074, pvalue=0.16855233907699585)
>>> shapiro_test.statistic
0.9813305735588074
>>> shapiro_test.pvalue
0.16855233907699585

Для более подробного примера см. Тест Шапиро-Уилка на нормальность.