Schönes Beispiel, wo eine Reihe ohne Einheitswurzel nicht stationär ist?


18

Ich habe in einem erweiterten Dickey-Fuller-Test mehrmals gesehen, wie Leute die Null zurückweisen und dann behaupten, dass ihre Reihen stationär sind (leider kann ich die Quellen dieser Behauptungen nicht zeigen, aber ich stelle mir vor, dass es hier und da ähnliche Behauptungen gibt die eine oder andere Zeitschrift).

Ich behaupte, dass es ein Missverständnis ist (diese Zurückweisung der Nullstelle einer Einheitswurzel ist nicht unbedingt dasselbe wie eine stationäre Reihe, zumal alternative Formen der Nichtstationarität selten untersucht oder sogar in Betracht gezogen werden, wenn solche Tests durchgeführt werden).

Was ich suche, ist entweder:

a) Ein schönes klares Gegenbeispiel zu der Behauptung (ich kann mir gerade ein Paar vorstellen, aber ich wette, dass jemand anders als ich etwas Besseres haben wird, als ich vorhabe). Es könnte eine Beschreibung einer bestimmten Situation sein, möglicherweise mit Daten (simuliert oder real; beide haben ihre Vorteile); oder

b) ein überzeugendes Argument , warum die Ablehnung in einem Augmented Dickey-Fuller sollte als Einrichtung Stationarität zu sehen

(oder sogar beide (a) und (b), wenn Sie sich schlau fühlen)


3
mit Wahrscheinlichkeit 1.Xn=(1)n
Kardinal

@cardinal Nun, das würde sicherlich eine Ablehnung durch den ADF-Test bekommen (edit: yep, tut es), und es ist eindeutig nicht stationär (eine Wurzel auf dem Einheitskreis, aber keine Wurzel gleich 1, die der ADF erkennt); das würde also zählen.
Glen_b

Beachten Sie, dass der ADF-Test Varianten enthält, in denen der Trend enthalten ist. Wenn die Null verworfen wird, ist die Serie trendstabil, dh stationär, wenn der Trend entfernt wird, aber nicht stationär.
mpiktas

+1. Glen_b, würde ein linearer Trend + stationäres AR (1) -Rauschen als Gegenbeispiel gelten?
Amöbe sagt Reinstate Monica

Antworten:


15

Hier ist ein Beispiel für eine instationäre Serie, die selbst ein Test auf weißes Rauschen nicht erkennen kann (geschweige denn ein Dickey-Fuller-Test):

Das ist kein weißes Rauschen

Ja, das mag überraschen, aber das ist kein weißes Rauschen .

Die meisten nicht stationären Zähler basieren auf einer Verletzung der ersten beiden Bedingungen des stationären: deterministische Trends (nicht konstanter Mittelwert) oder Einheitswurzel / heteroskedastische Zeitreihen (nicht konstante Varianz). Sie können jedoch auch instationäre Prozesse mit konstantem Mittelwert und konstanter Varianz haben, die jedoch die dritte Bedingung verletzen: Die Autokovarianzfunktion (ACVF) sollte über die Zeit konstant sein und eine Funktion von | s - t | nur.cOv(xs,xt)|s-t|

Die obige Zeitreihe ist ein Beispiel für eine solche Reihe, bei der die Einheitsvarianz im Mittel Null ist, die ACVF jedoch von der Zeit abhängt. Genauer gesagt, ist das Verfahren über ein lokal stationären MA (1) -Prozess mit Parametern , so dass es wird unechtes weißes Rauschen (siehe Referenzen unten): Der Parameter des MA - Prozess Veränderungen über Zeitxt=εt+θ1εt-1

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

Dabei ist die normalisierte Zeit. Der Grund, warum dies wie weißes Rauschen aussieht (obwohl es mathematisch gesehen eindeutig nicht so ist), ist, dass die zeitlich variierende ACVF mit der Zeit auf Null abfällt. Da die ACVF der Stichprobe zur durchschnittlichen ACVF konvergiert, bedeutet dies, dass die Autokovarianz der Stichprobe (und die Autokorrelation (ACF)) zu einer Funktion konvergiert, die wie weißes Rauschen aussieht. Selbst ein Ljung-Box-Test kann diese Nichtstationarität nicht erkennen. Der Artikel (Haftungsausschluss: Ich bin der Autor) über das Testen auf weißes Rauschen anhand lokal stationärer Alternativen schlägt eine Erweiterung der Box-Tests vor, um solche lokal stationären Prozesse zu behandeln.u=t/T

