time_series:stationaritaet

Stationarität

Viele Modelle setzen die Stationarität von Zeitreihen voraus, damit sie angewandt werden können.

Um stationäre Modelle zu erzeugen sollte die Zeitreihe zuerst von Saisonalitäten bereinigt werden. Weiterhin kann versucht werden einzelne problematische Variablen durch ihre Differenzen (in R mit diff()) zu ersetzen, wobei sich dadurch die Modellinterpretation ändert (bspw. führt nun eine Änderung der Änderungsrate zu einem entsprechenden Ergebnis anstelle die Änderung des Wertes eines Ergebnisses).

Ob eine Zeitreihe eine Einheitswurzel besitzt und folglich nicht-stationär ist, kann mit dem Dickey-Fuller oder Augmented Dickey Fuller Test geprüft werden.

Ausgangspunkt eines Dickey-Fuller Tests ist ein AR(1)-Prozess der Form

$$ y_t = \theta y_{t-1} + \epsilon_t $$

$\theta$ ist der Regressionskoeffizient, $\epsilon$ ist ein Fehlerterm für weißes Rauschen.

Falls $\theta = 1$ liegt eine Einheitswurzel vor, was bedeutet, dass das Model nicht-stationär ist.

Umformuliert ergibt sich das Modell mit dem Differenzoperator als: $$ \Delta y_t = (\theta-1) y_{t-1} + \epsilon_t = \delta y_{t-1} + \epsilon_t $$

Liegt eine Einheitswurzel vor, so wird die Differenz zwischen zwei Zeitpunkten t und t-1 also nur durch das weiße Rauschen zum Zeitpunkt t erklärt.

Die folgenden Hypothesen werden getestet: $$H_0 : \delta = 0 \text{(Nicht-Stationär)}$$ $$H_1 : \delta < 0 \text{(Stationär)}$$

Um zu entscheiden, ob eine Einheitswurzel vorliegt, wird die t-Statistik berechnet und mit den Werten aus einer Dickey-Fuller-Tabelle verglichen. Wenn die t-Werte außerhalb des Konfidenzintervalls liegen, wird die Nullhypothese abgelehnt.

Neben dieser einfachen Version des Dickey-Fuller-Tests gibt es Tests, die sowohl einen Drift, als auch einen deterministischen Trend berücksichtigen.

Die Formel für einen Unit-Root-Test mit Drift lautet: $$ \Delta y_t = b_0 + \delta y_{t-1} + \epsilon_t $$

Die Formel für einen Unit-Root-Test mit Drift und deterministischen Trend lautet: $$ \Delta y_t = b_0 + b_1 t + \delta y_{t-1} + \epsilon_t $$

Es existieren einige Vorgehensweisen, um zu bestimmen ob eine Konstante und ein deterministischer Trend benutzt werden soll (siehe Wiki http://en.wikipedia.org/wiki/Dickey%E2%80%93Fuller_test).

Bei einem Augmented Dickey Fuller-Test ist nicht mehr ein AR(1), sondern ein AR(p) Prozess Ausgangspunkt der Betrachtung.

Entsprechend erweitert sich die Formel: $$ \Delta y_t = b_0 + b_1 t + b_2 y_{t-1} + \delta_1 \Delta y_{t-1} + \dots + \delta_{p-1} \Delta y_{t-p+1} + \epsilon_t $$

Bestimmung der Laglänge k

Fraglich ist, welches Lag gewählt werden soll. Vorgeschlagen wird, die t-Werte der Koeffizienten zu betrachten, oder ein Informationskriterium heranzuziehen.

Das grundsätzliche Problem besteht darin, dass bei einer zu kleinen Laglänge die serial Korrelation (serial correlation) der Residuen zu groß ist, bei zu großen Lags schwindet hingegen die Power des Tests.

Ng and Perron (1995) schlagen folgende Vorgehensweise vor:

  1. $p_max$ für $p$ setzen.
  2. ADF-Test-Regression durchführen
  3. Wenn absoluter Wert der t-Statisitik für die Signifikanz des letzten lagged Differenz größer ist als 1,6, dann setze $p = p_{max}$ und führe den Einheitswurzeltest aus. Ansonsten vermindere die Laglänge um 1 und wiederhole den Prozess.

Für $p_max$ schlägt Schwert (1989) vor:

$$p_{max} = [12*(\frac{T}{100}^(\frac{1}{4})]$$

Unter “sources\lectures\ADL\ADL mit R\R Adl Beispiel\CompLabSessionLent1_R.R” werden die Dickey-Fuller Tests beispielhaft angewandt.

Die Funktion adf.test() verwendet die Formel mit Konstante und deterministischem Trend. Weiterhin wird der Lag-Parameter geschätzt, wenn er nicht spezifiziert wurde. Die Formel dazu ist in der Hilfe zu adf.test() zu finden (>?adf.test).

>library("tseries")
>soi <- ts(fish$soi, start=c(1950, 1), freq=12)
>adf.test(soi)

Dir Rückgabe lautet im obigen Beispiel:

data:  soi 
Dickey-Fuller = -7.4822, Lag order = 7, p-value = 0.01
alternative hypothesis: stationary 

Aufgrund des geringen p-Werts ist die Nullhypothese abzulehnen, d.h. die Zeitreihe ist stationär.

In “sources\lectures\ADL\ADL mit R\R Adl Beispiel\myfunctions.R” sind weiterhin die Funktionen adf.test.1 und adf.test.2 definiert, die weitere Parameter(mit/ohne Konstante oder det. Trend) oder Daten ausgeben.

Kwiatkowski-Phillips-Schmidt-Shin (KPSS) Test

Die Hypothesen des KPSS-Test lauten: $$ H_0 : \text{Stationär}$$ $$ H_1 : \text{Nicht-Stationär} $$

kpss.test(x, null = c("Level", "Trend"), lshort = TRUE)
 
x <- rnorm(1000)  # is level stationary
kpss.test(x)
 
y <- cumsum(x)  # has unit root
kpss.test(y)
 
#Test auf Trendstationarität (Formel mit linearem Trend)
kpss.test(x, null = "Trend")
  • time_series/stationaritaet.txt
  • Last modified: 2017/02/19 15:31
  • by phreazer