Beispiel in R: Verfahren zur Modellierung von ZR mit Saison und Trend

Ähnliche Dokumente
11. Zeitreihen mit Trend und Saisonalität

SBWL Tourismusanalyse und Freizeitmarketing, Vertiefungskurs 2

SBWL Tourismusanalyse und Freizeitmarketing, Vertiefungskurs 2

[ 1 ] Welche der folgenden Aussagen sind WAHR? Kreuzen Sie sie an.

Einführung in R für SBWL Tourismusanalyse und Freizeitmarketing VK 2

In konstanten Modellen wird davon ausgegangen, dass die zu prognostizierende Größe sich über die Zeit hinweg nicht verändert.

5. Zeitreihenanalyse und Prognoseverfahren

Zeit Umsatz. t U=U(t) BS - 13 BS Modul : Analyse zeitabhängiger Daten z.b. Prof. Dr. W. Laufner Beschreibende Statistik

13. Übungswoche. Kapitel 12: Varianzanalyse (Fortsetzung)

Gütebewertung und Performanceanalyse von Prognosealgorithmen bei unterschiedlichen Signalklassen

Kapitel XII - Einführung in die Zeitreihenanalyse

Regionale Arbeitslosenprognosen: Die Leistungsfähigkeit ausgewählter Zeitreihenverfahren

5.6 Empirische Wirtschaftsforschung

Formale Methoden der Ökonomik: Einführung in die empirische Wirtschaftsforschung

Zeitreihenanalyse Das klassische Komponentenmodell

Tutorium zur Makroökonomik

Einführung in Excel. Zur Verwendung im Experimentalphysik-Praktikum. für Studierende im Sem. P3

Prognosemethoden angewandt auf Besucherzahlen ausgewählter Ausflugsziele in Niederösterreich: Stift Geras und Kunsthalle Krems

9.3 Lineare Regression

Überschrift. Titel Prognosemethoden

Lineare Modelle in R: Klassische lineare Regression

Zeitreihenökonometrie

Praktikum Einführung in die Mathematik 1 WS 2010/2011 Blatt 2 Lösungen

Bestandsmanagement. Prognoseverfahren und Lagerhaltungspolitiken

Zeitreihenanalyse mit EViews Klassische Zeitreihenanalyse. 4.1 Empirisches Autokorrelogramm. 4.2 Exponentielle Glättungsverfahren

Kurs 9.3: Forschungsmethoden II

Kapitel 8. Einfache Regression. Anpassen des linearen Regressionsmodells, OLS. Eigenschaften der Schätzer für das Modell

Übung zur Empirischen Wirtschaftsforschung V. Das Lineare Regressionsmodell

Anwendungshinweise zur Anwendung der Soziometrie

QUANTITATIVE STATISTICAL METHODS: REGRESSION AND FORECASTING JOHANNES LEDOLTER VIENNA UNIVERSITY OF ECONOMICS AND BUSINESS ADMINISTRATION SPRING 2013

Statistisches Programmieren

Prüfung zu Modul 26 (BA Bw) bzw. 10 (BA IB) (Wirtschaftsstatistik)

R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung.

Lineare Algebra mit dem Statistikprogramm R

Aufgabe 2: Anzahl Erdbeben als Funktion der Zeit

Fachhochschule Aachen, Abteilung Jülich Seminararbeit Thema: Prognose von Zeitreihen

Projekt Standardisierte schriftliche Reifeprüfung in Mathematik. T e s t h e f t. Vorname:

