Interpretation der ur.df-Ergebnisse von R (Dickey-Fuller-Einheitswurzeltest)

11

Ich führe den folgenden Unit-Root-Test (Dickey-Fuller) für eine Zeitreihe mit der ur.df()Funktion im urcaPaket aus.

Der Befehl lautet:

summary(ur.df(d.Aus, type = "drift", 6))

Die Ausgabe ist:

############################################### 
# Augmented Dickey-Fuller Test Unit Root Test # 
############################################### 

Test regression drift 


Call:
lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)

Residuals:
      Min        1Q    Median        3Q       Max 
-0.266372 -0.036882 -0.002716  0.036644  0.230738 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)   
(Intercept)  0.001114   0.003238   0.344  0.73089   
z.lag.1     -0.010656   0.006080  -1.753  0.08031 . 
z.diff.lag1  0.071471   0.044908   1.592  0.11214   
z.diff.lag2  0.086806   0.044714   1.941  0.05279 . 
z.diff.lag3  0.029537   0.044781   0.660  0.50983   
z.diff.lag4  0.056348   0.044792   1.258  0.20899   
z.diff.lag5  0.119487   0.044949   2.658  0.00811 **
z.diff.lag6 -0.082519   0.045237  -1.824  0.06874 . 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Residual standard error: 0.06636 on 491 degrees of freedom
Multiple R-squared: 0.04211,    Adjusted R-squared: 0.02845 
F-statistic: 3.083 on 7 and 491 DF,  p-value: 0.003445 


Value of test-statistic is: -1.7525 1.6091 

Critical values for test statistics: 
      1pct  5pct 10pct
tau2 -3.43 -2.86 -2.57
phi1  6.43  4.59  3.78
  1. Was bedeuten die Signifikanzcodes (Signifikanzcodes)? Ich habe festgestellt, dass einige von ihnen gegen Folgendes geschrieben wurden: z.lag.1, z.diff.lag.2, z.diff.lag.3 (der Signifikanzcode ".") Und z.diff.lag.5 (der "." ** "Signifikanzcode).

  2. Die Ausgabe gibt mir zwei (2) Werte der Teststatistik: -1,7525 und 1,6091. Ich weiß, dass die ADF-Teststatistik die erste ist (dh -1,7525). Was ist dann der zweite?

  3. Um die Hypothese für die Einheitswurzel bei einem Signifikanzniveau von 95% zu testen, muss ich schließlich meine ADF-Teststatistik (dh -1,7525) mit einem kritischen Wert vergleichen, den ich normalerweise aus einer Tabelle erhalte. Die Ausgabe hier scheint mir die kritischen Werte durch zu geben. Die Frage ist jedoch: Welchen kritischen Wert zwischen "tau2" und "phi1" soll ich verwenden?

Danke für Ihre Antwort.

Gespeichert von Jesus
quelle
1 - Signifikanzcodes sollten klar sein ... Lag hat einen Doppelstern, also ist es p = 0,01 2- diese testen verschiedene H0s: "keine" oder "Drift" oder "Trend" 3- kritische Werte hängen wiederum von derselben Sache ab
Welches
@joint_p Es tut mir leid, aber ich bin nur ein Anfänger. Ihre Antworten waren sehr einfach. Könnten Sie bitte näher auf das eingehen, was Sie gesagt haben? Ich würde dies sehr begrüssen. Vielen Dank.
SavedByJESUS
amazon.com/Analysis-Integrated-Cointegrated-Time-Use/dp/… Dies ist ein sehr gutes Buch, mit dem ich studiert habe
Joint_P

Antworten:

16

Es scheint, dass die Ersteller dieses speziellen R-Befehls davon ausgehen, dass man mit den ursprünglichen Dickey-Fuller-Formeln vertraut ist, und daher keine relevante Dokumentation für die Interpretation der Werte bereitgestellt haben. Ich fand, dass Enders eine unglaublich hilfreiche Ressource war (Applied Econometric Time Series 3e, 2010, S. 206-209 - ich stelle mir vor, dass auch andere Ausgaben in Ordnung wären). Im Folgenden werde ich als Beispiel Daten aus dem URCA-Paket verwenden, das reale Einkommen in Dänemark.

> income <- ts(denmark$LRY)

Es kann nützlich sein, zuerst die 3 verschiedenen Formeln zu beschreiben, die Dickey-Fuller verwendet, um verschiedene Hypothesen zu erhalten, da diese mit den Optionen "Typ" von ur.df übereinstimmen. Enders gibt an, dass in all diesen drei Fällen der konsistente Term Gamma ist, der Koeffizient für den vorherigen Wert von y, der Verzögerungsterm. Wenn gamma = 0 ist, gibt es eine Einheitswurzel (Random Walk, nicht stationär). Wenn die Nullhypothese gamma = 0 ist und p <0,05 ist, lehnen wir die Null ab (bei 95%) und nehmen an, dass es keine Einheitswurzel gibt. Wenn wir die Null nicht ablehnen (p> 0,05), nehmen wir an, dass eine Einheitswurzel existiert. Von hier aus können wir mit der Interpretation der Tau und Phi fortfahren.

1) Typ = "keine": (Formel aus Enders S. 208)Δy(t)=γy(t1)+e(t)

