Хороший пример, где ряд без единичного корня не является стационарным?

18

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

Я утверждаю, что это недоразумение (что отклонение нулевого единичного корня не обязательно означает то же самое, что и наличие стационарного ряда, тем более что альтернативные формы нестационарности редко исследуются или даже рассматриваются, когда проводятся такие тесты).

То, что я ищу, это либо:

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

б) убедительный аргумент, почему отказ от расширенного Дики-Фуллера следует рассматривать как установление стационарности

(или даже оба (а) и (б), если вы чувствуете себя умным)

Glen_b - Восстановить Монику
источник
3
Xn=(1)n с вероятностью 1.
Кардинал
@cardinal Ну, это определенно получит отклонение тестом ADF (edit: да, это так), и он явно нестационарный (корень на круге единицы, но не корень, равный 1, который обнаруживает ADF); так что это будет считаться.
Glen_b
Обратите внимание, что у теста ADF есть варианты с включенным трендом. Если значение NULL отклонено, ряд является стационарным по тренду, то есть стационарным, если тенденция удалена, но, тем не менее, не является стационарным.
mpiktas
+1. Glen_b, будет ли линейный тренд + стационарный AR (1) шум считаться контрпримером?
говорит амеба, восстанови Монику

Ответы:

15

Вот пример нестационарного ряда, который не может обнаружить даже тест белого шума (не говоря уже о тесте типа Дики-Фуллера):

это не белый шум

Да, это может быть удивительно, но это не белый шум .

Большинство примеров нестационарных счетчиков основаны на нарушении первых двух условий стационарных: детерминированных трендов (непостоянное среднее) или единичного корня / гетероскедастических временных рядов (непостоянная дисперсия). Тем не менее, вы также можете иметь нестационарные процессы, которые имеют постоянное среднее значение и дисперсию, но они нарушают третье условие: функция автоковариации (ACVF) должна быть постоянной во времени и функциейтолько.| с - т |cov(xs,xt)|st|

Приведенный выше временной ряд является примером такого ряда, который имеет нулевое среднее значение, единичную дисперсию, но ACVF зависит от времени. Точнее, вышеописанный процесс является локально стационарным процессом MA (1) с параметрами, такими, что он становится ложным белым шумом (см. Ссылки ниже): параметр процесса MA меняется со временемИксTзнак равноεT+θ1εT-1

θ1(U)знак равно0,5-1U,

где - нормированное время. Причина, по которой это выглядит как белый шум (хотя по математическому определению это явно не так), заключается в том, что изменяющийся во времени ACVF интегрируется в ноль с течением времени. Поскольку ACVF образца сходится к среднему ACVF, это означает, что автоковариация образца (и автокорреляция (ACF)) будут сходиться к функции, которая выглядит как белый шум. Так что даже тест Льюнга-Бокса не сможет обнаружить эту нестационарность. В статье (отказ от ответственности: я являюсь автором) « Тестирование на белый шум против локально-стационарных альтернатив» предлагается расширение боксовых тестов для решения таких локально-стационарных процессов.Uзнак равноT/T

Для большего количества R-кода и более подробной информации смотрите также этот пост в блоге .

Обновление после комментария mpiktas :

Это правда, что это может выглядеть так же, как теоретически интересный случай, который не виден на практике. Я согласен, что вряд ли такой паразитный белый шум будет виден непосредственно в наборе данных реального мира, но вы увидите это практически во всех остатках стационарной модели. Не вдаваясь в теоретические детали, представьте общую изменяющуюся во времени модель с изменяющейся во времени ковариационной функцией . Если вы подгоните постоянную модель , то эта оценка будет близка к средней по времени истинной модели ; и, естественно, остатки теперь будут близки к , который по конструкцииθ(U)thetas ; & thetas ; ( у ) & thetas ; ( у ) - & thetas ; & thetas ;γθ(К,U)θ^θ(U)θ(U)-θ^θ^будет интегрировать в ноль (приблизительно). См. Goerg (2012) для деталей.

