fligner#
- scipy.stats.fligner(*образцы, центр='median', proportiontocut=0.05, ось=0, nan_policy='propagate', keepdims=False)[источник]#
Выполнить тест Флигнера-Киллена на равенство дисперсий.
Тест Флигнера проверяет нулевую гипотезу о том, что все входные выборки происходят из популяций с равными дисперсиями. Тест Флигнера-Киллена свободен от распределения, когда популяции идентичны [2].
- Параметры:
- sample1, sample2, …array_like
Массивы выборочных данных. Не обязательно одинаковой длины.
- центр{‘mean’, ‘median’, ‘trimmed’}, optional
Ключевой аргумент, управляющий тем, какая функция данных используется в вычислении тестовой статистики. По умолчанию — ‘median’.
- proportiontocutfloat, опционально
Когда центр равно 'trimmed', это даёт долю точек данных, которые нужно обрезать с каждого конца. (См.
scipy.stats.trim_mean.) По умолчанию 0.05.- ось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-значение для проверки гипотезы.
Смотрите также
bartlettПараметрический тест на равенство k дисперсий в нормальных выборках
leveneНадежный параметрический тест на равенство k дисперсий
- Тест Флигнера-Киллена на равенство дисперсий
Расширенный пример
Примечания
Как и в тесте Левена, существует три варианта теста Флигнера, которые отличаются мерой центральной тенденции, используемой в тесте. См.
leveneдля получения дополнительной информации.Коновер и др. (1981) исследуют множество существующих параметрических и непараметрических тестов с помощью обширного моделирования и приходят к выводу, что тесты, предложенные Флигнером и Киллином (1976) и Левином (1960), по-видимому, превосходят по устойчивости к отклонениям от нормальности и мощности [3].
Начиная с SciPy 1.9,
np.matrixвходные данные (не рекомендуется для нового кода) преобразуются вnp.ndarrayперед выполнением вычисления. В этом случае результатом будет скаляр илиnp.ndarrayподходящей формы вместо 2Dnp.matrix. Аналогично, хотя маскированные элементы маскированных массивов игнорируются, результатом будет скаляр илиnp.ndarrayвместо маскированного массива сmask=False.Ссылки
[1]Парк, К. и Линдсей, Б. Г. (1999). Робастное оценивание масштаба и проверка гипотез на основе квадратичной функции вывода. Технический отчёт #99-03, Центр исследований правдоподобия, Университет штата Пенсильвания. https://cecas.clemson.edu/~cspark/cv/paper/qif/draftqif2.pdf
[2]Флигнер, М.А. и Киллин, Т.Дж. (1976). Непараметрические двухвыборочные тесты для масштаба. Журнал Американской статистической ассоциации. 71(353), 210-213.
[3]Парк, К. и Линдсей, Б. Г. (1999). Робастное оценивание масштаба и проверка гипотез на основе квадратичной функции вывода. Технический отчёт #99-03, Центр исследований правдоподобия, Университет штата Пенсильвания.
[4]Conover, W. J., Johnson, M. E. and Johnson M. M. (1981). A comparative study of tests for homogeneity of variances, with applications to the outer continental shelf bidding data. Technometrics, 23(4), 351-361.
Примеры
>>> import numpy as np >>> from scipy import stats
Проверить, совпадают ли списки a, b и c происходят из популяций с равными дисперсиями.
>>> 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.fligner(a, b, c) >>> p 0.00450826080004775
Малое p-значение предполагает, что популяции не имеют равных дисперсий.
Это неудивительно, учитывая, что выборочная дисперсия b значительно больше, чем у a и c:
>>> [np.var(x, ddof=1) for x in [a, b, c]] [0.007054444444444413, 0.13073888888888888, 0.008890000000000002]
Для более подробного примера см. Тест Флигнера-Киллена на равенство дисперсий.