Dobry przykład, w którym seria bez pierwiastka nie jest stacjonarna?


18

Kilkakrotnie widziałem, jak ludzie odrzucają wartość zerową w rozszerzonym teście Dickeya-Fullera , a następnie twierdzą, że pokazuje, że ich seria jest stacjonarna (niestety nie mogę pokazać źródeł tych twierdzeń, ale wyobrażam sobie, że podobne twierdzenia istnieją tu i tam w jeden lub inny dziennik).

Twierdzę, że jest to nieporozumienie (to, że odrzucenie wartości zerowej pierwiastka jednostkowego niekoniecznie jest tym samym, co posiadanie szeregu stacjonarnego, zwłaszcza, że ​​alternatywne formy niestacjonarności są rzadko badane lub nawet rozważane, gdy takie testy są wykonywane).

To, czego szukam to:

a) ładny, wyraźny kontrprzykład na roszczenie (mogę sobie teraz wyobrazić parę, ale założę się, że ktoś inny niż ja będzie miał coś lepszego niż to, co mam na myśli). Może to być opis konkretnej sytuacji, być może z danymi (symulowanymi lub rzeczywistymi; oba mają swoje zalety); lub

b) przekonujący argument, dlaczego odrzucenie w rozszerzonym Dickey-Fullerze powinno być postrzegane jako ustanowienie stacjonarności

(lub nawet oba (a) i (b), jeśli czujesz się mądry)


3
Xn=(-1)n z prawdopodobieństwem 1.
kardynał

@ cardinal Cóż, to z pewnością dostanie odrzucenie przez test ADF (edytuj: tak, robi) i jest wyraźnie niestacjonarne (pierwiastek na kole jednostkowym, ale nie pierwiastek równy 1 wykrytemu przez ADF); to by się liczyło.
Glen_b

Należy pamiętać, że test ADF ma warianty, w których uwzględniono trend. Jeśli wartość zerowa zostanie odrzucona, seria jest trendem stacjonarnym, tj. Nieruchomym, jeśli trend jest usunięty, ale nie stacjonarnym.
mpiktas

+1. Glen_b, czy liniowy trend + stacjonarny szum AR (1) byłby liczony jako kontrprzykład?
ameba mówi Przywróć Monikę

Odpowiedzi:


15

Oto przykład niestacjonarnej serii, której nie może wykryć nawet test białego szumu (nie mówiąc o teście typu Dickeya-Fullera):

to nie jest biały szum

Tak, to może być zaskakujące, ale to nie jest biały szum .

Większość niestacjonarnych liczników przykładowych opiera się na naruszeniu dwóch pierwszych warunków stacjonarnych: trendów deterministycznych (niestała średnia) lub jednostkowych szeregów czasowych / heteroskedastycznych szeregów czasowych (wariancja niestała). Jednak możesz także mieć niestacjonarne procesy, które mają stałą średnią i wariancję, ale naruszają trzeci warunek: funkcja autokowariancji (ACVF) powinna być stała w czasie i funkcjatylko.| s - t |doov(xs,xt)|s-t|

Powyższe szeregi czasowe są przykładem takiej serii, która ma zerową średnią, wariancję jednostkową, ale ACVF zależy od czasu. Dokładniej, powyższy proces jest lokalnie stacjonarnym procesem MA (1) z takimi parametrami, że staje się fałszywym białym szumem (patrz odnośniki poniżej): parametr procesu MA zmienia się w czasiext=εt+θ1εt-1

θ1(u)=0,5-1u,

gdzie to znormalizowany czas. Powodem, dla którego wygląda to na biały szum (choć z matematycznej definicji nie jest to oczywiste), jest fakt, że zmienna w czasie zmienna ACVF z czasem ulega integracji do zera. Ponieważ próbka ACVF jest zbieżna ze średnią ACVF, oznacza to, że autokowariancja próbki (i autokorelacja (ACF)) zbiegnie się w funkcję, która wygląda jak biały szum. Więc nawet test Ljung-Boxa nie będzie w stanie wykryć tej niestacjonarności. W artykule (zastrzeżenie: jestem autorem) na temat Testowania białego szumu w porównaniu z lokalnie stacjonarnymi alternatywami zaproponowano rozszerzenie testów Boxa, aby poradzić sobie z takimi lokalnie stacjonarnymi procesami.u=t/T.

Aby uzyskać więcej kodu R i więcej szczegółów, zobacz także ten post na blogu .

Zaktualizuj po komentarzu mpiktas :

Prawdą jest, że może to wyglądać jak interesujący teoretycznie przypadek, którego nie widać w praktyce. Zgadzam się, że jest mało prawdopodobne, aby zobaczyć tak fałszywy biały szum bezpośrednio w zbiorze danych w świecie rzeczywistym, ale zobaczysz to w prawie każdej reszcie pasującego modelu stacjonarnego. Nie wchodząc w zbyt wiele teoretycznych szczegółów, wyobraź sobie ogólny model zmienny w czasie z funkcją kowariancji zmienną w czasie γ θ ( k , u ) . Jeśli pasuje stałym modelu θ , to oszacowanie będzie zbliżona do średniej czasu rzeczywistego modelu θ ( u ) ; i naturalnie reszty będą teraz bliskoθ(u)γθ(k,u)θ^θ(u) , które z konstrukcji θ zintegruje się do zera (w przybliżeniu). Szczegółowe informacje można znaleźć w Goerg (2012).θ(u)-θ^θ^

Spójrzmy na przykład

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

Więc pasuje hałas ułamkową z parametrem d = 0,23 (od d < 0,5 możemy myśleć wszystko jest w porządku i nie mamy stacjonarnego modelu). Sprawdźmy pozostałości:re^=0,23re^<0,5

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

