Метод Бокса-Кокса

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
Строка 5: Строка 5:
:<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>, максимизируя логарифм правдоподобия.
 +
Еще один способ поиска оптимального значения параметра основан на поиске максимальной величины коэффициента корреляции между квантилями функции нормального распределения и отсортированной преобразованной последовательностью.
==Модификации==
==Модификации==
Строка 14: Строка 17:
:<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>
 +
Еще более общая форма:
:<tex>\tau(y_i;\lambda, \alpha) = \begin{cases} \frac{(y_i + \alpha)^\lambda - 1}{\lambda (\operatorname{GM}(y))^{\lambda - 1}}, & \text{if } \lambda\neq 0, \\ \operatorname{GM}(y)\ln(y_i + \alpha), & \text{if } \lambda=0,\end{cases}</tex>
:<tex>\tau(y_i;\lambda, \alpha) = \begin{cases} \frac{(y_i + \alpha)^\lambda - 1}{\lambda (\operatorname{GM}(y))^{\lambda - 1}}, & \text{if } \lambda\neq 0, \\ \operatorname{GM}(y)\ln(y_i + \alpha), & \text{if } \lambda=0,\end{cases}</tex>
где <tex>\quad \operatorname{GM}(y) = (y_1\cdots y_n)^{1/n}</tex>.
где <tex>\quad \operatorname{GM}(y) = (y_1\cdots y_n)^{1/n}</tex>.
 +
 +
== Реализации ==
 +
* MATLAB: функция [http://www.mathworks.com/help/finance/boxcox.html <code>boxcox</code>] из <code>Financial toolbox</code>.
 +
* R: функция [http://stat.ethz.ch/R-manual/R-devel/library/MASS/html/boxcox.html <code>boxcox</code>] для линейных моделей в пакете <code>MASS</code>, [http://cran.r-project.org/web/packages/AID/AID.pdf <code>boxcoxnc</code>] в пакете <code>AID</code>, [http://hosho.ees.hokudai.ac.jp/~kubo/Rdoc/library/car/html/box.cox.html <code>box.cox</code>] в пакете <code>car</code>.
== Ссылки ==
== Ссылки ==
Строка 23: Строка 31:
* Статьи по автоматическому трейдингу и оптимизации стратегий: [http://www.mql5.com/ru/articles/363 "Преобразование Бокса-Кокса"].
* Статьи по автоматическому трейдингу и оптимизации стратегий: [http://www.mql5.com/ru/articles/363 "Преобразование Бокса-Кокса"].
* А.Н. Порунов (2010). [http://bijournal.hse.ru/data/2011/01/11/1207996673/2010_2_%D1%81.3-10_%D0%9F%D0%BE%D1%80%D1%83%D0%BD%D0%BE%D0%B2.pdf "Бокс-Кокс преобразование и иллюзия "нормальности" макроэкономического ряда"].
* А.Н. Порунов (2010). [http://bijournal.hse.ru/data/2011/01/11/1207996673/2010_2_%D1%81.3-10_%D0%9F%D0%BE%D1%80%D1%83%D0%BD%D0%BE%D0%B2.pdf "Бокс-Кокс преобразование и иллюзия "нормальности" макроэкономического ряда"].
 +
* [http://onlinestatbook.com/2/transformations/box-cox.html "Преобразование Бокса-Кокса"]

Версия 21:13, 28 декабря 2013

В реальности часто приходится иметь дело со статистическими данными, которые по тем или иным причинам не проходят тест на нормальность. В этой ситуации есть два выхода: либо обратиться к непараметрическим методам, либо воспользоваться специальными методами, позволяющими преобразовать исходную «ненормальную статистику» в «нормальную». Среди множества таких методов преобразований одним из лучших (при неизвестном типе распределения) считается преобразование Бокса-Кокса.

Содержание

Вид преобразования

Для исходной последовательности y = \{ y_1, \ldots, y_n \}, \quad y_i > 0, \quad i = 1,\ldots,n однопараметрическое преобразование Бокса-Кокса с параметром \lambda определяется следующим образом:

 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}

Параметр можно выбирать \lambda, максимизируя логарифм правдоподобия. Еще один способ поиска оптимального значения параметра основан на поиске максимальной величины коэффициента корреляции между квантилями функции нормального распределения и отсортированной преобразованной последовательностью.

Модификации

Так как исходный метод предполагает работу только с положительными величинами, было предложено несколько модификаций, учитывающих нулевые и отрицательные значения.

Самый очевидный вариант - сдвиг всех значений на константу \alpha так, чтобы выполнялось условие \quad (y_i + \lambda_2)> 0, \quad i = 1,\ldots,n. После этого преобразование выглядит так:

 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}

Еще более общая форма:

\tau(y_i;\lambda, \alpha) = \begin{cases} \frac{(y_i + \alpha)^\lambda - 1}{\lambda (\operatorname{GM}(y))^{\lambda - 1}}, & \text{if } \lambda\neq 0, \\ \operatorname{GM}(y)\ln(y_i + \alpha), & \text{if } \lambda=0,\end{cases}

где \quad \operatorname{GM}(y) = (y_1\cdots y_n)^{1/n}.

Реализации

  • MATLAB: функция boxcox из Financial toolbox.
  • R: функция boxcox для линейных моделей в пакете MASS, boxcoxnc в пакете AID, box.cox в пакете car.

Ссылки

Личные инструменты