(wobei der Fehlerterm ist, der als weißes Rauschen angenommen wird; von ; bezieht sich auf den vorherigen Wert von y, so ist der Verzögerungsterm)e(t)γ=a1y=ay(t1)+e(t)y(t1)

Für Typ = "keine" ist tau (oder tau1 in der R-Ausgabe) die Nullhypothese für gamma = 0. Unter Verwendung des Einkommensbeispiels für Dänemark erhalte ich "Wert der Teststatistik ist 0,7944" und die "kritischen Werte für Teststatistiken sind : tau1 -2.6 -1.95 -1.61. Da sich die Teststatistik in allen drei Regionen (1%, 5%, 10%) befindet, in denen wir die Null nicht ablehnen, sollten wir davon ausgehen, dass es sich bei den Daten um einen zufälligen Spaziergang handelt Eine Einheitswurzel ist vorhanden. In diesem Fall bezieht sich das tau1 auf die Gamma = 0-Hypothese. Das "z.lag1" ist der Gamma-Term, der Koeffizient für den Lag-Term (y (t-1)), der p = ist 0,431, was wir nicht als signifikant ablehnen, was einfach impliziert, dass Gamma für dieses Modell statistisch nicht signifikant ist. Hier ist die Ausgabe von R.

> summary(ur.df(y=income, type = "none",lags=1))
> 
> ############################################### 
> # Augmented Dickey-Fuller Test Unit Root Test # 
> ############################################### 
> 
> Test regression none 
> 
> 
> Call:
> lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
> 
> Residuals:
>       Min        1Q    Median        3Q       Max 
> -0.044067 -0.016747 -0.006596  0.010305  0.085688 
> 
> Coefficients:
>             Estimate Std. Error t value Pr(>|t|)
> z.lag.1    0.0004636  0.0005836   0.794    0.431
> z.diff.lag 0.1724315  0.1362615   1.265    0.211
> 
> Residual standard error: 0.0251 on 51 degrees of freedom
> Multiple R-squared:  0.04696,   Adjusted R-squared:  0.009589 
> F-statistic: 1.257 on 2 and 51 DF,  p-value: 0.2933
> 
> 
> Value of test-statistic is: 0.7944 
> 
> Critical values for test statistics: 
>      1pct  5pct 10pct
> tau1 -2.6 -1.95 -1.61

2) type = "drift" (Ihre spezifische Frage oben) (Formel aus Enders S. 208)Δy(t)=a0+γy(t1)+e(t)

(wobei a0 "eine Sub-Null" ist und sich auf die Konstante oder den Driftterm bezieht) Hier wird die Ausgabeinterpretation schwieriger. "tau2" ist immer noch die Nullhypothese . In diesem Fall, in dem die erste Teststatistik = -1,4462 im Bereich liegt, in dem die Null nicht verworfen werden kann, sollten wir erneut eine Einheitswurzel annehmen, nämlich .γ=0γ=0
Der Ausdruck phi1 bezieht sich auf die zweite Hypothese, bei der es sich um eine kombinierte Nullhypothese von a0 = gamma = 0 handelt. Dies bedeutet, dass BEIDE Werte gleichzeitig auf 0 getestet werden. Wenn p <0,05 ist, lehnen wir die Null ab und nehmen an, dass MINDESTENS einer davon falsch ist - dh einer oder beide der Begriffe a0 oder gamma sind nicht 0. Wenn diese Null nicht abgelehnt wird, bedeutet dies, dass BEIDE a0 UND gamma = 0, Dies impliziert 1) dass Gamma = 0 ist, daher ist eine Einheitswurzel vorhanden, UND 2) a0 = 0, so dass es keinen Driftterm gibt. Hier ist der R-Ausgang

