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подходящей формы вместо 2Dnp.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]
Для более подробного примера см. Тест Бартлетта на равенство дисперсий.