Сравнение прогнозов

Тест Диболда-Мариано

Предпосылки:

Два прогноза, \(\hat y_t^A\) и \(\hat y_t^B\). Разница произвольных метрик качества,

\[ d_t = (\hat y_t^A - y_t)^2 - (\hat y_t^B - y_t)^2. \]

Процесс \((d_t)\) стационарный. Другими словами \(\E(d_t) = \mu\), \(\Cov(d_t, d_{t-k}) = \gamma_k\), в частности, \(\Var(d_t) = \gamma_0\).

Гипотезы:

\(H_0\): \(\E(d_t) = 0\);

\(H_a\): \(\E(d_t) \neq 0\);

Тестовая статистика при верной \(H_0\):

\[ DM = \frac{\bar d - 0}{se(\bar d)} \to \cN(0;1) \]

Трудность возникает только в оценке \(se(\bar d)\), так как значения \(d_t\) коррелированы.

Как правило оценивают регрессию вектора \(d_t\) на константу и используют робастную стандартную ошибку \(se_{HAC}\).

\[ \hat d_t = \hat \beta_1, \quad DM = \frac{\hat\beta_1 - 0}{se_{HAC}(\hat\beta_1)}. \]

В качестве альтернативного подхода можно дополнительно предположить, что \((d_t)\) описывается стационарным \(ARMA(p, q)\) процессом с небольшими \(p\) и \(q\) и рассчитать \(se(\bar d)\) в рамках этого предположения.

RC и SPA тесты

RC (Reality Check) тест Уайта и SPA (Superior Predictive Ability) тест Хансена обобщают тест Диболда-Мариано на случай сравнения множества прогнозов против одного эталонного.

Для обоих тестов используется стационарный бутстрэп. Опишем стационарный бутстрэп на примере более простой задачи.

Кратко про стационарный бутстрэп

Представим себе, что у нас есть ряд \(y_1\), , \(y_T\), и мы хотим построить доверительный интервал для \(\rho = \Corr(y_t, y_{t-1})\) с помощью бутстрэпа.

Если использовать обычный бутстрэп, который из исходной выборки \((y_t)\) много раз делает случайную выборку с повторениями, то структура временного ряда будет разрушаться при создании бутстрэп-выборок, и оценка корреляции по бустрэп-выборкам будет каждый раз примерно нулевой.

Алгоритм стационарного бутстрэпа пытается решить эту проблему. На входе у нас временной ряд \(y_1\), , \(y_T\). На выходе мы хотим получить бустрэп копию этого ряда той же длины \(y_1^*\), , \(y_T^*\).

  1. Выберем параметр вероятности \(p\). О правилах выбора чуть позже.

  2. Выберем случайный момент времени \(s \in \{1, \ldots, T\}\) и запишем \(y_s\) очередным элементом в бутстрэп копию.

  3. С вероятностью \(p\) вернемся к шагу \(2\), с вероятностью \(1-p\) пойдём дальше.

  4. Увеличим \(s\) на 1, запишем \(y_s\) очередным элементом в бутстрэп копию и перейдем к подкидыванию монетки на шаге 3.

Алгоритм продолжается до тех пор, пока не наберем \(T\) наблюдений в бутстрэп-копию ряда.

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

По исходному ряду создаем 10000 бутстрэп-копий ряда. По каждой бутстрэп-копии считаем оценку корелляции. Удаляем по 2.5% самых больших и самых маленьких оценок корреляции. Полученные края и будут границами доверительного интервала.

Про выбор \(p\).

Возвращаемся к тестам.