![]() |
Критерий Жака-Бера используется для проверки гипотезы о том, что исследуемая выборка xS является выборкой нормально распределенной случайной величины с неизвестным математическим ожиданием и дисперсией. Как правило, этот критерий применяется перед тем, как использовать методы параметрической статистики, требующие нормальности исследуемых случайных величин.
Для проверки случайной величины на нормальность используется тот факт, что у нормального распределения коэффициент асимметрии и эксцесс равны нолю - отклонение этих величин от нулевого значения может служить мерой отклонения распределения от нормального. На основе выборки строится статистика Жака-Бера

(здесь n - размер выборки), после чего по таблице квантилей распределения вычисляется p-значение, соответствующее полученному значению JB. Следует отметить, что при росте n статистика Жака-Бера сходится к распределению хи-квадрат с двумя степенями свободы, поэтому в практике иногда используют таблицу квантилей распределения хи-квадрат. Однако это является ошибкой - сходимость слишком медленная и неравномерная.
Например, даже при n = 70 (что уже немало) и значении статистики Жака-Бера JB = 5 таблица квантилей распределения хи-квадрат дает нам p-значение, равное 0.08, в то время как на самом деле соответствующее p-значение равно 0.045 - то есть мы можем ошибочно принять гипотезу, которую скорее следовало бы отвергнуть. Поэтому более правильным является использование специально составленной таблицы квантилей распределения Жака-Бера.
Для получения таблицы квантилей был использован метод Монте-Карло. Написанная на C++ программа сгенерировала 3600000 выборок n нормальных чисел (для генерации использовался высококачественный генератор случайных чисел). На основе этих выборок были рассчитаны 3600000 значений JB(xS ), которые были использованы для построения таблицы квантилей для заданного n. Процесс повторялся для каждого n из множества {5, 6, 7, ..., 198, 199, 200, 201, 251, 301, 351, ..., 1901, 1951}. Общее время расчетов на этом этапе заняло несколько десятков часов машинного времени.
Полученная в результате этого таблица квантилей занимала слишком много места (около 2.5 мегабайт в двоичном формате), поэтому следующим этапом стало её сжатие: распределение JB(xS ) для ключевых значений n было сохранено с использованием кусочно-полиномиальной аппроксимации, квантили для промежуточных значений получаются при помощи интерполяции. Для n > 1401 используется асимптотическая аппроксимация.
В результате описанных выше операций была получена аппроксимация распределения Жака-Бера, которая, по мнению автора, достаточна хороша для практического применения. В таблице ниже приведена относительная погрешность аппроксимации при различных значениях p.
P-ЗНАЧЕНИЕ ОТНОСИТЕЛЬНАЯ ПОГРЕШНОСТЬ P (5≤N≤1951) [1, 0.1] менее 1% [0.1, 0.01] менее 2% [0.01, 0.001] менее 6% [0.001, 0] погрешность не измерялась
Анализируя таблицу, можно отметить, что точнее всего получены p-значения, лежащие на интервале [0, 0.01] (этот интервал чаще всего используется для принятия решений). Снижение точности на интервале [0.01, 0.001] обусловлено тем, что чем меньше p-значение, тем меньше вероятность получить его, если нуль-гипотеза верна, и тем больше испытаний требуется для определения соответствующего ему квантиля распределения. Для вычисления p-значений на интервале [0.001, 0] используется асимптотическая аппроксимация, которая, по мнению автора, позволяет получать правдоподобные результаты в представляющем практический интерес диапазоне. Качество этой аппроксимации не измерялось из-за значительных затрат машинного времени, необходимых для осуществления такой проверки.
| C++ | jarquebera subpackage | |
| C# | jarquebera subpackage |
This article is intended for personal use only.
Исходный код на C#
Исходный код на C++
Исходный код на C++, использующий библиотеки MPFR/GMP.
Исходный код GMP доступен на сайте gmplib.org. Исходный код MPFR доступен на сайте www.mpfr.org.
Исходный код на Free Pascal.
Исходный код на Delphi.
Исходный код на VB.NET.
Исходный код на VBA.
Исходный код на Python (CPython и IronPython).
|
ALGLIB® - numerical analysis library, 1999-2012. |