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 выборок, выборка пуста или в выборках нет различных наблюдений.
Смотрите также
Примечания
[1] определяет три версии k-выборочного теста Андерсона-Дарлинга: одну для непрерывных распределений и две для дискретных распределений, в которых могут возникать связи между выборками. По умолчанию эта процедура вычисляет версию, основанную на среднеранговой эмпирической функции распределения. Этот тест применим к непрерывным и дискретным данным. Если midrank установлен в False, используется правосторонняя эмпирическая функция распределения для теста дискретных данных. Согласно [1], две дискретные тестовые статистики различаются лишь незначительно, если несколько коллизий из-за ошибок округления возникают в тесте, не скорректированном на связи между выборками.
Критические значения, соответствующие уровням значимости от 0.01 до 0.25, взяты из [1]. p-значения округляются вниз / ограничиваются сверху на уровне 0.1% / 25%. Поскольку диапазон критических значений может быть расширен в будущих выпусках, рекомендуется не тестировать
p == 0.25, а скорееp >= 0.25(аналогично для нижней границы).Добавлено в версии 0.14.0.
Ссылки
Примеры
>>> 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