> summary(ur.df(y=income, type = "drift",lags=1))
> 
> ############################################### 
> # Augmented Dickey-Fuller Test Unit Root Test # 
> ############################################### 
> 
> Test regression drift 
> 
> 
> Call:
> lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
> 
> Residuals:
>       Min        1Q    Median        3Q       Max 
> -0.041910 -0.016484 -0.006994  0.013651  0.074920 
> 
> Coefficients:
>             Estimate Std. Error t value Pr(>|t|)
> (Intercept)  0.43453    0.28995   1.499    0.140
> z.lag.1     -0.07256    0.04873  -1.489    0.143
> z.diff.lag   0.22028    0.13836   1.592    0.118
> 
> Residual standard error: 0.0248 on 50 degrees of freedom
> Multiple R-squared:  0.07166,   Adjusted R-squared:  0.03452 
> F-statistic:  1.93 on 2 and 50 DF,  p-value: 0.1559
> 
> 
> Value of test-statistic is: -1.4891 1.4462 
> 
> Critical values for test statistics: 
>       1pct  5pct 10pct
> tau2 -3.51 -2.89 -2.58
> phi1  6.70  4.71  3.86

3) Schließlich für den Typ = "Trend": (Formel aus Enders S. 208)Δy(t)=a0+gammay(t1)+a2(t)+e(t)

(wobei a2 (t) ein Zeittrendterm ist) Die Hypothesen (aus Enders S. 208) lauten wie folgt: tau: gamma = 0 phi3: gamma = a2 = 0 phi2: a0 = gamma = a2 = 0 Dies ist ähnlich wie der R-Ausgang. In diesem Fall beträgt die Teststatistik -2,4216 2,1927 2,9343. In all diesen Fällen fallen diese in die Zonen "Null nicht ablehnen" (siehe kritische Werte unten). Was tau3 wie oben impliziert, ist, dass wir die Null der Einheitswurzel nicht ablehnen, was impliziert, dass eine Einheitswurzel vorhanden ist. Wenn phi3 nicht abgelehnt wird, bedeutet dies zwei Dinge: 1) gamma = 0 (Einheitswurzel) UND 2) es gibt keinen Zeittrendterm, dh a2 = 0. Wenn wir diese Null ablehnen, würde dies bedeuten, dass einer oder beide dieser Begriffe nicht 0 sind. Wenn phi2 nicht abgelehnt wird, bedeutet dies drei Dinge: 1) gamma = 0 UND 2) kein Zeittrendterm UND 3) kein Driftterm, dh dieser Gamma = 0, dass a0 = 0 und dass a2 = 0.
Hier ist der R-Ausgang

> summary(ur.df(y=income, type = "trend",lags=1))
> 
> ############################################### 
> # Augmented Dickey-Fuller Test Unit Root Test # 
> ############################################### 
> 
> Test regression trend 
> 
> 
> Call:
> lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
> 
> Residuals:
>       Min        1Q    Median        3Q       Max 
> -0.036693 -0.016457 -0.000435  0.014344  0.074299 
> 
> Coefficients:
>               Estimate Std. Error t value Pr(>|t|)  
> (Intercept)  1.0369478  0.4272693   2.427   0.0190 *
> z.lag.1     -0.1767666  0.0729961  -2.422   0.0192 *
> tt           0.0006299  0.0003348   1.881   0.0659 .
> z.diff.lag   0.2557788  0.1362896   1.877   0.0665 .
> ---
> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> 
> Residual standard error: 0.02419 on 49 degrees of freedom
> Multiple R-squared:  0.1342,    Adjusted R-squared:  0.08117 
> F-statistic: 2.531 on 3 and 49 DF,  p-value: 0.06785
> 
> 
> Value of test-statistic is: -2.4216 2.1927 2.9343 
> 
> Critical values for test statistics: 
>       1pct  5pct 10pct
> tau3 -4.04 -3.45 -3.15
> phi2  6.50  4.88  4.16
> phi3  8.73  6.49  5.47

In Ihrem obigen speziellen Beispiel bedeutet dies für die d.Aus-Daten, dass beide Teststatistiken innerhalb der Zone "Nicht ablehnen" liegen, dass gamma = 0 UND a0 = 0 ist, was bedeutet, dass es eine Einheitswurzel gibt, aber kein Driftterm.

Jeramy Townsley
quelle
@ Jeremy, In Ihrer ausführlichen Antwort Teil 3 (mit Trend) haben Sie erwähnt: "In diesem Fall sind die Teststatistiken -2,4216 2,1927 2,9343. In all diesen Fällen fallen diese in die Zonen" Nicht ablehnen der Null "(siehe kritisch) Werte unten). " Meine Frage ist, ob 2.1927 eine Teststatistik für phi2 ist. Sollte sie mit phi2 verglichen werden? 6.50 4.88 4.16? Und wenn das richtig ist, wie ist die Bedingung, um das phi2 H0 (Einheitswurzel ohne Trend und Drift) zu akzeptieren?
Saraz
5