Давайте посмотрим на пример

library(fracdiff)
library(data.table)

tree.ring <- ts(fread(file.path(data.path, "tree-rings.txt"))[, V1])
layout(matrix(1:4, ncol = 2))
plot(tree.ring)
acf(tree.ring)
mod.arfima <- fracdiff(tree.ring)
mod.arfima$d


## [1] 0.236507

Таким образом, мы подбираем дробный шум с параметром (так как мы думаем, что все в порядке, и у нас есть стационарная модель). Давайте проверим остатки: д <0,5d^знак равно0,23d^<0,5

arfima.res <- diffseries(tree.ring, mod.arfima$d)
plot(arfima.res)
acf(arfima.res)

временные ряды и сюжет ACF

Выглядит хорошо, правда? Ну, проблема в том, что остатки являются ложным белым шумом . Откуда я знаю? Во-первых, я могу проверить это

Box.test(arfima.res, type = "Ljung-Box")
## 
##  Box-Ljung test
## 
## data:  arfima.res
## X-squared = 1.8757, df = 1, p-value = 0.1708

Box.test.ls(arfima.res, K = 4, type = "Ljung-Box")
## 
##  LS Ljung-Box test; Number of windows = 4; non-overlapping window
##  size = 497
## 
## data:  arfima.res
## X-squared = 39.361, df = 4, p-value = 5.867e-08

и, во-вторых, из литературы нам известно, что данные о древовидных кольцах фактически являются локально-стационарными дробными шумами: см. Goerg (2012) и Ferreira, Olea и Palma (2013) .

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

