R verfügt über umfangreiche Möglichkeiten zur Analyse von Zeitreihendaten. Dieser Abschnitt beschreibt die Erstellung einer Zeitreihe, die saisonale Zerlegung, die Modellierung mit Exponential- und ARIMA-Modellen und die Prognose mit dem Prognosepaket.
Erstellen einer Zeitreihe
Die Funktion ts() wandelt einen numerischen Vektor in ein R-Zeitreihenobjekt um. Das Format ist ts(vector, start=, end=, frequency=), wobei start und end die Zeiten der ersten und letzten Beobachtung sind und frequency die Anzahl der Beobachtungen pro Zeiteinheit angibt (1=jährlich, 4=vierteljährlich, 12=monatlich usw.).
# save a numeric vector containing 72 monthly observations# from Jan 2009 to Dec 2014 as a time series object
myts <- ts(myvector, start=c(2009,1), end=c(2014,12), frequency=12)# subset the time series (June 2014 to December 2014)
myts2 <- window(myts, start=c(2014,6), end=c(2014,12))# plot series
plot(myts)Bereitgestellt von
Saisonale Zersetzung
Eine Zeitreihe mit additiven Trend-, saisonalen und unregelmäßigen Komponenten kann mit der Funktion stl() zerlegt werden. Beachte, dass eine Reihe mit multiplikativen Effekten oft durch eine Log-Transformation in eine Reihe mit additiven Effekten umgewandelt werden kann (d.h. newts <- log(myts)).
# Seasonal decomposition
fit <- stl(myts, s.window="period")
plot(fit)# additional plots
monthplot(myts)
library(forecast)
seasonplot(myts)Bereitgestellt von
Exponentialmodelle
Sowohl die Funktion HoltWinters() in der Basisinstallation als auch die Funktion ets() im Prognosepaket können zur Anpassung von Exponentialmodellen verwendet werden.
# simple exponential - models level
fit <- HoltWinters(myts, beta=FALSE, gamma=FALSE)# double exponential - models level and trend
fit <- HoltWinters(myts, gamma=FALSE)# triple exponential - models level, trend, and seasonal components
fit <- HoltWinters(myts)# predictive accuracy
library(forecast)
accuracy(fit)# predict next three future values
library(forecast)
forecast(fit,3)
plot(forecast(fit,3))Bereitgestellt von
ARIMA-Modelle
Die Funktion arima() kann verwendet werden, um ein autoregressives integriertes gleitendes Durchschnittsmodell anzupassen. Weitere nützliche Funktionen sind:
lag(ts, k)
verzögerte Version der Zeitreihe, um k Beobachtungen zurückversetzt
diff(ts, differences=d)
Differenz der Zeitreihen d mal
ndiffs(ts)
Anzahl der Differenzen, die erforderlich sind, um Stationarität zu erreichen (aus dem Prognosepaket )
acf(ts)
Autokorrelationsfunktion
pacf(ts)
partielle Autokorrelationsfunktion
adf.test(ts)
Erweiterter Dickey-Fuller-Test. Die Ablehnung der Nullhypothese legt nahe, dass eine Zeitreihe stationär ist (aus dem tseries-Paket )
Box.test(x, type="Ljung-Box")
Pormanteau-Test, dass die Beobachtungen in einem Vektor oder einer Zeitreihe x unabhängig sind
Beachte, dass das Prognosepaket etwas schönere Versionen von acf() und pacf() hat, die Acf() bzw. Pacf() heißen.
# fit an ARIMA model of order P, D, Q
fit <- arima(myts, order=c(p, d, q)# predictive accuracy
library(forecast)
accuracy(fit)# predict next 5 observations
library(forecast)
forecast(fit,5)
plot(forecast(fit,5))Bereitgestellt von
Automatisierte Vorhersage
Das Prognosepaket bietet Funktionen für die automatische Auswahl von Exponential- und ARIMA-Modellen. Die Funktion ets() unterstützt sowohl additive als auch multiplikative Modelle. Die Funktion auto.arima() kann sowohl saisonale als auch nicht saisonale ARIMA-Modelle verarbeiten. Die Modelle werden so ausgewählt, dass sie eines von mehreren Anpassungskriterien maximieren.
library(forecast)# Automated forecasting using an exponential model
fit <- ets(myts)# Automated forecasting using an ARIMA model
fit <- auto.arima(myts)Bereitgestellt von
R verfügt über umfangreiche Möglichkeiten zur Analyse von Zeitreihendaten. Dieser Abschnitt beschreibt die Erstellung einer Zeitreihe, die saisonale Zerlegung, die Modellierung mit Exponential- und ARIMA-Modellen und die Prognose mit dem Prognosepaket.
Erstellen einer Zeitreihe
Die Funktion ts() wandelt einen numerischen Vektor in ein R-Zeitreihenobjekt um. Das Format ist ts(vector, start=, end=, frequency=), wobei start und end die Zeiten der ersten und letzten Beobachtung sind und frequency die Anzahl der Beobachtungen pro Zeiteinheit angibt (1=jährlich, 4=vierteljährlich, 12=monatlich usw.).
Saisonale Zersetzung
Eine Zeitreihe mit additiven Trend-, saisonalen und unregelmäßigen Komponenten kann mit der Funktion stl() zerlegt werden. Beachte, dass eine Reihe mit multiplikativen Effekten oft durch eine Log-Transformation in eine Reihe mit additiven Effekten umgewandelt werden kann (d.h. newts <- log(myts)).
Exponentialmodelle
Sowohl die Funktion HoltWinters() in der Basisinstallation als auch die Funktion ets() im Prognosepaket können zur Anpassung von Exponentialmodellen verwendet werden.
ARIMA-Modelle
Die Funktion arima() kann verwendet werden, um ein autoregressives integriertes gleitendes Durchschnittsmodell anzupassen. Weitere nützliche Funktionen sind:
Beachte, dass das Prognosepaket etwas schönere Versionen von acf() und pacf() hat, die Acf() bzw. Pacf() heißen.
Automatisierte Vorhersage
Das Prognosepaket bietet Funktionen für die automatische Auswahl von Exponential- und ARIMA-Modellen. Die Funktion ets() unterstützt sowohl additive als auch multiplikative Modelle. Die Funktion auto.arima() kann sowohl saisonale als auch nicht saisonale ARIMA-Modelle verarbeiten. Die Modelle werden so ausgewählt, dass sie eines von mehreren Anpassungskriterien maximieren.
Weiter gehen
Es gibt viele gute Online-Ressourcen zum Erlernen der Zeitreihenanalyse mit R. Dazu gehören A little book of R for time series von Avril Chohlan und der DataCamp-Kurs Manipulating time series in R von Jeffrey Ryan.