Wie Joint-P bereits ausgeführt hat, sind die Signifikanzcodes ziemlich Standard und entsprechen p-Werten, dh der statistischen Signifikanz eines Hypothesentests. Ein p-Wert von 0,01 bedeutet, dass die Schlussfolgerung innerhalb von 99% Konfidenz wahr ist.

Der Wikipedia-Artikel über Dickey-Fuller beschreibt die drei Versionen des Dickey-Fuller-Tests: die "Einheitswurzel", "Einheitswurzel mit Drift" und "Einheitswurzel mit Drift und deterministischem Zeittrend" oder was in der urcaDokumentation als Typ = "keine", "Drift" bzw. "Trend".

Jeder dieser Tests ist eine zunehmend komplexere lineare Regression. In allen gibt es die Wurzel, aber in der Drift gibt es auch einen Driftkoeffizienten, und im Trend gibt es auch einen Trendkoeffizienten. Jedem dieser Koeffizienten ist ein Signifikanzniveau zugeordnet. Während die Signifikanz des Wurzelkoeffizienten der wichtigste und das Hauptaugenmerk des DF-Tests ist, könnten wir auch daran interessiert sein, ob der Trend / die Drift auch statistisch signifikant ist oder nicht. Nachdem ich an den verschiedenen Modi herumgebastelt und gesehen hatte, welche Koeffizienten in den t-Tests erscheinen / verschwinden, konnte ich leicht identifizieren, welcher Koeffizient welchem ​​t-Test entsprach.

Sie können wie folgt geschrieben werden (von der Wiki-Seite):

(Einheitswurzel)Δyt=δyt1+ut

(mit Drift)Δyt=δyt1+a0+ut

(mit Trend)Δyt=δyt1+a0+a1t+ut

In Ihrem Fall entspricht "tau2" , während "phi1" . Sie werden auch einen dritten Koeffizienten im "Trend" -Test sehen, der in der dritten Gleichung oben entsprechen würde. Die Namen der Variablen ändern sich jedoch, wenn Sie zu "Trend" wechseln. Seien Sie also vorsichtig und stellen Sie sicher, dass Sie dies selbst tun, um dies zu überprüfen. Ich glaube an den "Trend" -Modus, "tau3" entspricht , "phi2" entspricht und "phi3" entspricht .a 0 a 1 δ a 0 a 1δa0a1δa0a1

Paul
quelle
1

Zusammenfassung der Dickey Fuller Tests

Weitere Informationen finden Sie in Roger Permans Vorlesungsunterlagen zu Unit-Root-Tests

Siehe auch Tabelle 4.2 in Enders, Applied Econometric Time Series (4e), in der die verschiedenen Hypothesen zusammengefasst sind, auf die sich diese Teststatistiken beziehen. Der Inhalt stimmt mit dem oben angegebenen Bild überein.

user3096626
quelle
1

Ich fand Jeramys Antwort ziemlich einfach zu befolgen, versuchte aber ständig, die Logik richtig durchzugehen und Fehler zu machen. Ich habe eine R-Funktion codiert, die jeden der drei Modelltypen interpretiert und Warnungen ausgibt, wenn Inkonsistenzen oder nicht eindeutige Ergebnisse vorliegen (ich denke nicht, dass es jemals Inkonsistenzen geben sollte, wenn ich die ADF-Mathematik richtig verstehe, aber ich dachte immer noch gut Überprüfen Sie, ob die Funktion ur.df fehlerhaft ist.

Bitte werfen Sie einen Blick darauf. Gerne nehmen wir Kommentare / Korrekturen / Verbesserungen entgegen.

https://gist.github.com/hankroark/968fc28b767f1e43b5a33b151b771bf9

Hank Roark
quelle
Ihre Funktion scheint mit viel Aufwand erstellt worden zu sein. Es wäre jedoch hilfreich, ein reproduzierbares Beispiel hinzuzufügen. Möglicherweise möchten Sie eine Zeitreihe auswählen (möglicherweise eine, die bereits in R oder in einem Paket verfügbar ist), den Dickey-Fuller-Test ausführen und dann Ihre Funktion nur für interessierte Personen verwenden, um zu sehen, was sie bewirkt.
SavedByJESUS
0

sehr interessanter Beitrag und Antworten. Ich habe nur Zweifel an der von user3096626 erläuterten Tabelle. Welche Software meldet in der ADF Testausgabe der Werte des \tau_{\alpha \mu}, \tau_{\alpha \tau}und \tau_{\beta \tau}? Offensichtlich tut R das nicht

Yon Cubas
quelle
-4

phi1 phi2 phi3 entsprechen F-Tests im ADF-Framework

Aleh
quelle
4
Können Sie diese Antwort ein wenig erweitern? Im Moment ist es etwas kryptisch. Warum sollten diese gleichwertig sein?
Andy