Für mehr R-Code und mehr Details siehe auch diesen Blog-Beitrag .

Update nach mpiktas Kommentar :

Es ist wahr, dass dies wie ein theoretisch interessanter Fall aussehen könnte, der in der Praxis nicht gesehen wird. Ich bin damit einverstanden, dass es unwahrscheinlich ist, dass ein solches störendes weißes Rauschen direkt in einem Datensatz der realen Welt auftritt, aber Sie werden dies bei fast allen Residuen einer stationären Modellanpassung feststellen. Stellen Sie sich ein allgemeines zeitvariables Modell mit einer zeitvariablen Kovarianzfunktion γ θ ( k , u ) vor, ohne auf zu viele theoretische Details einzugehen . Wenn Sie eine Konstante Modell passen θ , dann wird diese Schätzung sein nahe dem zeitlichen Mittelwert des wahren Modells θ ( u ) ; und natürlich werden die Residuen jetzt in der Nähe von seinθ(u)γθ(k,u)θ^θ(u) , die durchBau von θ auf Null integrieren geführt (ungefähr). Siehe Goerg (2012) für Details.θ(u)θ^θ^

Schauen wir uns ein Beispiel an

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

Also wir fraktionierte Rauschen mit dem Parameter passen d = 0,23 (da d < 0,5 wir denken , alles in Ordnung ist , und wir haben ein stationäres Modell). Lassen Sie uns die Residuen überprüfen:d^=0.23d^<0.5

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

Zeitreihen und ACF-Plot

Sieht gut aus, oder? Nun, das Problem ist, dass die Residuen störendes weißes Rauschen sind . Wie soll ich wissen? Zuerst kann ich es testen

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

und zweitens wissen wir aus der Literatur, dass es sich bei den Baumringdaten tatsächlich um lokal stationäres gebrochenes Rauschen handelt: siehe Goerg (2012) und Ferreira, Olea und Palma (2013) .

Dies zeigt, dass mein - zugegebenermaßen - theoretisch wirkendes Beispiel tatsächlich in den meisten Beispielen der realen Welt vorkommt.


+1, sehr schönes Beispiel! Ich bin allerdings interessiert, ob es Beispiele für solche Serien im wirklichen Leben gibt.
mpiktas

@mpiktas Ich habe dem Beitrag ein Update hinzugefügt, das Ihre Frage beantworten sollte.
Georg M. Goerg

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

Ihr gegebenes Beispiel besagt, dass die Anpassung eines zeitlich variierenden Modells zu einer falschen Schlussfolgerung führen würde, wenn wir ein zeitlich variierendes Modell haben. Dies bedeutet jedoch keineswegs, dass jede Echtzeitserie mit einem zeitvariablen Modell modelliert werden kann. Andererseits kann Ihr Test angewendet werden, um das Vorhandensein von Zeitvariationen zu testen. Nochmals vielen Dank für einen interessanten Einblick.
mpiktas

σ(u)20,5T

7

Beispiel 1

Es ist bekannt, dass Unit-Root-Prozesse mit einer stark negativen MA-Komponente zu ADF-Tests führen, deren empirische Größe weit über der nominalen liegt (z. B. Schwert, JBES 1989 ).

Das heißt, wenn

Y.t=Y.t-1+ϵt+θϵt-1,
mit θ-1werden die Wurzeln des AR- und MA-Teils fast aufgehoben, so dass der Prozess weißem Rauschen in endlichen Abtastwerten ähnelt, was zu vielen falschen Zurückweisungen der Null führt, da der Prozess immer noch eine Einheitswurzel hat (nicht stationär ist).

Unten finden Sie ein Beispiel für den ADF-Test, den Sie erwähnt haben. [Schwert simuliert, dass mit weniger extremen MA-Strukturen viel extremere empirische Größen erzeugt werden könnten, wenn man sich die Koeffizientenstatistik ansiehtT(ρ^-1) oder den Phillips-Perron-Test, siehe seine Tabellen 5-10.]

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)

Beispiel 2

Prozesse, die zurückgesetzt werden, aber nicht stationär sind. Beispielsweise,Y.tDies könnte ein AR (1) -Prozess mit einem AR-Koeffizienten von weniger als einem absoluten Wert sein, jedoch mit einem Innovationsprozess, dessen Varianz sich zu einem bestimmten Zeitpunkt permanent ändert ("bedingungslose Heteroskedastizität"). Der Prozess hat dann keine Einheitswurzel, ist aber auch nicht stationär, da sich seine bedingungslose Verteilung mit der Zeit ändert.

