scipy.stats.

anderson_ksamp#

scipy.stats.anderson_ksamp(образцы, midrank=True, *, метод=None)[источник]#

Тест Андерсона-Дарлинга для k-выборок.

k-выборочный критерий Андерсона-Дарлинга является модификацией одновыборочного критерия Андерсона-Дарлинга. Он проверяет нулевую гипотезу о том, что k выборок взяты из одной и той же совокупности, без необходимости указывать функцию распределения этой совокупности. Критические значения зависят от количества выборок.

Параметры:
образцыпоследовательность 1-D array_like

Массив выборочных данных в массивах.

midrankbool, необязательно

Тип теста Андерсона-Дарлинга, который вычисляется. По умолчанию (True) — это тест среднего ранга, применимый к непрерывным и дискретным популяциям. Если False, используется эмпирическое распределение правой стороны.

методPermutationMethod, необязательный

Определяет метод, используемый для вычисления p-значения. Если метод является экземпляром PermutationMethod, p-значение вычисляется с использованием scipy.stats.permutation_test с предоставленными параметрами конфигурации и другими соответствующими настройками. В противном случае p-значение интерполируется из табличных значений.

Возвращает:
resAnderson_ksampResult

Объект, содержащий атрибуты:

статистикаfloat

Нормализованная статистика теста Андерсона-Дарлинга для k выборок.

critical_valuesмассив

Критические значения для уровней значимости 25%, 10%, 5%, 2.5%, 1%, 0.5%, 0.1%.

p-значениеfloat

Приблизительное p-значение теста. Если метод не предоставлено, значение ограничивается снизу/сверху на уровне 0.1% / 25%.

Вызывает:
ValueError

Если предоставлено менее 2 выборок, выборка пуста или в выборках нет различных наблюдений.

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

ks_2samp

2-выборочный тест Колмогорова-Смирнова

anderson

одновыборочный тест Андерсона-Дарлинга

Примечания

[1] определяет три версии k-выборочного теста Андерсона-Дарлинга: одну для непрерывных распределений и две для дискретных распределений, в которых могут возникать связи между выборками. По умолчанию эта процедура вычисляет версию, основанную на среднеранговой эмпирической функции распределения. Этот тест применим к непрерывным и дискретным данным. Если midrank установлен в False, используется правосторонняя эмпирическая функция распределения для теста дискретных данных. Согласно [1], две дискретные тестовые статистики различаются лишь незначительно, если несколько коллизий из-за ошибок округления возникают в тесте, не скорректированном на связи между выборками.

Критические значения, соответствующие уровням значимости от 0.01 до 0.25, взяты из [1]. p-значения округляются вниз / ограничиваются сверху на уровне 0.1% / 25%. Поскольку диапазон критических значений может быть расширен в будущих выпусках, рекомендуется не тестировать p == 0.25, а скорее p >= 0.25 (аналогично для нижней границы).

Добавлено в версии 0.14.0.

Ссылки

[1] (1,2,3)

Scholz, F. W и Stephens, M. A. (1987), K-выборочные тесты Андерсона-Дарлинга, Journal of the American Statistical Association, Vol. 82, pp. 918-924.

Примеры

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> res = stats.anderson_ksamp([rng.normal(size=50),
... rng.normal(loc=0.5, size=30)])
>>> res.statistic, res.pvalue
(1.974403288713695, 0.04991293614572478)
>>> res.critical_values
array([0.325, 1.226, 1.961, 2.718, 3.752, 4.592, 6.546])

Нулевая гипотеза о том, что две случайные выборки происходят из одного распределения, может быть отклонена на уровне 5%, потому что возвращённое тестовое значение больше критического значения для 5% (1.961), но не на уровне 2.5%. Интерполяция даёт приблизительное p-значение 4.99%.

>>> samples = [rng.normal(size=50), rng.normal(size=30),
...            rng.normal(size=20)]
>>> res = stats.anderson_ksamp(samples)
>>> res.statistic, res.pvalue
(-0.29103725200789504, 0.25)
>>> res.critical_values
array([ 0.44925884,  1.3052767 ,  1.9434184 ,  2.57696569,  3.41634856,
  4.07210043, 5.56419101])

Нулевая гипотеза не может быть отвергнута для трёх выборок из одинакового распределения. Сообщённое p-значение (25%) было ограничено и может быть не очень точным (поскольку соответствует значению 0.449, тогда как статистика равна -0.291).

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

>>> method = stats.PermutationMethod(n_resamples=9999, random_state=rng)
>>> res = stats.anderson_ksamp(samples, method=method)
>>> res.pvalue
0.5254