Критерий Диболда-Мариано

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

(Различия между версиями)
Перейти к: навигация, поиск
м (Ссылки)
 
(19 промежуточных версий не показаны.)
Строка 1: Строка 1:
{{TOCright}}
{{TOCright}}
-
'''Критерий Диболда-Мариано''' (Diebold-Mariano test) -- статистический тест, позволяющий сравнивать качество прогнозов [[Временной_ряд|временного ряда]] двух предсказательных моделей. Впервые был представлен в работе Диболда и Мариано в 1995 году, где был приведен небольшой обзор тестов такого рода. Этот тест является устойчивым к различным отклонениям от стандартных предположенный о свойствах ошибок прогнозирования. А именно предполагается, что ошибки прогнозирования могут не удовлетворять классическим критериям, т.е. могут не быть нормальными, иметь ненулевой средний уровень, а также быть серийно и одновременно коррелированными.
+
'''Критерий Диболда-Мариано''' (Diebold-Mariano test) — [[Статистический критерий|статистический тест]], позволяющий сравнивать качество прогнозов [[Временной_ряд|временного ряда]] двух предсказательных моделей. Впервые был представлен в работе Диболда и Мариано в 1995 году, где был приведен небольшой обзор тестов такого рода.
-
==Описание==
+
==Обозначения==
-
Пусть
+
<tex>\{y_t\}_{t=1}^T</tex> значения временного ряда,
-
<tex>\{y_t\}_{t=1}^T</tex>, <tex>\{y_{At}\}_{t=1}^T</tex> -- прогнозные значения модели A,
+
-
<tex>\{y_{Bt}\}_{t=1}^T</tex> -- прогнозные значения модели B,
+
-
<tex>\{e_{At}\}_{t=1}^T</tex> и <tex>\{e_{Bt}\}_{t=1}^T</tex>-- остатки прогнозов обеих моделей,
+
-
<tex>g(e)</tex> -- функция потерь,
+
-
<tex>d_{t} = g(e_{At}) - g(e_{Bt}), t=1...T</tex>.
+
-
Если <tex>\{d_{t}\}_{t=1}^T</tex> является слабостационарным временным рядом, то можно показать, что <tex>\sqrt T(\bar d - \mu) \stackrel{d}{\longrightarrow} N(0, f)</tex>, где <tex>\bar d =\frac1T \sum_1^{T} d_t</tex>, <tex>\mu</tex> - неизвестное матожидание процесса, <tex>f</tex> - его дисперсия. Проверямая в критерии гипотеза <tex>H_0</tex>: <tex>\mathbf{E}d=0</tex>, альтернатива (двусторонняя): <tex>\mathbf{E}d\neq0</tex>. Вычисляемая статистика: <tex>S=\frac{\bar d}{\sqrt{(\bar f / T)}}</tex>, где <tex>\bar f = \sum_{t=-\infty}^{t=\infty}\gamma_d(\tau)</tex>, где <tex>\gamma_d(\tau)</tex> -- автоковариация <tex>d</tex> порядка <tex>\tau</tex>. Гипотезе <tex>H_0</tex> соответствует <tex>: S \sim N(0, 1)</tex>.
+
<tex>\{y_{At}\}_{t=1}^T</tex> — прогнозные значения модели A,
 +
<tex>\{y_{Bt}\}_{t=1}^T</tex> — прогнозные значения модели B,
-
==Дополнительно==
+
<tex>\{e_{At}\}_{t=1}^T</tex> и <tex>\{e_{Bt}\}_{t=1}^T</tex> — остатки прогнозов обеих моделей,
-
Рассмотренный способ проверки гипотезы о совпадении каче�ства прогнозов, основанных на различных моделях, является на�дежным для широкого класса функций потерь. В частности, функ�ции потерь не обязаны быть квадратическими или симметричными и непрерывными. Помимо этого, отметим еще раз, что ошибки прогнозирования могут не быть гауссовскими, а также могут иметь ненулевой средний уровень и быть коррелированными (как серий�но, так и одновременно). Последнее допущение особенно важно, поскольку сравниваемые прогнозы являются прогнозами одного и того же временного ряда и основаны на довольно сильно совпа�дающих информационных множествах, вследствие чего ошибки прогнозирования могут быть сильно одновременно коррелирован�ными. Однако ошибки прогнозирования в общем случае являются серийно коррелированными, и предложенный тест позволяет учи�тывать и эту особенность.
+
<tex>g(e)</tex> — функция потерь,
 +
 
 +
