Метод Бокса-Кокса
Материал из MachineLearning.
(категория, ссылки) |
|||
(1 промежуточная версия не показана) | |||
Строка 1: | Строка 1: | ||
- | В реальности часто приходится иметь дело со статистическими данными, которые по тем или иным причинам не проходят тест на нормальность. В этой ситуации есть два выхода: либо обратиться к непараметрическим методам, либо воспользоваться специальными методами, позволяющими преобразовать исходную «ненормальную статистику» в «нормальную». Среди множества таких методов преобразований одним из лучших (при неизвестном типе распределения) считается преобразование Бокса-Кокса. | + | В реальности часто приходится иметь дело со статистическими данными, которые по тем или иным причинам не проходят [[Проверка статистических гипотез#Критерии нормальности|тест на нормальность]]. В этой ситуации есть два выхода: либо обратиться к непараметрическим методам, либо воспользоваться специальными методами, позволяющими преобразовать исходную «ненормальную статистику» в «нормальную». Среди множества таких методов преобразований одним из лучших (при неизвестном типе распределения) считается преобразование Бокса-Кокса. |
==Вид преобразования== | ==Вид преобразования== | ||
Строка 13: | Строка 13: | ||
Так как исходный метод предполагает работу только с положительными величинами, было предложено несколько модификаций, учитывающих нулевые и отрицательные значения. | Так как исходный метод предполагает работу только с положительными величинами, было предложено несколько модификаций, учитывающих нулевые и отрицательные значения. | ||
- | Самый очевидный вариант - сдвиг всех значений на константу <tex>\alpha</tex> так, чтобы выполнялось условие <tex>\quad (y_i + \ | + | Самый очевидный вариант - сдвиг всех значений на константу <tex>\alpha</tex> так, чтобы выполнялось условие <tex>\quad (y_i + \alpha)> 0, \quad i = 1,\ldots,n</tex>. После этого преобразование выглядит так: |
:<tex> y_i^{\lambda} = \begin{cases}\frac{(y_i+\alpha)^{\lambda}-1}{\lambda},&\text{if } \lambda_1 \neq 0,\\ \log{(y_i+\alpha)},& \text{if } \lambda = 0.\end{cases}</tex> | :<tex> y_i^{\lambda} = \begin{cases}\frac{(y_i+\alpha)^{\lambda}-1}{\lambda},&\text{if } \lambda_1 \neq 0,\\ \log{(y_i+\alpha)},& \text{if } \lambda = 0.\end{cases}</tex> | ||
Строка 54: | Строка 54: | ||
* D. Scott, [http://onlinestatbook.com/2/transformations/box-cox.html "Box-Cox transformation"]. | * D. Scott, [http://onlinestatbook.com/2/transformations/box-cox.html "Box-Cox transformation"]. | ||
* EnWiki: [http://en.wikipedia.org/wiki/Power_transform Power_transform] | * EnWiki: [http://en.wikipedia.org/wiki/Power_transform Power_transform] | ||
+ | |||
+ | [[Категория:Энциклопедия анализа данных]] |
Текущая версия
В реальности часто приходится иметь дело со статистическими данными, которые по тем или иным причинам не проходят тест на нормальность. В этой ситуации есть два выхода: либо обратиться к непараметрическим методам, либо воспользоваться специальными методами, позволяющими преобразовать исходную «ненормальную статистику» в «нормальную». Среди множества таких методов преобразований одним из лучших (при неизвестном типе распределения) считается преобразование Бокса-Кокса.
Содержание |
Вид преобразования
Для исходной последовательности однопараметрическое преобразование Бокса-Кокса с параметром определяется следующим образом:
Параметр можно выбирать, максимизируя логарифм правдоподобия. Еще один способ поиска оптимального значения параметра основан на поиске максимальной величины коэффициента корреляции между квантилями функции нормального распределения и отсортированной преобразованной последовательностью.
Модификации
Так как исходный метод предполагает работу только с положительными величинами, было предложено несколько модификаций, учитывающих нулевые и отрицательные значения.
Самый очевидный вариант - сдвиг всех значений на константу так, чтобы выполнялось условие . После этого преобразование выглядит так:
Еще более общая форма:
где .
Пример
В системе R с использованием пакета AID
:
> data = textile[,1] > shapiro.test(data) Shapiro-Wilk normality test data: data W = 0.7604, p-value = 3.031e-05 > bctr = boxcoxnc(data) > bctr$result sw ad cvm pt sf lt jb ac lambda.hat -0.06 -0.08 -0.1 0.02 -0.06 -0.06 -0.06 -0.04866667 sw.pvalue 1.00 1.00 1.0 1.00 1.00 1.00 1.00 1.00000000 sf.pvalue 1.00 1.00 1.0 1.00 1.00 1.00 1.00 1.00000000 jb.pvalue 1.00 1.00 1.0 1.00 1.00 1.00 1.00 1.00000000
Реализации
- MATLAB: функция
boxcox
изFinancial toolbox
. - R: функция
boxcox
для линейных моделей в пакетеMASS
,boxcoxnc
в пакетеAID
,box.cox
в пакетеcar
.
Ссылки
- Box, Cox (1964) "An Analysis of Transformations"
- Статьи по автоматическому трейдингу и оптимизации стратегий: "Преобразование Бокса-Кокса".
- А.Н. Порунов (2010). "Бокс-Кокс преобразование и иллюзия "нормальности" макроэкономического ряда".
- D. Scott, "Box-Cox transformation".
- EnWiki: Power_transform