Un bell'esempio in cui una serie senza una radice unitaria non è stazionaria?


18

Ho visto diverse volte le persone rifiutare il nulla in un test Dickey-Fuller aumentato , e quindi affermare che mostra che la loro serie è stazionaria (sfortunatamente, non posso mostrare le fonti di queste affermazioni, ma immagino che simili affermazioni esistano qua e là in uno o un altro diario).

Io sostengo che si tratta di un malinteso (che il rifiuto del nulla di una radice unitaria non è necessariamente la stessa cosa di avere una serie stazionaria, specialmente perché forme alternative di non stazionarietà sono raramente studiate o addirittura prese in considerazione quando vengono eseguiti tali test).

Quello che cerco è:

a) un bel chiaro controesempio all'affermazione (posso immaginare una coppia in questo momento ma scommetto che qualcuno diverso da me avrà qualcosa di meglio di quello che ho in mente). Potrebbe essere una descrizione di una situazione specifica, magari con dati (simulati o reali; entrambi hanno i loro vantaggi); o

b) un'argomentazione convincente per cui il rifiuto in un Dickey-Fuller aumentato dovrebbe essere visto come una condizione fissa

(o anche entrambi (a) e (b) se ti senti intelligente)


3
Xn=(1)n con probabilità 1.
Cardinale

@cardinal Bene, questo certamente otterrebbe un rifiuto dal test ADF (modifica: sì, lo fa), ed è chiaramente non stazionario (una radice sul cerchio dell'unità, ma non una radice uguale a 1 che rileva l'ADF); così conta.
Glen_b

Si noti che il test ADF ha varianti in cui è inclusa la tendenza. Se il valore nullo viene rifiutato, la serie è fissa, vale a dire fissa se la tendenza viene rimossa, ma non fissa.
mpiktas,

+1. Glen_b, una tendenza lineare + rumore AR (1) stazionario conta come contro-esempio?
ameba dice di reintegrare Monica il

Risposte:


15

Ecco un esempio di una serie non stazionaria che nemmeno un test del rumore bianco può rilevare (per non parlare di un test del tipo Dickey-Fuller):

questo non è rumore bianco

Sì, potrebbe essere sorprendente ma questo non è un rumore bianco .

La maggior parte dei contro-esempi non stazionari si basa su una violazione delle prime due condizioni stazionarie: tendenze deterministiche (media non costante) o serie storiche / radice eteroschedastica dell'unità (varianza non costante). Tuttavia, puoi anche avere processi non stazionari che hanno media e varianza costanti, ma violano la terza condizione: la funzione di autocovarianza (ACVF) dovrebbe essere costante nel tempo e una funzione disolo.| s - t |cov(xs,xt)|st|

Le serie temporali sopra riportate sono un esempio di tali serie, che hanno media zero, varianza unitaria, ma l'ACVF dipende dal tempo. Più precisamente, il processo sopra è un processo MA (1) localmente stazionario con parametri tali da diventare un rumore bianco spurio (vedi riferimenti sotto): il parametro del processo MA cambia nel tempoxt=εt+θ1εt1

θ1(u)=0.51u,

dove è tempo normalizzato. Il motivo per cui questo sembra rumore bianco (anche se chiaramente per definizione matematica non lo è), è che il tempo che varia ACVF si integra a zero nel tempo. Poiché l'ACVF del campione converge nell'ACVF medio, ciò significa che l'autocovarianza del campione (e l'autocorrelazione (ACF)) convergeranno in una funzione che assomiglia al rumore bianco. Quindi anche un test di Ljung-Box non sarà in grado di rilevare questa non stazionarietà. L'articolo (dichiarazione di non responsabilità: sono l'autore) sul test per il rumore bianco rispetto alle alternative localmente stazionarie propone un'estensione dei test Box per gestire tali processi localmente stazionari.u=t/T

Per più codice R e maggiori dettagli vedi anche questo post sul blog .

Aggiornamento dopo il commento di mpiktas :

È vero che questo potrebbe apparire proprio come un caso teoricamente interessante che non si vede nella pratica. Sono d'accordo che è improbabile vedere direttamente un simile rumore bianco spurio in un set di dati del mondo reale, ma lo vedrai in quasi tutti i residui di un modello stazionario. Senza entrare troppo nei dettagli teorici, immagina un modello generale varia nel tempo con una funzione di covarianza che varia nel tempo . Se si adatta un modello costante , questa stima sarà vicina alla media temporale del modello reale ; e naturalmente i residui ora saranno vicini a , che per costruzione diy θ ( k , u ) θ θ ( u ) θ ( u ) - θ θθ(u)γθ(k,u)θ^θ(u)θ(u)θ^θ^si integrerà a zero (approssimativamente). Vedi Goerg (2012) per i dettagli.

Diamo un'occhiata a un esempio

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

Quindi adattiamo il rumore frazionario con il parametro (poiché pensiamo che tutto vada bene e abbiamo un modello stazionario). Controlliamo i residui: d <0,5d^=0.23d^<0.5

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

serie storiche e trama acf

Sembra buono vero? Bene, il problema è che i residui sono rumori bianchi spuri . Come lo so? Innanzitutto, posso provarlo

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

