Метод Бокса-Кокса
Материал из MachineLearning.
| Строка 6: | Строка 6: | ||
:<tex> y_i^{\lambda} = \begin{cases}\frac{y_i^\lambda-1}{\lambda},&\text{if } \lambda \neq 0,\\ \log{(y_i)},& \text{if } \lambda = 0.\end{cases}</tex>  | :<tex> y_i^{\lambda} = \begin{cases}\frac{y_i^\lambda-1}{\lambda},&\text{if } \lambda \neq 0,\\ \log{(y_i)},& \text{if } \lambda = 0.\end{cases}</tex>  | ||
| - | Параметр   | + | Параметр <tex>\lambda</tex> можно выбирать, максимизируя логарифм правдоподобия.  | 
Еще один способ поиска оптимального значения параметра основан на поиске максимальной величины коэффициента корреляции между квантилями функции нормального распределения и отсортированной преобразованной последовательностью.   | Еще один способ поиска оптимального значения параметра основан на поиске максимальной величины коэффициента корреляции между квантилями функции нормального распределения и отсортированной преобразованной последовательностью.   | ||
Версия 22:22, 28 декабря 2013
В реальности часто приходится иметь дело со статистическими данными, которые по тем или иным причинам не проходят тест на нормальность. В этой ситуации есть два выхода: либо обратиться к непараметрическим методам, либо воспользоваться специальными методами, позволяющими преобразовать исходную «ненормальную статистику» в «нормальную». Среди множества таких методов преобразований одним из лучших (при неизвестном типе распределения) считается преобразование Бокса-Кокса.
Содержание | 
Вид преобразования
Для исходной последовательности  однопараметрическое преобразование Бокса-Кокса с параметром 
 определяется следующим образом:
Параметр  можно выбирать, максимизируя логарифм правдоподобия.
Еще один способ поиска оптимального значения параметра основан на поиске максимальной величины коэффициента корреляции между квантилями функции нормального распределения и отсортированной преобразованной последовательностью. 
Модификации
Так как исходный метод предполагает работу только с положительными величинами, было предложено несколько модификаций, учитывающих нулевые и отрицательные значения.
Самый очевидный вариант - сдвиг всех значений на константу   так, чтобы выполнялось условие 
. После этого преобразование выглядит так:
Еще более общая форма:
где .
Пример
В системе 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
 

