R: Augmented Dickey Fuller (ADF) -Test


9

Ich habe ein Problem mit den Dickey-Fuller-p-Werten und der Teststatistik für den Einheitswurzeltest in R. Ich habe versucht, Funktionen zu verwenden:

urca::ur.df()
fUnitRoots::adfTest()
tseries::adf.test()

Alle zeigten unterschiedliche Ergebnisse für die gleichen Testeinstellungen (Verzögerung, Typ) im Vergleich zur gretl-Ausgabe.

Zum Beispiel:

set.seed(1)
x <- rnorm(50, 0, 3)
schwert.param <- trunc(12 * (length(na.omit(x)) / 100) ^ (1 / 4))
adfTest(x = na.omit(x), lags = schwert.param, type = "nc", title = NULL, description = NULL)

# Title:
# Augmented Dickey-Fuller Test
# 
# Test Results:
# PARAMETER:
# Lag Order: 10
# STATISTIC:
# Dickey-Fuller: -2.4362
# P VALUE: 0.01749 

Und für den gleichen Vektor x in gretl habe ich:

>     Test statistic: tau_nc(1) = -4.03652 
>     Asymptotic p-value = 5.57e-005

Beide Testeinstellungen waren ohne Konstante und Trend, Verzögerungen = 10. Warum erhalte ich also unterschiedliche Ergebnisse für dieselbe Dateneingabe? Ich weiß, der Dickey-Fuller-Test verwendet Monte Carlo, um p-Werte für die Teststatistik zu erhalten, aber sollten sie sich so stark unterscheiden, oder mache ich etwas falsch mit dieser Funktion in R?


Interessant. Ich kann nicht feststellen, warum es nebenbei Unterschiede gibt, aber es könnte sich lohnen, in jede Funktion einzusteigen, um genau zu sehen, was los ist. Als Antwort auf diese Frage habe ich etwas Ähnliches getan . In der Regel ist der Code für diese Funktionen unkompliziert. Wenn Sie sie also betrachten, ragt die Antwort möglicherweise heraus. Hoffe mein Vorschlag hilft.
Graeme Walsh

Ich weiß, aber ich kann nicht in den Code in gretl gelangen, um Unterschiede zu erkennen. Sogar die KPSS-Testausgabe von R unterscheidet sich stark von der gretl-Testausgabe ...
kodi1911

Ich dachte gretl wäre offen!? Auf jeden Fall habe ich einen Betreuer für Sie angerufen, damit er hoffentlich eine Antwort geben kann.
Graeme Walsh

@ GraemeWalsh: Es ist Open Source. Aber ich weiß nicht, wie ich mich in diesen Code einarbeiten soll. Glücklicherweise habe ich einen Code gefunden, den mein Lehrer mit dem ADF-Test geschrieben hat. Ich werde mich mit diesem Code befassen und ihn verbessern. Dann werde ich das posten, wenn es der gretl-Ausgabe ähnlich sein wird.
Kodi1911

Es gibt die t-Statistik und die Koeffizientenstatistik - verwendet Gretl vielleicht die letztere? (ρ^1)/s.e.(ρ^)T(ρ^1)
Christoph Hanck

Antworten:


17

Ich habe nicht versucht, die Probleme mit gretl zu replizieren, aber zumindest die von Ihnen erwähnten R-Pakete scheinen übereinzustimmen, wenn sowohl die Deterministiken (Trend vs. Konstante alias Drift vs. Keine) als auch die Verzögerungen (fest, Informationskriterien, Heuristiken) angegeben sind auf die gleiche Weise. Es gibt Unterschiede in der Art und Weise, wie die p-Werte berechnet werden, aber für die von xIhnen generierten Daten sind sie sehr ähnlich.