szeregi czasowe i wykres acf

Wygląda dobrze, prawda? Problem polega na tym, że reszty to fałszywy biały szum . Skąd mam wiedzieć? Najpierw mogę to przetestować

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

a po drugie, wiemy z literatury, że dane dotyczące słojów to w rzeczywistości lokalnie stacjonarny szum ułamkowy: patrz Goerg (2012) i Ferreira, Olea i Palma (2013) .

To pokazuje, że mój - co prawda - teoretycznie wyglądający przykład, faktycznie występuje w większości przykładów z prawdziwego świata.


+1, bardzo fajny przykład! Jestem jednak zainteresowany, czy są jakieś przykłady takich seriali?
mpiktas

@mpiktas Dodałem aktualizację do postu, która powinna odpowiedzieć na twoje pytanie.
Georg M. Goerg,

γ1(u)=θ(u)σ(u)σ(u-1/T.)θ(u)γ^101θ(u)reu=001θ(u)σ2)(u)reu=0σ(u)θ(u)εt

W podanym przykładzie podano, że gdy mamy model zmienny w czasie, dopasowanie modelu zmiennego w czasie prowadziłoby do błędnego wnioskowania. Ale wcale nie oznacza to, że każdą serię czasu rzeczywistego można modelować za pomocą modelu zmieniającego się w czasie. Z drugiej strony twój test może być zastosowany do testowania na obecność zmienności czasowej. Jeszcze raz dziękuję za ciekawy wgląd.
mpiktas

σ(u)2)0,5T.

7

Przykład 1

Procesy root-root z silnym ujemnym składnikiem MA są znane z tego, że prowadzą do testów ADF o wielkości empirycznej znacznie większej niż nominalna (np. 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)

Przykład 2

Yt

W zależności od rodzaju zmiany wariancji test ADF nadal będzie często odrzucany. W poniższym przykładzie mamy przerwanie wariancji w dół, co powoduje, że test „wierzy”, że szereg zbiega się, co prowadzi do odrzucenia wartości zerowej zera jednostki.

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)

(Nawiasem mówiąc, test ADF „traci” swój zasadniczy asymptotyczny rozkład zerowy w obecności bezwarunkowej heteroskedastyczności.)


@Glen_b, że (mam nadzieję) może być odpowiedzią na twój pierwszy akapit, ale nie na tak naprawdę tytuł pytania - czy istnieje rozbieżność lub brak zrozumienia z mojej strony?
Christoph Hanck

„That” = przykład 1
Christoph Hanck

Zależy to od tego, jaki jest „root root”. Nauczyłem się go pierwotnie jako „pierwiastek na kole jednostkowym” (pierwiastek z modułu 1), ale teraz wydaje się, że jest (i w kontekście testu ADF) pierwiastkiem charakterystycznego wielomianu faktycznie równym 1 . Nawet jeśli w tytule mam niewłaściwy sens, twoja odpowiedź odpowiada na zamierzone pytanie, więc pomyśl, że jest w porządku.
Glen_b

Mój punkt prawdopodobnie nie jest jasno sformułowany: w tytule szukasz przykładów serii „bez pierwiastka”, podczas gdy pierwszy akapit (dla mnie) brzmi jak szukanie przykładów, w których odrzucenie jest błędne. Moim pierwszym przykładem jest ten drugi przypadek, w którym ADF prawdopodobnie odrzuci, chociaż proces ma root root.
Christoph Hanck

Ach, przepraszam, nie myślałem o tym właściwie. Tak, ściśle nie jest to zgodne z żadną interpretacją tytułu, ale nadal odpowiada na szersze pytanie w ciele. (Tytuły niekoniecznie są mniej dopracowane, więc to nie jest problem.) ... Myślę, że to bardzo interesująca odpowiedź, a jeśli coś służy mojemu prawdziwemu celowi lepiej niż wymaga tego tytuł.
Glen_b

7

Testowanie root jednostek jest niezwykle trudne. Korzystanie z jednego testu zwykle nie wystarcza i należy bardzo uważać na dokładne założenia, z których korzysta test.

Konstrukcja ADF sprawia, że ​​jest wrażliwy na szereg prostych trendów nieliniowych z dodatkowym białym szumem. Oto przykład:

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

Tutaj mamy wykładniczy trend i widzimy, że ADF działa dość słabo. Akceptuje wartość zerową pierwiastka z jednostki w 30% przypadków i odrzuca ją w 70% przypadków.

Zwykle wynikiem jakiejkolwiek analizy nie jest twierdzenie, że seria jest stacjonarna czy nie. Jeśli metody zastosowane w analizie wymagają stacjonarności, błędne założenie, że szereg jest nieruchomy, gdy tak naprawdę nie jest, zwykle objawia się w taki czy inny sposób. Więc osobiście patrzę na całą analizę, a nie tylko na część dotyczącą testowania root root. Na przykład OLS i NLS działają dobrze w przypadku danych niestacjonarnych, gdzie niestacjonarność jest średnia, tj. Trend. Więc jeśli ktoś niesłusznie twierdzi, że seria jest stacjonarna i stosuje OLS / NLS, to twierdzenie może być nieistotne.


1
p>0,05

Ach tak, pomyliłem znaki. Naprawiłem odpowiednio odpowiedź. Dzięki za zauważenie!
mpiktas,

Dlaczego nie używałeś sapply(oo, "[[","p.value")?
germcd,

Cóż, użyłem go tylko ze składnią potoku. Lubię fajki :)
mpiktas

1
Też lubię dplyr. W przypadku tego kodu nie jest konieczne, wystarczy załadować magrittr.
mpiktas
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.