y x x y ( 2x 3y + z x + z

Musterlösung zu Serie 14

Einfaches Datenmanagement in R

Zeitreihenanalyse Der einfache gleitende Durchschnitt

Datenaufbereitung, Grafische Datenanalyse

Tutorial Excel Übung 3 Wetter4U s Prämienprogramm -1- Die Aufgabenstellung ist der folgenden URL zu entnehmen: Übung3.

1 Aufgabenstellung. 2 Erstellung des Excel- Tableaus. 3 Erstellung des Fax-Dokuments mit Word

Regressionsanalyse in R

ffl RENAME Λ Doppelklick auf Reihe1 Λ title Λ neuen Namen eingeben, z.b. Zins1 Λ r Reihe2 Zins2 ffl DELETE Λ Einfachklick aufzins1 Λ delete Λ d zins2

Analytische Geometrie mit dem Voyage 1

TI-89. Gleichungssysteme

Serie 10: Inverse Matrix und Determinante

Trendlinien in Diagrammen (Excel 2010)

Strommarktoptimierter Betrieb eines Stromspeichers

A.5.1 Die Matrix und elementare wirtschaftsrelevante Anwendungen

Zeitreihenanalyse mit R

Diese Unterlage bezieht sich auf Excel 2003 (auf Deutsch). Die Benutzeroberfläche kann in anderen Versionen der Software erheblich anders aussehen.

Excel Grundlagen. Peter Wies. 1. Ausgabe, Februar 2013

IBM SPSS Forecasting 20

Landesabitur 2007 Beispielaufgaben 2005_M-LK_A 7. Eine quadratische Pyramide (Grundkante 4 und Höhe 6) steht neben einer Stufe. 1.

Eine Einführung in R: Grundlagen I

Makroökonomie: Übung 1

Prof. Dr. Christoph Kleinn Institut für Waldinventur und Waldwachstum Arbeitsbereich Waldinventur und Fernerkundung

Controlling mit Excel Jan Götzelmann. 1. Ausgabe, 1. Aktualisierung, März Themen-Special W-EX2010C

Statistik. Sommersemester Prof. Dr. Stefan Etschberger Hochschule Augsburg. für Betriebswirtschaft und internationales Management

KV Logik als Arbeitssprache. Christoph Hörtenhuemer LVA-Nummer: LVA-Leiterin: Wolfgang Windsteiger. Agnes Schoßleitner

Einführung in. Pierre Bayerl

Eine zweidimensionale Stichprobe

Statistische Software (R) Konstanten. Datentypen in R. Aufruf der Hilfeseiten zu grundlegende Operatoren und Funktionen: Paul Fink, M.Sc.

Modelle und Methoden der Zeitreihenanalyse

Pressekonferenz. Thema: Vorstellung des Geburtenbarometers - Eine neue Methode zur Messung der Geburtenentwicklung

k 5 Mathematische Vorlagen und die Vorlage für eine nxm-matrix anklicken

Südtirol Kalenderjahr Jänner bis 31. Dezember

k 5 Mathematische Vorlagen und die Vorlage für eine nxm-matrix mit dem Pfeilcursor bzw. dem Mauszeiger doppelt anklicken

Controlling mit Excel Themen-Special. Peter Wies. 1. Ausgabe, Februar 2014 W-EX2013C

Häufigkeitstabellen. Balken- oder Kreisdiagramme. kritischer Wert für χ2-test. Kontingenztafeln

SieglindeFürst Direktes und indirektes Verhältnis

Bitte am PC mit Windows anmelden!

Schleifen und If-Abfragen

1 Singulärwertzerlegung und Pseudoinverse

Achim Bühl, Peter Zöfel SPSS. Methoden für die Markt- und Meinungsforschung. Technische Unäversität Darmstadt

Zeitreihenanalyse Exponentielles Glätten

Lineare Algebra und Numerische Mathematik für D-BAUG

Dr. Monika Meiler. Inhalt

Microsoft Excel 2010 Matrix-Funktionen

Hochschule München, FK 03 SS Masterstudiengang Technische Berechnung und Simulation. Programmierung von CAx-Systemen Teil 1

1 Zahlenmengen und einige mathematische Symbole

1 0 1, V 3 = M, und λ A = λa

Jürgen Roth Didaktik der Linearen Algebra & Analytischen Geometrie

Die Siedler von Catan Mehrstufige Produktionsprozesse

Lerneinheit Statistik

Erstellen einer Formel

Running R. Windows Aus Menü. Lese R Code ein führt den Code auch gleich aus, eventuell muss vorher das Verzeichnis gewechselt werden.

Zeitreihenanalyse mit R

Stochastische Prozesse und Zeitreihenmodelle

Statistik, Datenanalyse und Simulation

Wie Google Webseiten bewertet. François Bry

Eine Einführung in R: Programmstrukturen

Predictive Analytics in der Praxis - Zeitreihenanalyse mit Oracle R Enterprise

Lineare Gleichungssysteme I (Matrixgleichungen)

Prognose der Überlebenswahrscheinlichkeit von Ich-AG s nach drei Jahren

Übung zur Empirischen Wirtschaftsforschung

Den Mittelpunkt zwischen zwei Punkten kannst du mithilfe der Ortsvektoren und Verbindungsvektoren berechnen.

Transkript:

Beispiel in R: Verfahren zur Modellierung von ZR mit Saison und Trend Regina Tüchler November 2, 2009 Beispiel: Zeitreihenanalyse der Übernachtungs-Daten: Wir haben Daten mit monatlichen Übernachtungszahlen in allen Kategorien in Österreich für den Zeitraum Jänner 1995 bis Mai 2004. Die Daten nightts-monthly.rda werden geladen. Sie müssen sich dafür im working directory befinden. > load("nightts-monthly.rda") Die Daten sind jetzt im Arbeitsspeicher und unter dem Namen night verfügbar. 1. Schritt: Zeitreihenplot wird in Fig. 1 gezeichnet. > plot(night) night 5.0e+06 1.5e+07 Figure 1: Zeitreihenplot der Übernachtungs-Daten. 2. Schritt: Analyse des Zeitreihenplots, Wahl einer Methode: Welche Strukturen sind in Fig. 1 zu erkennen? Sollen die Daten transformiert werden? Gibt es Ausreißer? Sind Brüche erkennbar? 1

Man sieht sehr deutlich die Saisonalität mit 2 Hauptsaisonen bei diesen Monatsdaten. Da die Amplitude gleich bleibt, kann die Saisonalität als additive Saisonalität modelliert werden. Es ist kaum ein Trend erkennbar. Die Daten müssen nicht transformiert werden. Es sind keine Brüche erkennbar. Ein Verfahren, das die Saisonalität modelliert, muss verwendet werden. Wir werden die Daten der Jahre Jänner 1995-Dezember 2003 zuerst gemäß dem klassischen Komponentenmodell zerlegen, und zwar mit der Methode der kleinen Trends und den R-Funktionen decompose und stl. Danach werden wir mit Hilfe des Holt-Winters Verfahrens eine Prognose für die ersten 5 Monate des Jahres 2004 erstellen. Die Methode der kleinen Trends Wir führen diese Methode für die Jahre 1995-2003 durch und speichern diese kürzere ZR in nightts: > nightts <- window(night, end = c(2003, 12)) Die Methode der kleinen Trends ist nicht vorgefertigt in R vorhanden. Die notwendigen Operationen bestehen im Wesentlichen aber nur im Bilden von Zeilen- und Spaltensummen von Matrizen und können daher leicht durchgeführt werden. Damit R die notwendigen Operationen durchführen kann, ordnen wir die Daten bis 2003 (das sind 108 Datenpunkte) so in einer R-Matrix an, dass in den Zeilen die Jahre 1995-2003 stehen und in den Spalten die Monate Jän. - Dez. Dazu wird der Befehl matrix verwendet. Die Argumente sind die ZR: nightts, die Anzahl der Spalten: ncol = 12, durch das Argument byrow=true wird angegeben, dass die Elemente von nightts zeilenweise in die Matrix eingetragen werden sollen. Die Daten werden mit Namen matrixnight bezeichnet: > matrixnight <- matrix(nightts, ncol = 12, byrow = TRUE) Zuerst wird die Trendkomponente als Jahresdurchschnitt der Daten geschätzt. Die Berechnung erfolgt hier mit dem Befehl rowsums. Das ist die Zeilensumme in einer Matrix und entspricht bei unseren Daten daher der Summe über alle Monate eines Jahres. Die Trendkomponenten ˆm j werden für die 9 Jahre durch folgende Werte geschätzt: > night.trend <- rowsums(matrixnight)/12 [1] 9759543 9411360 9092168 9262266 9394420 9473874 9592557 9733704 9830582 Der Trend wird für alle Monate in einem Jahr konstant angenommen und mit Hilfe der Funktion ts als R-ZR gespeichert. Die Argumente von ts sind: Die Datenpunkte: rep(night.trend, rep(12, 9)) - hier werden die 9 verschiedenen Trendwerte über alle 12 Monate des jeweiligen Jahres konstant angenommen und in einen Vektor der Länge 108 zusammengesetzt; der Startpunkt ist Jänner 1995: start = c(1995,1); die Anzahl an Saisonkomponenten pro Jahr: freq = 12: > night.trend <- ts(rep(night.trend, rep(12, 9)), start = c(1995, + 1), freq = 12) Die Daten werden nun um den Trend bereingt und in notrend gespeichert: > notrend <- matrix(nightts - night.trend, ncol = 12, byrow = TRUE) Nun können die Saisonkomponenten aus den um den Trend bereinigten Daten berechnet werden. Für jeden Monat werden sie als Durchschnitt über alle 9 Jahre berechnet. Die Berechnung erfolgt hier mit dem Befehl colsums. Das ist die Spaltensumme in einer Matrix und entspricht bei unseren Daten daher der Summe über alle 9 Jahre. Für die Saisonkomponenten der 12 Monate werden daher die folgenden Werte geschätzt: 2

> night.season <- colsums(notrend)/9 [1] 2239591.0 4244785.0 1460619.7-3616793.1-3639254.3-953776.4 [7] 5363580.0 7856536.5-323466.6-4210859.5-6850915.5-1570046.9 Man kann jetzt z.b. ausgeben, in welchem Monat die Saisonkomponente am größten/kleinsten ist. Die Funktion which liefert den Index der entsprechenden Monate: > which(night.season == max(night.season)) [1] 8 > which(night.season == min(night.season)) [1] 11 Im August erreicht die ZR ihren größten und im November ihren kleinsten Jahreswert. Die Saisonkomponenten nehmen jeweils denselben Wert in allen Jahren an und werden als ZR gespeichert: > night.season <- ts(rep(night.season, 9), start = c(1995, 1), + freq = 12) Wir zeichnen die ZR, ihre Trendkomponente und ihre Schätzung in Fig. 2 > plot(nightts, type = "l") > lines(night.trend, col = "blue") > lines(night.trend + night.season, col = "red") nightts 5.0e+06 1.5e+07 Figure 2: Die Methode der kleinen Trends für die Nächtigungsdaten. Klassische Zerlegung mittels decompose Die Funktion decompose führt in R eine klassische Saison-Trend Zerlegung mittels gleitendem Durchschnitt durch. Wir zerlegen die Nächtigungsdaten der Jahre 1995 bis 2003: 3

> nightts.dec <- decompose(nightts) In nightts.dec sind jetzt die Saison- und die Trendkomponenten für die einzelnen Zeitpunkte unter nightts.dec$seasonal und nightts.dec$trend enthalten. In nightts.dec$random stehen die Residuen für die einzelnen Zeitpunkte. Eine grafische Darstellung von allen Komponenten liefert der Plot-Befehl in Fig. 3. > plot(nightts.dec) Decomposition of additive time series random seasonal trend observed 9000000 9800000 5.0e+06 1500000 2000000 5e+06 Figure 3: Saison-Trend Zerl. d. Nächtigungs-Daten mittels decompose. Dort sieht man der Zerlegungsformel x t = ˆm t +ŝ t +ε t entsprechend zeilenweise die ZR x t, ˆm t, ŝ t und ε t. Klassische Zerlegung mittels stl Eine weitere Funktion zur Durchführung von klassischen Saison-Trend Zerlegungen ist stl. Sie bietet viel mehr Möglichkeiten als decompose und enthält eine Reihe von zusätzlichen Optionen, die wir in dieser LV aber nicht verwenden werden. Für die klassische Saison-Trend Zerlegung muss im Argument die Option s.window = "periodic" gewählt werden. Für die Nächtigungsdaten der Jahre 1995-2003 ergibt sich daher: > nightts.stl <- stl(nightts, s.window = "periodic") In nightts.stl sind nun spaltenweise die Saison-, Trend und Restkomponente für die einzelnen Zeitpunkte enthalten. Auch hier gibt es die Möglichkeit mit plot die einzelnen Komponenten zu zeichnen. Sowohl bei decompose als auch bei stl muss man bei der Interpretation automatisch generierten Plots darauf achten, dass die in den verschiedenen Subplots verwendeten Maßstäbe nicht gleich sind! So ist in unserem Beipiel, wie aus dem ZR-Plot von x t auch deutlich wird, die 4

> plot(nightts.stl) remainder trend seasonal data 5.0e+06 9000000 9800000 5e+06 1500000 2000000 time Figure 4: Saison-Trend Zerl. d. Nächtigungs-Daten mittels stl. Trendänderung viel geringer als die Saisonschwankungen. Holt-Winters Verfahren Aufgabenstellung: Die Nächtigungsdaten der Jahre 1995-2003 sollen mit dem Holt-Winters Verfahren geglättet werden und Jän.-Mai 2004 sollen prognostiziert werden. Dabei soll der Glättungsparameter zur Niveauschätzung den Wert 0.2, der zur Trendschätzung den Wert 0.4 und der zur Saisonalitätsschätzung den Wert 0.4 bekommen. Da der Zeitreihenplot kaum eine Trendänderung zeigte, soll dieses Modell dann mit einem Modell ohne Trendkomponente verglichen werden. 3. Schritt: Die Daten Jän. 1995 bis Dez. 2003 sollen Input für das Holt-Winters Verfahren sein, um eine Prognose bis Mai 2004 zu erstellen. Die Daten teilen wir in past und in future: > past <- window(night, end = c(2003, 12)) > future <- window(night, start = c(2004, 1)) Die Argumente in der R-Funktion HoltWinters sind die Daten der Jahre 1995-2003: past, die Glättungsparameter: alpha=0.2, beta=0.4, gamma=0.4. Der Output wird hier in model gespeichert. > model <- HoltWinters(past, alpha = 0.2, beta = 0.4, gamma = 0.4) Die Werte für den Prognosezeitraum können mit R über die Funktion predict automatisch berechnet werden. Dabei muss die Anzahl der zu prognostizierenden Zeitpunkte (in unserem Beispiel 5) im Argument n.ahead = 5 angegeben werden. Die Vorhersage für Jän. bis Mai 2004 wird hier im Objekt progn gespeichert: > progn <- predict(model, n.ahead = 5) 5

In Fig. 5 wird mit dem Plot-Befehl die ZR gemeinsam der geglätteten ZR für die Jahre 1995-2003 gezeichnet. Soll auch die Prognose für 2004 eingezeichnet werden, muss im Argument auch die Option predicted.values = progn dazugeschrieben werden. Schließlich können mit lines(future) auch die Originaldaten für 2004 dazugezeichnet werden. > plot(model, predicted.values = progn) > lines(future) Holt Winters filtering Observed / Fitted 5.0e+06 1.5e+07 Figure 5: Holt-Winters für die Nächtigungs-Daten. Wir führen nun die Befehle für die Modellierung ohne Trendkomponente aus. Der Wert des Parameters beta muss daher auf 0 gesetzt werden: > model.notrend <- HoltWinters(past, alpha = 0.2, beta = 0, gamma = 0.4) > progn.notrend <- predict(model.notrend, n.ahead = 5) 4. Schritt: Modellwahl: Es sollen nun das Modell, das Niveau, Trend und Saison enthält mit jenem, das ohne Trendkomponente geschätzt wurde, verglichen werden. Zunächst zeigt ein optischer Vergleich von Fig. 5 und Fig. 6, dass zwischen den beiden Modellen kaum ein Unterschied besteht. Wir werden daher für einen genaueren Vergleich Maßzahlen verwenden. Die Fehlerquadratsummen zwischen den Einschrittvorhersagen und den wahren Werten für die Jahre 1995-2003 sind für die Modellwahl geeignet: > model$sse [1] 7.209973e+13 > model.notrend$sse [1] 5.794333e+13 6

> plot(model.notrend, predicted.values = progn.notrend) > lines(future) Holt Winters filtering Observed / Fitted 5.0e+06 1.5e+07 Figure 6: Holt-Winters ohne Trend für die Nächtigungs-Daten. Die SSE ist für das einfachere Modell (ohne Trendkomponente) kleiner. Auf Basis dieser Maßzahl würde man daher dieses Modell wählen. Wir können die Residuen auch grafisch vergleichen. In Fig. 7 werden die geglätteten Werte, die sich ja in der Spalte "xhat" im Objekt model$fitted befinden von den wahren Werten past abgezogen und gezeichnet (rot für das Modell ohne Trend). Aus dieser Zeichnung könnte man auch nicht die Wahl zwischen den beiden Modellen treffen. Erst die obige SSE lässt eine genauere Aussage zu. Da wir für das Jahr 2004 die wahren Nächtigungszahlen kennen, können wir die Schätzungen mit diesen wahren Werten vergleichen. Es eignet sich hier die mittlere Fehlerquadratsumme über die Monate Jän.-Mai 2004: > true <- matrix(future, 5, 1) > est <- matrix(progn[, 1], 5, 1) > est.notrend <- matrix(progn.notrend[, 1], 5, 1) > mse <- colsums((est - true)^2)/5 [1] 642524322316 > mse.notrend <- colsums((est.notrend - true)^2)/5 [1] 983116477953 Auch die mittlere Fehlerquadratsumme über den Prognosezeitraum ist für das Modell ohne Trend geringer. Daher wählt man auch auf Basis dieser Maßzahl das einfachere Modell. Beispiel: Erdgasverbrauch mit multiplikativem Holt-Winters Verfahren Die Daten UKgas sind im Package stats enthalten und sind Quartalsdaten über den UK Gasverbrauch von 1960-1986. 7

> plot(past - model$fitted[, "xhat"]) > lines(past - model.notrend$fitted[, "xhat"], col = "red") past model$fitted[, "xhat"] 2e+06 0e+00 2e+06 Figure 7: Residuenvergleich von Holt-Winters mit/ohne Trend für die Nächtigungs-Daten. > data(ukgas) Der Zeitreihenplot in Fig. 8 zeigt eine wachsende Amplitude. Daher ist ein Modell zu wählen, das die saisonale Komponente in multiplikativer Form enthält. Das multiplikative Holt-Winters Verfahren wird hier auf Basis der Daten bis 1980 durchgeführt und eine Prognose für 5 Jahre wird berechnet. > past <- window(ukgas, end = c(1980, 4)) > future <- window(ukgas, start = c(1981, 1)) > model <- HoltWinters(past, seasonal = "multiplicative") > progn <- predict(model, n.ahead = 20) > plot(model, progn) > lines(ukgas) 8

> plot(ukgas) UKgas 200 600 1000 1960 1965 1970 1975 1980 1985 Figure 8: Die UKgas-Daten. Holt Winters filtering Observed / Fitted 200 600 1000 1965 1970 1975 1980 1985 Figure 9: Das Holt-Winters Verf. für die UKgas-Daten. 9