scipy.stats.

normaltest#

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

Проверить, отличается ли выборка от нормального распределения.

Эта функция проверяет нулевую гипотезу о том, что выборка происходит из нормального распределения. Основана на методе Д’Агостино и Пирсона [1], [2] тест, который объединяет асимметрию и эксцесс для получения общего теста на нормальность.

Параметры:
aarray_like

Массив, содержащий выборку для тестирования. Должен содержать не менее восьми наблюдений.

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

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

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

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

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

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

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

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

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

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

s^2 + k^2, где s это z-оценка, возвращаемая skewtest и k это z-оценка, возвращаемая kurtosistest.

p-значениеfloat или массив

Двусторонняя хи-квадрат вероятность для проверки гипотезы.

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

Тест на нормальность

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

Примечания

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

normaltest имеет экспериментальную поддержку совместимых с Python Array API Standard бэкендов в дополнение к NumPy. Пожалуйста, рассмотрите тестирование этих функций, установив переменную окружения SCIPY_ARRAY_API=1 и предоставление массивов CuPy, PyTorch, JAX или Dask в качестве аргументов массива. Поддерживаются следующие комбинации бэкенда и устройства (или других возможностей).

Библиотека

CPU

GPU

NumPy

н/д

CuPy

н/д

PyTorch

JAX

⚠️ нет JIT

⚠️ нет JIT

Dask

⚠️ вычисляет граф

н/д

См. Поддержка стандарта array API для получения дополнительной информации.

Ссылки

[1]

D’Agostino, R. B. (1971), «Универсальный тест на нормальность для умеренных и больших выборок», Biometrika, 58, 341-348

[2]

D’Agostino, R. и Pearson, E. S. (1973), «Тесты на отклонение от нормальности», Biometrika, 60, 613-622

Примеры

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> pts = 1000
>>> a = rng.normal(0, 1, size=pts)
>>> b = rng.normal(2, 1, size=pts)
>>> x = np.concatenate((a, b))
>>> res = stats.normaltest(x)
>>> res.statistic
53.619...  # random
>>> res.pvalue
2.273917413209226e-12  # random

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