Ich habe die folgende Übersicht für meine Schüler geschrieben und dachte, ich könnte sie hier teilen, wenn jemand sie nützlich findet. Persönlich habe ich meistens verwendet tseriesund CADFtest:

  • adf.test()in tseries.
    Deterministik: Nur linearer Trend.
    Verzögerungen: Standardmäßig heuristisch, kann jedoch vom Benutzer ausgewählt werden.
    P-Wert: Aus der Tabelle der kritischen Werte.
  • CADFtest()in CADFtest.
    Deterministik: Trend standardmäßig, Konstante (auch bekannt als Drift) oder keine unterstützt.
    Verzögerungen: Die Standardeinstellung ist 1, kann jedoch über Informationskriterien oder vom Benutzer ausgewählt werden.
    P-Wert: Berechnung basierend auf Costantini et al. (2007). Siehe auch Lupi (2009). Unit Root CADF-Tests mit R. Journal of Statistical Software, 32 (2), 1-19. http://www.jstatsoft.org/v32/i02/ .
    Kommentare: Zusätzliche Regressoren (und ihre Verzögerungen) können zur zusätzlichen Regression hinzugefügt werden.
  • ur.df()in urca.
    Deterministik: Standardmäßig werden keine, Konstante und Trend ebenfalls unterstützt.
    Verzögerungen: Die Standardeinstellung ist 1, kann jedoch über Informationskriterien oder vom Benutzer ausgewählt werden.
    P-Wert: Keine, gibt jedoch eine summary()Tabelle mit kritischen Werten an (1%, 5%, 10%).
  • adfTest()in fUnitRoots.
    Deterministik: Standardmäßig werden keine, Konstante und Trend ebenfalls unterstützt.
    Verzögerungen: Die Standardeinstellung ist 1, kann jedoch vom Benutzer ausgewählt werden.
    P-Wert: Aus der Tabelle der kritischen Werte.
    Kommentare: Basierend auf adf.test()von tseriesaber durch zusätzliche Deterministik erweitert.

Für die von Ihnen generierten Daten:

set.seed (1)
x <- rnorm (50, 0, 3)

Schauen wir uns die verschiedenen Ergebnisse für den Test mit Trend (da dies von allen Funktionen unterstützt wird) und 10 Verzögerungen an (wie in Ihrer obigen Heuristik vorgeschlagen). Die Teststatistik ist immer genau gleich und die p-Werte liegen nahe beieinander.

tseries :: adf.test (x, k = 10)
## Augmented Dickey-Fuller Test
## 
## Daten: x
## Dickey-Fuller = -1,6757, Verzögerungsreihenfolge = 10, p-Wert = 0,7044
## alternative Hypothese: stationär

Bibliothek ("CADFtest")
CADFtest (x, max.lag.y = 10, type = "trend")
## ADF-Test
## 
## Daten: x
ADF (10) = -1,6757, p-Wert = 0,743
## alternative Hypothese: wahres Delta ist kleiner als 0
## Beispielschätzungen:
## Delta 
## -1.751283 

urca :: ur.df (x, Verzögerungen = 10, Typ = "Trend")
## ################################################## ################ 
## # Augmented Dickey-Fuller Test Unit Root / Cointegration Test # 
## ################################################## ################ 
## 
## Der Wert der Teststatistik lautet: -1,6757 1,3699 2,0189 

fUnitRoots :: adfTest (x, Verzögerungen = 10, Typ = "ct")
## Titel:
## Augmented Dickey-Fuller Test
## 
## Testergebnisse:
## PARAMETER:
## Lag Order: 10
## STATISTISCH:
## Dickey-Fuller: -1,6757
## P VALUE:
## 0,7044 
## 
## Beschreibung:
## Sat Aug 22 20:19:18 2015 von Benutzer: zeileis

Hier ist eine etwas verwandte Frage und eine Antwort darauf. Sie scheinen ein Experte in diesem Thema zu sein, und ich würde mich freuen, wenn Sie sich ansehen würden, ob die Antwort sinnvoll ist.
Richard Hardy

1

@ChristophHanck @GraemeWalsh: Ok, wahrscheinlich habe ich gefunden, was hier los ist. Zuerst habe ich die Gretl-Sprache von Polnisch auf Englisch geändert und festgestellt, dass im ADF-Testfenster standardmäßig eine Option aktiviert ist - " Test von maximaler Verzögerungsreihenfolge " unter Verwendung des Akaike-Informationskriteriums. Wenn ich diese Option deaktiviere, erhalte ich die gleichen Ergebnisse wie in R. Jetzt möchte ich wissen, wie diese Option in R verwendet wird. Weiß jemand, wie das geht?


Siehe meine Antwort oben. Ich würde empfehlen, dafür zu verwenden CADFtest.
Achim Zeileis

@ AchimZeileis habe ich getan, danke. Ich habe das "Test down from Maximum Lag Order" überprüft und es wird die Vergrößerung reduzieren, wenn das Akaike-Informationskriterium kleiner ist als das des Vorgängermodells und so weiter ...
kodi1911

@ kodi1911 Eine Möglichkeit besteht darin, die Funktion AIC () (Statistikpaket) über eine Reihe von Modellobjekten auszuführen - Modelle mit beispielsweise 1 bis n Verzögerungen, wobei n die maximale Verzögerungsreihenfolge ist. Wählen Sie dann das Modell mit dem kleinsten AIC aus. Wenn Sie Hilfe bei der Programmierung benötigen, lassen Sie es uns wissen. Gut, dass du das übrigens herausgefunden hast!
Graeme Walsh
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.