scipy.stats.

bartlett#

scipy.stats.bartlett(*образцы, ось=0, nan_policy='propagate', keepdims=False)[источник]#

Выполняет тест Бартлетта на равенство дисперсий.

Тест Бартлетта проверяет нулевую гипотезу, что все входные выборки взяты из популяций с равными дисперсиями. Для выборок из значительно ненормальных популяций тест Левена levene более устойчив.

Параметры:
sample1, sample2, …array_like

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

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

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

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

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

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

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

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

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

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

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

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

p-значениеfloat

P-значение теста.

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

fligner

Непараметрический тест на равенство k дисперсий

levene

Надежный параметрический тест на равенство k дисперсий

Тест Бартлетта на равенство дисперсий

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

Примечания

Conover et al. (1981) исследуют многие существующие параметрические и непараметрические тесты с помощью обширного моделирования и приходят к выводу, что тесты, предложенные Fligner и Killeen (1976) и Levene (1960), оказываются лучшими с точки зрения устойчивости к отклонениям от нормальности и мощности ([3]).

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

Ссылки

[2]

Снедекор, Джордж В. и Кокран, Уильям Г. (1989), Статистические методы, восьмое издание, Издательство Университета штата Айова.

[3]

Парк, К. и Линдсей, Б. Г. (1999). Робастное оценивание масштаба и проверка гипотез на основе квадратичной функции вывода. Технический отчёт #99-03, Центр исследований правдоподобия, Университет штата Пенсильвания.

[4]

Бартлетт, М. С. (1937). Свойства достаточности и статистические тесты. Труды Лондонского королевского общества. Серия A, Математические и физические науки, Том 160, №901, стр. 268-282.

Примеры

Проверить, совпадают ли списки a, b и c происходят из популяций с равными дисперсиями.

>>> import numpy as np
>>> from scipy import stats
>>> a = [8.88, 9.12, 9.04, 8.98, 9.00, 9.08, 9.01, 8.85, 9.06, 8.99]
>>> b = [8.88, 8.95, 9.29, 9.44, 9.15, 9.58, 8.36, 9.18, 8.67, 9.05]
>>> c = [8.95, 9.12, 8.95, 8.85, 9.03, 8.84, 9.07, 8.98, 8.86, 8.98]
>>> stat, p = stats.bartlett(a, b, c)
>>> p
1.1254782518834628e-05

Очень маленькое p-значение предполагает, что популяции не имеют равных дисперсий.

Это неудивительно, учитывая, что выборочная дисперсия b значительно больше, чем у a и c:

>>> [np.var(x, ddof=1) for x in [a, b, c]]
[0.007054444444444413, 0.13073888888888888, 0.008890000000000002]

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