Abhängig von der Art der Varianzänderung wird der ADF-Test weiterhin häufig zurückgewiesen. In meinem Beispiel unten haben wir eine Varianzunterbrechung nach unten, die den Test "glauben" lässt, dass die Reihe konvergiert, was zu einer Zurückweisung der Null einer Einheitswurzel führt.

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)

(Abgesehen davon "verliert" der ADF-Test seine zentrale asymptotische Nullverteilung bei bedingungsloser Heteroskedastizität.)


@ Glen_b, das könnte (ich hoffe) eine Antwort auf Ihren ersten Absatz sein, aber nicht wirklich auf den Titel Ihrer Frage - gibt es eine Diskrepanz oder ein Unverständnis von meiner Seite?
Christoph Hanck

"Das" = Beispiel 1
Christoph Hanck

Es hängt davon ab, wie "Einheitswurzel" definiert ist. Ich habe es ursprünglich als "Wurzel auf dem Einheitskreis" gelernt (eine Wurzel des Moduls 1), aber jetzt scheint es eine Wurzel des charakteristischen Polynoms zu sein (und im Zusammenhang mit dem ADF-Test) tatsächlich gleich 1 ist . Auch wenn ich im Titel den falschen Sinn habe, antwortet Ihre Antwort auf die beabsichtigte Frage. Denken Sie also, dass es in Ordnung ist.
Glen_b

Mein Punkt ist wahrscheinlich nicht klar formuliert: Im Titel suchen Sie nach Beispielen für Serien "ohne eine Einheitswurzel", während der erste Absatz (für mich) nach Beispielen klingt, in denen das Ablehnen falsch ist. Mein erstes Beispiel ist eines für den letzteren Fall, in dem ADF wahrscheinlich ablehnt, obwohl der Prozess eine Einheitswurzel hat.
Christoph Hanck

Ah, sorry, ich habe nicht richtig darüber nachgedacht. Ja, streng genommen entspricht es keiner der beiden Interpretationen des Titels, aber es antwortet immer noch auf die allgemeinere Frage im Körper. (Titel sind notwendigerweise weniger nuanciert, daher ist dies kein Problem.) ... Ich denke, es ist eine sehr interessante Antwort, und wenn irgendetwas meinem eigentlichen Zweck besser dient, als es der Titel verlangt.
Glen_b

7

Unit-Root-Tests sind bekanntermaßen schwierig. Die Verwendung eines Tests ist normalerweise nicht ausreichend und Sie müssen sehr vorsichtig mit den genauen Annahmen sein, die der Test verwendet.

Die Art und Weise, wie der ADF aufgebaut ist, macht ihn anfällig für eine Reihe von einfachen nichtlinearen Trends mit zusätzlichem weißem Rauschen. Hier ist ein Beispiel:

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

Hier haben wir den exponentiellen Trend und wir sehen, dass ADF ziemlich schlecht abschneidet. Es akzeptiert in 30% der Fälle den Nullwert der Einheitswurzel und lehnt ihn in 70% der Fälle ab.

Normalerweise ist das Ergebnis einer Analyse nicht zu behaupten, dass die Serie stationär ist oder nicht. Wenn die in der Analyse verwendeten Methoden Stationarität erfordern, manifestiert sich die falsche Annahme, dass die Serie stationär ist, wenn dies tatsächlich nicht der Fall ist, normalerweise auf die eine oder andere Weise. Ich persönlich sehe mir also die gesamte Analyse an, nicht nur den Teil zum Testen der Einheitswurzel. Zum Beispiel funktionieren OLS und NLS gut für nicht stationäre Daten, bei denen die Nichtstationarität im Mittel ist, dh im Trend. Wenn also jemand fälschlicherweise behauptet, dass die Serie stationär ist und OLS / NLS anwendet, ist diese Behauptung möglicherweise nicht relevant.


1
(+1) nicht nur, sondern auch für die übersichtliche Vermeidung der Schleife in der Simulation! Nicht, dass es für den Gesamteindruck wichtig wäre, aber: Es scheinen 320 von 1000 zu sein Akzeptanzen (p>0,05), Nein?
Christoph Hanck

Ah ja, ich habe die Zeichen verwechselt. Ich habe die Antwort entsprechend korrigiert. Danke fürs bemerken!
mpiktas

Warum hast du nicht benutzt sapply(oo, "[[","p.value")?
Germcd

Nun, ich habe es nur mit Pipe-Syntax verwendet. Ich mag Rohre :)
mpiktas

1
Ich mag auch Dplyr. Für diesen Code ist das Laden von magrittr nicht erforderlich.
mpiktas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.