Георг М. Горг
источник
+1, очень хороший пример! Я заинтересован, хотя есть ли реальные примеры таких серий?
mpiktas
@mpiktas Я добавил обновление к сообщению, которое должно ответить на ваш вопрос.
Георг М. Гоорг
γ1(U)знак равноθ(U)σ(U)σ(U-1/T)θ(U)γ^11 0 θ ( у ) σ 2 (01θ(U)dUзнак равно001θ(U)σ2(U)dUзнак равно0σ(U)должен быть выбран в соответствии с для удержания оператора. У Феррейры и др. В определении (4) отсутствует . θ(U)εT
mpiktas
В приведенном вами примере говорится, что, когда у нас есть изменяющаяся во времени модель, подгонка не изменяющейся во времени модели приведет к неверному выводу. Но это далеко не говорит о том, что каждый ряд реального времени можно моделировать с помощью изменяющейся во времени модели. С другой стороны, ваш тест может быть применен для проверки наличия изменений во времени. Еще раз спасибо за интересное понимание.
mpiktas
@mpiktas спасибо за указание на это. Я исправил это и в блоге. В этом случае это просто сработало так же, поскольку даже около средней точки (с ). И повторюсь: я не говорил, что каждый временной ряд можно смоделировать таким образом. Но на практике, когда кто-то моделирует его с помощью своей любимой стационарной модели ARFIMA, тогда они уже предполагают, что это в этом классе семьи. (стационарные модели являются вероятностным подмножеством локально стационарных моделей). 0,5 T σ(U)20,5T
Георг М. Гоорг
7

Пример 1

Известно, что процессы с единичным корнем с сильным отрицательным компонентом MA приводят к тестам ADF с эмпирическим размером, намного превышающим номинальный (например, Schwert, JBES 1989 ).

YTзнак равноYT-1+εT+θεT-1,
θ-1

T(ρ^-1)

library(urca)
reps <- 1000
n <- 100
rejections <- matrix(NA,nrow=reps)

for (i in 1:reps){
  y <- cumsum(arima.sim(n = n, list(ma = -0.98)))
  rejections[i] <- (summary(ur.df(y, type = "drift", selectlags="Fixed",lags=12*(n/100)^.25))@teststat[1] < -2.89)
}
mean(rejections)

Пример 2

YT

В зависимости от типа изменения отклонения, тест ADF будет по-прежнему часто отклоняться. В моем примере ниже мы имеем разрыв отклонения вниз, что заставляет тест «поверить», что ряд сходится, что приводит к отклонению нулевого единичного корня.

library(urca)
reps <- 1000
n <- 100
rejections <- matrix(NA,nrow=reps)

for (i in 1:reps){
  u_1 <- rnorm(n/2,sd=5)
  u_2 <- rnorm(n/2,sd=1)
  u <- c(u_1,u_2)
  y <- arima.sim(n=n,list(ar = 0.8),innov=u)
  rejections[i] <- (summary(ur.df(y, type = "drift"))@teststat[1] < -2.89)      
}
mean(rejections)

(Кроме того, тест ADF "теряет" свое основное асимптотическое нулевое распределение при наличии безусловной гетероскедастичности.)

Кристоф Ханк
источник
@Glen_b, это (я надеюсь) может быть ответом на ваш первый абзац, но не совсем на заголовок вашего вопроса - есть ли расхождение или отсутствие понимания с моей стороны?
Кристоф Ханк
«То» = Пример 1
Кристоф Ханк
Это зависит от того, какой «корень единицы» определен как. Изначально я выучил его как «корень на единичной окружности» (корень модуля 1), но теперь он, кажется, (и в контексте теста ADF относится к) корню характеристического полинома, фактически равному 1 . Даже если у меня неправильный смысл в названии, ваш ответ отвечает на заданный вопрос, поэтому подумайте, что все в порядке.
Glen_b
Моя точка зрения, вероятно, не четко сформулирована: в заголовке вы ищете примеры серий «без единичного корня», тогда как первый абзац (для меня) звучит как поиск примеров, в которых отклонение является неправильным. Мой первый пример - один для последнего случая, в котором ADF, скорее всего, отклонит, хотя у процесса есть единичный корень.
Кристоф Ханк
Ах, прости, я не думал об этом должным образом. Да, строго это не соответствует ни одной из интерпретаций названия, но все же отвечает на более широкий вопрос в теле. (Заголовки обязательно менее нюансированы, так что это не проблема.) ... Я думаю, что это очень интересный ответ, и, если что-то служит моим реальным целям, лучше, чем то, что запрашивает заголовок.
Glen_b
7

Проверка на единичные корни общеизвестно сложна. Использование одного теста обычно недостаточно, и вы должны быть очень осторожны с точными предположениями, которые использует тест.

Конструкция ADF делает его уязвимым для ряда, представляющего собой простые нелинейные тренды с добавленным белым шумом. Вот пример:

library(dplyr)
library(tseries)
set.seed(1000)
oo <- 1:1000  %>% lapply(function(n)adf.test(exp(seq(0, 2, by = 0.01)) + rnorm(201)))
pp <- oo %>% sapply("[[","p.value")

> sum(pp < 0.05)
[1] 680

Здесь мы имеем экспоненциальный тренд и видим, что ADF работает довольно плохо. Он принимает нулевой единичный корень 30% времени и отклоняет его 70% времени.

Обычно результатом любого анализа не является утверждение, что ряд является стационарным или нет. Если методы, используемые в анализе, требуют стационарности, ошибочное предположение о том, что ряд является стационарным, когда его на самом деле нет, обычно проявляется тем или иным образом. Так что я лично смотрю на весь анализ, а не только на тестирование единичного корня. Например, OLS и NLS отлично работают для нестационарных данных, где нестационарность находится в среднем, то есть в тренде. Поэтому, если кто-то ошибочно утверждает, что серия является стационарной и применяет OLS / NLS, это утверждение может быть неактуальным.

mpiktas
источник
1
п>0,05
Ах да, я перепутал знаки. Я исправил ответ соответственно. Спасибо, что заметили!
mpiktas
Почему ты не использовал sapply(oo, "[[","p.value")?
germcd
Ну, я использовал это, только с синтаксисом канала. Мне нравятся трубы :)
mpiktas
1
Мне тоже нравится dplyr. Для этого кода это не нужно, достаточно загрузить magrittr.
mpiktas