e in secondo luogo, sappiamo dalla letteratura che i dati degli anelli degli alberi sono in realtà rumori frazionari localmente fissi: vedi Goerg (2012) e Ferreira, Olea e Palma (2013) .

Ciò dimostra che il mio - certo - aspetto teoricamente apparente, si sta effettivamente verificando nella maggior parte degli esempi del mondo reale.


+1, esempio molto bello! Sono interessato anche se ci sono esempi di vita reale di tali serie?
mpiktas,

@mpiktas Ho aggiunto un aggiornamento al post che dovrebbe rispondere alla tua domanda.
Georg M. Goerg

γ1(u)=θ(u)σ(u)σ(u1/T)θ(u)γ^101θ(u)du=001θ(u)σ2(u)du=0σ(u)θ(u)εt

Il tuo esempio dato dice che quando abbiamo un modello che varia nel tempo, l'adattamento di un modello che varia nel tempo non porterebbe a un'inferenza errata. Ma ciò è lungi dal dire che ogni serie in tempo reale può essere modellata con un modello che varia nel tempo. D'altra parte, il test può essere applicato per verificare la presenza di variazioni temporali. Grazie ancora per una visione interessante.
mpiktas,

σ(u)20.5T

7

Esempio 1

È noto che i processi unit-root con un forte componente MA negativo portano a test ADF con dimensioni empiriche molto superiori a quello nominale (ad esempio, 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)

Esempio 2

Yt

A seconda del tipo di variazione della varianza, il test ADF verrà comunque rifiutato frequentemente. Nel mio esempio di seguito, abbiamo un'interruzione della varianza al ribasso, che fa "credere" al test che la serie converge, portando a un rifiuto del null di una radice unitaria.

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)

(A parte questo, il test ADF "perde" la sua distribuzione nullo asintotica fondamentale in presenza di eteroschedasticità incondizionata.)


@Glen_b, che (spero) potrebbe essere una risposta al tuo primo paragrafo, ma non proprio al titolo della tua domanda - c'è una discrepanza o una mancanza di comprensione da parte mia?
Christoph Hanck,

"That" = Esempio 1
Christoph Hanck,

Dipende da quale "unità radice" è definita essere. Inizialmente l'ho imparato come "radice sul cerchio unitario" (una radice del modulo 1) ma ora sembra essere (e nel contesto del test dell'ADF riferito) una radice del polinomio caratteristico effettivamente uguale a 1 . Anche se ho un senso sbagliato nel titolo, la tua risposta risponde alla domanda desiderata, quindi pensa che vada bene.
Glen_b

Il mio punto probabilmente non è chiaramente espresso: nel titolo si cercano esempi di serie "senza una radice unitaria", mentre il primo paragrafo (per me) suona come cercare esempi in cui il rifiuto è sbagliato. Il mio primo esempio è uno per quest'ultimo caso, in cui è probabile che l'ADF respinga, sebbene il processo abbia una radice unitaria.
Christoph Hanck,

Ah, scusa, non ci stavo pensando bene. Sì, rigorosamente non corrisponde a nessuna delle interpretazioni del titolo, ma risponde ancora alla domanda più ampia nel corpo. (I titoli sono necessariamente meno sfumati, quindi questo non è un problema.) ... Penso che sia una risposta molto interessante, e se qualcosa serve al mio vero scopo meglio di quello che il titolo chiede.
Glen_b

7

Il test della radice unitaria è notoriamente difficile. L'utilizzo di un test di solito non è sufficiente e bisogna fare molta attenzione alle ipotesi esatte che il test sta utilizzando.

Il modo in cui è costruito l'ADF lo rende vulnerabile a una serie che sono semplici tendenze non lineari con rumore bianco aggiunto. Ecco un esempio:

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

Qui abbiamo la tendenza esponenziale e vediamo che l'ADF ha prestazioni piuttosto scarse. Accetta il null dell'unità radice il 30% delle volte e lo rifiuta il 70% delle volte.

Di solito il risultato di qualsiasi analisi non è quello di affermare che la serie è stazionaria o meno. Se i metodi utilizzati nell'analisi richiedono stazionarietà, l'ipotesi errata che la serie sia stazionaria quando in realtà non lo è, di solito si manifesta in un modo o nell'altro. Quindi guardo personalmente l'intera analisi, non solo la parte di test radice dell'unità. Ad esempio, OLS e NLS funzionano bene per i dati non stazionari, dove la non stazionarietà è nella media, vale a dire tendenza. Quindi, se qualcuno sostiene erroneamente che la serie è stazionaria e applica OLS / NLS, questa affermazione potrebbe non essere pertinente.


1
p>0.05

Ah sì, ho confuso i segni. Ho corretto la risposta di conseguenza. Grazie per averlo notato!
mpiktas,

Perché non hai usato sapply(oo, "[[","p.value")?
germcd,

Bene l'ho usato, solo con la sintassi della pipe. Mi piacciono le pipe :)
mpiktas,

1
Mi piace anche dplyr. Per questo codice non è necessario, il caricamento di magrittr è sufficiente.
mpiktas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.