<tex>d_{t} = g(e_{At}) - g(e_{Bt}), t=1...T</tex>,
 +
 
 +
гипотеза <tex>H_0</tex>: <tex>\mathbf{E}d=0</tex>, т.е. качество прогнозов одидинаково,
 +
 
 +
альтернатива (двусторонняя): <tex>\mathbf{E}d\neq0</tex>, т.е. качество прогнозов отличается.
 +
 
 +
==Описание==
 +
 
 +
Если <tex>\{d_{t}\}_{t=1}^T</tex> является слабостационарным временным рядом, то можно показать, что <tex>\sqrt T(\bar d - \mu) \stackrel{d}{\longrightarrow} N(0, f)</tex>, где <tex>\bar d =\frac1T \sum_1^{T} d_t</tex>, <tex>\mu</tex> — неизвестное матожидание процесса, <tex>f</tex> — его дисперсия. Вычисляемая статистика: <tex>S=\frac{\bar d}{\sqrt{(\bar f / T)}}</tex>, где <tex>\bar f = \sum_{t=-\infty}^{t=\infty}\gamma_d(\tau)</tex>, где <tex>\gamma_d(\tau)</tex> — автоковариация <tex>d</tex> порядка <tex>\tau</tex>. Гипотезе <tex>H_0</tex> соответствует <tex>S \sim N(0, 1)</tex>.
 +
 
 +
==Широта применения==
 +
Этот тест является устойчивым к различным отклонениям от стандартных предположенный о свойствах ошибок прогнозирования. А именно предполагается, что ошибки прогнозирования могут не удовлетворять классическим критериям, т.е. могут не быть нормальными, иметь ненулевой средний уровень, а также быть серийно и одновременно коррелированными.
 +
 
 +
Также описанный критерий является надежным для широкого класса функций потерь. В частности, функции потерь не обязаны быть квадратическими или симметричными и непрерывными. Помимо этого, ошибки прогнозирования могут не быть гауссовскими, а также могут иметь ненулевой средний уровень и быть коррелированными (как серийно, так и одновременно). Последнее допущение особенно важно, поскольку сравниваемые прогнозы являются прогнозами одного и того же временного ряда и основаны на довольно сильно совпадающих информационных множествах, вследствие чего ошибки прогнозирования могут быть сильно одновременно коррелированными. Однако ошибки прогнозирования в общем случае являются серийно коррелированными, и предложенный тест позволяет учитывать и эту особенность.
Также возможны модификации критерия для односторонних альтернатив и для коротких временных рядов.
Также возможны модификации критерия для односторонних альтернатив и для коротких временных рядов.
 +
==Пример==
 +
Ниже приведен пример использования критерия на языке R. Критерий запускается два раза: в первый раз он отвергает гипотезу об совпадении качества прогнозов, а во второй раз не отвергает.
 +
<pre>
 +
> library(forecast)
 +
> # Test on in-sample one-step forecasts
 +
> f1 <- ets(WWWusage)
 +
> f2 <- auto.arima(WWWusage)
 +
> accuracy(f1)
 +
ME RMSE MAE MPE MAPE MASE ACF1
 +
Training set 0.2528217 3.473243 2.812361 0.2803163 2.22432 0.6214815 0.1923543
 +
> accuracy(f2)
 +
ME RMSE MAE MPE MAPE MASE
 +
Training set 0.04803303 3.10304 2.395923 0.073378 1.914083 0.5294563
 +
ACF1
 +
Training set -0.007904884
 +
> dm.test(residuals(f1),residuals(f2),h=1)
-
==Программные реализации==
+
Diebold-Mariano Test
-
* В MATLAB [http://www.mathworks.com/help/econ/parcorr.html функция parcorr]
+
data: residuals(f1)residuals(f2)
-
* В R [http://stat.ethz.ch/R-manual/R-patched/library/stats/html/acf.html функция pacf] из пакета stats.
+
DM = 2.2181, Forecast horizon = 1, Loss function power = 2, p-value =
-
* В Python [http://statsmodels.sourceforge.net/stable/generated/statsmodels.tsa.stattools.pacf.html#statsmodels.tsa.stattools.pacf функция statsmodels.tsa.stattools.pacf] библиотеки statsmodels.
+
0.02883
 +
alternative hypothesis: two.sided
 +
 
 +
> # Test on out-of-sample one-step forecasts
 +
> f1 <- ets(WWWusage[1:80])
 +
> f2 <- auto.arima(WWWusage[1:80])
 +
> f1.out <- ets(WWWusage[81:100],model=f1)
 +
> f2.out <- Arima(WWWusage[81:100],model=f2)
 +
> accuracy(f1.out)
 +
ME RMSE MAE MPE MAPE MASE ACF1
 +
Training set 0.1202345 3.31996 2.657234 0.06949685 1.39911 0.4390213 0.2341423
 +
> accuracy(f2.out)
 +
ME RMSE MAE MPE MAPE MASE
 +
Training set 0.9983241 3.290295 2.401282 0.6350809 1.356964 0.3967336
 +
ACF1
 +
Training set 0.000574029
 +
> dm.test(residuals(f1.out),residuals(f2.out),h=1)
 +
 
 +
Diebold-Mariano Test
 +
 
 +
data: residuals(f1.out)residuals(f2.out)
 +
DM = 0.054, Forecast horizon = 1, Loss function power = 2, p-value =
 +
0.9575
 +
alternative hypothesis: two.sided
 +
 
 +
</pre>
 +
 
 +
==Программные реализации==
 +
* Для [http://www.mathworks.com/matlabcentral/fileexchange/33979-diebold-mariano-test-statistic Matlab].
 +
* Для R есть функция dm.test из пакета [http://cran.r-project.org/web/packages/forecast/forecast.pdf forecast].
== Ссылки ==
== Ссылки ==
<references />
<references />
-
* [http://www.mathworks.com/help/econ/autocorrelation-and-partial-autocorrelation.html Autocorrelation and Partial Autocorrelation]. MATLAB R2013b Documentation
+
* Francis X. Diebold & Robert S. Mariano, 1994. "Comparing Predictive Accuracy", NBER Technical Working Papers 0169, National Bureau of Economic Research, Inc.
-
* [http://en.wikipedia.org/wiki/Partial_autocorrelation_function Partial Autocorrelation function] on Wikipedia
+
* K. Bouman. Quantitative methods in international finance and macroeconomics. Econometric Institute, 2011. Lecture FEM21004-11
-
* [http://www.machinelearning.ru/wiki/index.php?title=%D0%A1%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%28%D0%BA%D1%83%D1%80%D1%81_%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B9%2C_%D0%9A.%D0%92.%D0%92%D0%BE%D1%80%D0%BE%D0%BD%D1%86%D0%BE%D0%B2%29 Статистический анализ данных (курс лекций, К.В. Воронцов)]
+
-
* Box, G. E. P.; Jenkins, G. M.; Reinsel, G. C. (2008). Time Series Analysis, Forecasting and Control (4th ed.). Hoboken, NJ: Wiley. ISBN 9780470272848.
+
-
 
+
-
[[Категория:Регрессионный анализ]]
+
[[Категория:Прикладная статистика]]
 +
[[Категория:Статистические тесты]]
[[Категория:Анализ временных рядов]]
[[Категория:Анализ временных рядов]]

Текущая версия

Содержание

Критерий Диболда-Мариано (Diebold-Mariano test) — статистический тест, позволяющий сравнивать качество прогнозов временного ряда двух предсказательных моделей. Впервые был представлен в работе Диболда и Мариано в 1995 году, где был приведен небольшой обзор тестов такого рода.

Обозначения

\{y_t\}_{t=1}^T — значения временного ряда,

\{y_{At}\}_{t=1}^T — прогнозные значения модели A,

\{y_{Bt}\}_{t=1}^T — прогнозные значения модели B,

\{e_{At}\}_{t=1}^T и \{e_{Bt}\}_{t=1}^T — остатки прогнозов обеих моделей,

g(e) — функция потерь,

d_{t} = g(e_{At}) - g(e_{Bt}), t=1...T,

гипотеза H_0: \mathbf{E}d=0, т.е. качество прогнозов одидинаково,

альтернатива (двусторонняя): \mathbf{E}d\neq0, т.е. качество прогнозов отличается.

Описание

Если \{d_{t}\}_{t=1}^T является слабостационарным временным рядом, то можно показать, что \sqrt T(\bar d - \mu) \stackrel{d}{\longrightarrow} N(0, f), где \bar d =\frac1T \sum_1^{T} d_t, \mu — неизвестное матожидание процесса, f — его дисперсия. Вычисляемая статистика: S=\frac{\bar d}{\sqrt{(\bar f / T)}}, где \bar f = \sum_{t=-\infty}^{t=\infty}\gamma_d(\tau), где \gamma_d(\tau) — автоковариация d порядка \tau. Гипотезе H_0 соответствует S \sim N(0, 1).

Широта применения

Этот тест является устойчивым к различным отклонениям от стандартных предположенный о свойствах ошибок прогнозирования. А именно предполагается, что ошибки прогнозирования могут не удовлетворять классическим критериям, т.е. могут не быть нормальными, иметь ненулевой средний уровень, а также быть серийно и одновременно коррелированными.

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

Также возможны модификации критерия для односторонних альтернатив и для коротких временных рядов.

Пример

Ниже приведен пример использования критерия на языке R. Критерий запускается два раза: в первый раз он отвергает гипотезу об совпадении качества прогнозов, а во второй раз не отвергает.

> library(forecast)
> # Test on in-sample one-step forecasts
> f1 <- ets(WWWusage)
> f2 <- auto.arima(WWWusage)
> accuracy(f1)
                    ME     RMSE      MAE       MPE    MAPE      MASE      ACF1
Training set 0.2528217 3.473243 2.812361 0.2803163 2.22432 0.6214815 0.1923543
> accuracy(f2)
                     ME    RMSE      MAE      MPE     MAPE      MASE
Training set 0.04803303 3.10304 2.395923 0.073378 1.914083 0.5294563
                     ACF1
Training set -0.007904884
> dm.test(residuals(f1),residuals(f2),h=1)

	Diebold-Mariano Test

data:  residuals(f1)residuals(f2)
DM = 2.2181, Forecast horizon = 1, Loss function power = 2, p-value =
0.02883
alternative hypothesis: two.sided

> # Test on out-of-sample one-step forecasts
> f1 <- ets(WWWusage[1:80])
> f2 <- auto.arima(WWWusage[1:80])
> f1.out <- ets(WWWusage[81:100],model=f1)
> f2.out <- Arima(WWWusage[81:100],model=f2)
> accuracy(f1.out)
                    ME    RMSE      MAE        MPE    MAPE      MASE      ACF1
Training set 0.1202345 3.31996 2.657234 0.06949685 1.39911 0.4390213 0.2341423
> accuracy(f2.out)
                    ME     RMSE      MAE       MPE     MAPE      MASE
Training set 0.9983241 3.290295 2.401282 0.6350809 1.356964 0.3967336
                    ACF1
Training set 0.000574029
> dm.test(residuals(f1.out),residuals(f2.out),h=1)

	Diebold-Mariano Test

data:  residuals(f1.out)residuals(f2.out)
DM = 0.054, Forecast horizon = 1, Loss function power = 2, p-value =
0.9575
alternative hypothesis: two.sided

Программные реализации

  • Для Matlab.
  • Для R есть функция dm.test из пакета forecast.

Ссылки

  • Francis X. Diebold & Robert S. Mariano, 1994. "Comparing Predictive Accuracy", NBER Technical Working Papers 0169, National Bureau of Economic Research, Inc.
  • K. Bouman. Quantitative methods in international finance and macroeconomics. Econometric Institute, 2011. Lecture FEM21004-11
Личные инструменты