Ökonometrie. Hartmut Lanzinger. Sommersemester 2013. R-Beispiele

Ähnliche Dokumente
Tutorial: Homogenitätstest

Lineare Modelle in R: Einweg-Varianzanalyse

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Musterlösung zu Serie 14

Name (in Druckbuchstaben): Matrikelnummer: Unterschrift:

Universität Bonn 28. Juli 2010 Fachbereich Rechts- und Wirtschaftswissenschaften Statistische Abteilung Prof. Dr. A. Kneip. KLAUSUR Statistik B

Statistische Auswertung:

Primzahlen und RSA-Verschlüsselung

Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Datenbanken Kapitel 2

90-minütige Klausur Statistik für Studierende der Kommunikationswissenschaft

4. Erstellen von Klassen

Binäre abhängige Variablen

Profil A 49,3 48,2 50,7 50,9 49,8 48,7 49,6 50,1 Profil B 51,8 49,6 53,2 51,1 51,1 53,4 50, ,5 51,7 48,8

Klausur zur Vorlesung Multivariate Verfahren, SS Kreditpunkte, 90 min

Zahlen auf einen Blick

Lineare Gleichungssysteme

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Statistik II Wahrscheinlichkeitsrechnung und induktive Statistik Erste Klausur zum Sommersemester Juli 2005

10.1 Auflösung, Drucken und Scannen

9. Schätzen und Testen bei unbekannter Varianz

Statistik II für Betriebswirte Vorlesung 2

Musterlösungen zur Linearen Algebra II Blatt 5

Professionelle Seminare im Bereich MS-Office

Zeichen bei Zahlen entschlüsseln

Auswerten mit Excel. Viele Video-Tutorials auf Youtube z.b.

Lineare Gleichungssysteme

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen

Theoretische Grundlagen der Informatik WS 09/10

Einfache Varianzanalyse für abhängige

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

V 2 B, C, D Drinks. Möglicher Lösungsweg a) Gleichungssystem: 300x y = x + 500y = 597,5 2x3 Matrix: Energydrink 0,7 Mineralwasser 0,775,

Angewandte Ökonometrie, WS 2012/13, 1. Teilprüfung am Lösungen. Das folgende Modell ist ein GARCH(1,1)-Modell:

Wachstum 2. Michael Dröttboom 1 LernWerkstatt-Selm.de

Lösung zu Kapitel 11: Beispiel 1

Leichte-Sprache-Bilder

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

Jeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

5.2 Neue Projekte erstellen

Multicheck Schülerumfrage 2013

Verallgemeinerte lineare Modelle. Promotion. Promotion. Methoden empirischer Sozialforschung. 1 binäre und mehrere metrische und kategoriale Variablen

Analog zu Aufgabe 16.1 werden die Daten durch folgenden Befehl eingelesen: > kredit<-read.table("c:\\compaufg\\kredit.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Dieses erste Kreisdiagramm, bezieht sich auf das gesamte Testergebnis der kompletten 182 getesteten Personen. Ergebnis

Überblick. Lineares Suchen

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Task: Nmap Skripte ausführen

Geld Verdienen im Internet leicht gemacht

Beweisbar sichere Verschlüsselung

Algorithmen und Datenstrukturen

ICS-Addin. Benutzerhandbuch. Version: 1.0

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Anhand des bereits hergeleiteten Models erstellen wir nun mit der Formel

Dossier: Rechnungen und Lieferscheine in Word

13. Lineare DGL höherer Ordnung. Eine DGL heißt von n-ter Ordnung, wenn Ableitungen y, y, y,... bis zur n-ten Ableitung y (n) darin vorkommen.

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Berechnung der Erhöhung der Durchschnittsprämien

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Mediator 9 - Lernprogramm

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.

Biostatistik, WS 2015/2016 Der zwei-stichproben-t-test

1 Interaktion von zwei Dummyvariablen. 2 Interaktion einer Dummyvariablen mit einer kardinalskalierten Variablen

Informationsblatt Induktionsbeweis

1 topologisches Sortieren

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Allensbach: Das Elterngeld im Urteil der jungen Eltern

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Eine Bürokratiekostenfolgenabschätzung zum zweiten Gesetz für moderne Dienstleistungen am Arbeitsmarkt im Hinblick auf die Einführung einer Gleitzone

OP-LOG

Eigenwerte und Eigenvektoren von Matrizen

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003

TECHNISCHE UNIVERSITÄT MÜNCHEN

Fortgeschrittene Statistik Logistische Regression

Umgang mit Schaubildern am Beispiel Deutschland surft

Handbuch zum Excel Formular Editor

sondern alle Werte gleich behandelt. Wir dürfen aber nicht vergessen, dass Ergebnisse, je länger sie in der Vergangenheit

Vorkurs Mathematik Übungen zu Polynomgleichungen

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

Kapitalerhöhung - Verbuchung

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Guide DynDNS und Portforwarding

TeamSpeak3 Einrichten

Kurzeinführung Excel2App. Version 1.0.0

Info zum Zusammenhang von Auflösung und Genauigkeit

Transkript:

Ökonometrie R-Beispiele Hartmut Lanzinger Sommersemester 2013

1 Einführung 1 Was ist Ökonometrie? 2 Eine kurze Einführung in R Rechnen mit Vektoren R ist eine Open-Source-Implementierung der Programmiersprache S, die auch die Grundlage für das kommerzielle Paket S-Plus darstellt. R eignet sich gut für die Darstellung und statistische Analyse und ist zudem für alle verbreiteten Platformen verfügbar. Bei R ist sowohl die interaktive Nutzung möglich als auch die Programmierung längerer statistischer Analysen. Das macht es einerseits möglich, mit dem Programm ohne vertiefte Kenntnisse sofort zu arbeiten, andererseits kann R aber auch für sehr komplexe Problemstellungen verwendet werden. Nach dem Start meldet sich R mit dem Prompt > (evtl. innerhalb eines GUI). Wahrscheinlich die am häufigsten benutzte Operation ist die Zuweisung: x <- 5 x [1] 5 x = 7 x [1] 7 x <- 9 x [1] 9 R kann als eine Art Taschenrechner benutzt werden: 2 + 3^2 * 4 [1] 38 33%/%9 [1] 3 33%%9 [1] 6 R kann mit Vektoren rechnen als wären sie einzelne Zahlen. Hat man sich einmal an diese Syntax gewöhnt, ist das ungemein praktisch. Wir betrachtn z.b. den vorinstallierten Datensatz precip mit dem durchschnittlichen Niederschlag aus 70 US-amerikanischen Städten in Inches, der in Zentimeter umgerechnet werden soll: 2

x <- as.numeric(precip) x [1] 67.0 54.7 7.0 48.5 14.0 17.2 20.7 13.0 43.4 40.2 38.9 54.5 59.8 48.3 [15] 22.9 11.5 34.4 35.1 38.7 30.8 30.6 43.1 56.8 40.8 41.8 42.5 31.0 31.7 [29] 30.2 25.9 49.2 37.0 35.9 15.0 30.2 7.2 36.2 45.5 7.8 33.4 36.1 40.2 [43] 42.7 42.5 16.2 39.0 35.0 37.0 31.4 37.6 39.9 36.2 42.8 46.4 24.7 49.1 [57] 46.0 35.9 7.8 48.2 15.2 32.5 44.7 42.6 38.8 17.4 40.8 29.1 14.6 59.2 x * 2.54 [1] 170.18 138.94 17.78 123.19 35.56 43.69 52.58 33.02 110.24 102.11 [11] 98.81 138.43 151.89 122.68 58.17 29.21 87.38 89.15 98.30 78.23 [21] 77.72 109.47 144.27 103.63 106.17 107.95 78.74 80.52 76.71 65.79 [31] 124.97 93.98 91.19 38.10 76.71 18.29 91.95 115.57 19.81 84.84 [41] 91.69 102.11 108.46 107.95 41.15 99.06 88.90 93.98 79.76 95.50 [51] 101.35 91.95 108.71 117.86 62.74 124.71 116.84 91.19 19.81 122.43 [61] 38.61 82.55 113.54 108.20 98.55 44.20 103.63 73.91 37.08 150.37 Um Vektoren zu konstruieren, gibt es viele Möglichkeiten. Vielleicht am wichtigsten ist die Funktion c(), die mehrere Werte zu einem Vektor zusammenbindet. x <- 2:10 x [1] 2 3 4 5 6 7 8 9 10 x * 3 [1] 6 9 12 15 18 21 24 27 30 x^2 [1] 4 9 16 25 36 49 64 81 100 y <- c(2, 3, 4) y [1] 2 3 4 x/y [1] 1.00 1.00 1.00 2.50 2.00 1.75 4.00 3.00 2.50 z <- c(2, 3, 4, 5) x * z Warning: L?nge des l?ngeren Objektes ist kein Vielfaches der L?nge des k?rzeren Objektes [1] 4 9 16 25 12 21 32 45 20 Viele Vektorfunktionen sind in R bereits vorinstalliert, von denen wir häufig Gebrauch machen werden: 3

x <- 2:10 length(x) [1] 9 sum(x) [1] 54 cumsum(x) [1] 2 5 9 14 20 27 35 44 54 log(x) [1] 0.6931 1.0986 1.3863 1.6094 1.7918 1.9459 2.0794 2.1972 2.3026 sum(x)/length(x) [1] 6 mean(x) [1] 6 x <- as.numeric(precip) min(x) [1] 7 max(x) [1] 67 Der Zugriff auf Komponenten eines Vektors funktioniert folgendermaßen: x <- 3 * 1:10 x [1] 3 6 9 12 15 18 21 24 27 30 x[1] [1] 3 x[2:4] [1] 6 9 12 x[c(2, 1, 3)] [1] 6 3 9 x[-c(3, 4, 7)] [1] 3 6 15 18 24 27 30 4

Ein Vektor hat in R einen sogenannten Mode, der die Art des Vektors bestimmt: x <- 1:8 x [1] 1 2 3 4 5 6 7 8 mode(x) [1] "numeric" x > 5 [1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE mode(x > 5) [1] "logical" y <- LETTERS[1:8] y [1] "A" "B" "C" "D" "E" "F" "G" "H" mode(y) [1] "character" Auf den ersten Blick ungewöhnlich ist, dass die Komponenten eines Vektors Namen haben können. Für die Arbeit mit Datensätzen, bei denen die Elemente des Vektors bestimmte Bedeutungen haben, ist das ungemein nützlich. Hat ein Vektor ein Namensattribut, so kann auf die Elemente auch über diese Namen zugegriffen werden: names(x) NULL names(x) <- y x A B C D E F G H 1 2 3 4 5 6 7 8 x[c("a", "C", "D")] A C D 1 3 4 Matrizen Um Matrizen zu definieren gibt es verschiedene Möglichkeiten: x <- 1:12 dim(x) NULL 5

NULL dim(x) <- c(3, 4) x [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 x <- matrix(1:12, nrow = 3) x [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 x <- matrix(1:12, nrow = 3, byrow = TRUE) x [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 5 6 7 8 [3,] 9 10 11 12 t(x) [,1] [,2] [,3] [1,] 1 5 9 [2,] 2 6 10 [3,] 3 7 11 [4,] 4 8 12 y <- matrix(rep(1:4, 2), nrow = 4) y [,1] [,2] [1,] 1 1 [2,] 2 2 [3,] 3 3 [4,] 4 4 x %*% y [,1] [,2] [1,] 30 30 [2,] 70 70 [3,] 110 110 dim(x %*% y) [1] 3 2 nrow(x %*% y) [1] 3 6

ncol(x %*% y) [1] 2 y[1, 2] [1] 1 y[1, ] [1] 1 1 y[, 2] [1] 1 2 3 4 Bei quadratischen Matrizen können auch Eigenwerte bestimmt werden: A <- matrix(c(1, 2, 4, 3), nrow = 2) A [,1] [,2] [1,] 1 4 [2,] 2 3 det(a) [1] -5 eigen(a) $values [1] 5-1 $vectors [,1] [,2] [1,] -0.7071-0.8944 [2,] -0.7071 0.4472 solve(a) [,1] [,2] [1,] -0.6 0.8 [2,] 0.4-0.2 diag(c(1, 2, 3, 0, 2)) [,1] [,2] [,3] [,4] [,5] [1,] 1 0 0 0 0 [2,] 0 2 0 0 0 [3,] 0 0 3 0 0 [4,] 0 0 0 0 0 [5,] 0 0 0 0 2 Häufig benutzt werden die Befehle rbind() und cbind(), die Matrizen zeilen- bzw. Spaltenweise zusammenfügen: 7

A <- matrix(1:12, nrow = 3) x1 <- 21:24 y1 <- 15:18 y2 <- c(2, 5, 10) rbind(a, x1) [,1] [,2] [,3] [,4] 1 4 7 10 2 5 8 11 3 6 9 12 x1 21 22 23 24 cbind(a, y1, y2) Warning: number of rows of result is not a multiple of vector length (arg 2) y1 y2 [1,] 1 4 7 10 15 2 [2,] 2 5 8 11 16 5 [3,] 3 6 9 12 17 10 Listen und Dataframes Objekte unterschiedlicher Bauart können in R zu einer Liste zusammengefasst werden. liste_beispiel <- list(studiengaenge = c("bachelor Wirtschaftswissenschaften", "Bachelor Mathematik", "Master Wirtschaftswissenschaften"), Dozenten = c("stadtmueller", "Lanzinger"), Noten = c(1, 1.3, 1.7, 2, 2.3, 2.7, 3, 3.3, 3.7, 4)) class(liste_beispiel) [1] "list" liste_beispiel $Studiengaenge [1] "Bachelor Wirtschaftswissenschaften" [2] "Bachelor Mathematik" [3] "Master Wirtschaftswissenschaften" $Dozenten [1] "Stadtmueller" "Lanzinger" $Noten [1] 1.0 1.3 1.7 2.0 2.3 2.7 3.0 3.3 3.7 4.0 liste_beispiel[[1]] [1] "Bachelor Wirtschaftswissenschaften" [2] "Bachelor Mathematik" [3] "Master Wirtschaftswissenschaften" liste_beispiel[c(1, 2)] 8

$Studiengaenge [1] "Bachelor Wirtschaftswissenschaften" [2] "Bachelor Mathematik" [3] "Master Wirtschaftswissenschaften" $Dozenten [1] "Stadtmueller" "Lanzinger" liste_beispiel$noten [1] 1.0 1.3 1.7 2.0 2.3 2.7 3.0 3.3 3.7 4.0 Auf das erste Element einer Liste kann also mit liste_beispiel [[1]] oder mittels liste_beispiel$studiengaenge über den Namen des Eintrags zugegriffen werden. liste_beispiel [ c (1,2)] erzeugt eine Unterliste mit dem ersten und zweiten Eintrag. Datensätze haben in R häufig die Gestalt eines sogenannten Data Frames. Dabei handelt es sich um eine Liste von Vektoren gleicher Länge, die in Matrixform spaltenweise angeordnet sind. Einträge in der selben Zeile gehören zur selben statistischen Einheit (z.b. Person, Unternehmen). Die Liste tatort2013 aus dem Eingangsbeispiel enthält den Dataframe Schaetzung mit den Altersschätzungen. Unter den darin enthaltenen Variablen befinden sich die kategoriellen Größen Kurs und Geschlecht. Eine solche kategorielle Variable wird in R als sogenannter Factor dargestellt. attach(tatort2013) Schaetzung Kurs Geschlecht Tatort persona personb personc persond persone personf 1 A M N 32 55 47 50 24 45 2 A M N 35 55 52 47 23 58 3 A M N 32 56 52 50 25 60 4 A M J 34 53 49 52 22 56 5 A M N 39 58 48 55 20 51 6 A M J 37 53 42 52 23 49 7 A M J 32 55 47 48 22 45 8 A M N 32 48 40 54 23 46 9 A M N 32 45 38 55 25 40 10 A M N 31 48 48 55 18 45 11 A W J 34 48 47 53 24 55 12 A W N 27 55 42 50 23 40 13 A W N 32 55 35 47 27 50 14 A W N 26 49 45 61 21 58... is.factor(schaetzung$geschlecht) [1] TRUE detach(tatort2013) Liegt ein Charactervector vor, der nur die Einträge M und W (für männlich und weiblich besitzt, so wird dieser nicht automatisch als Factor interpretiert: geschlecht <- c("m", "W", "M", "W", "W") geschlecht 9

[1] "M" "W" "M" "W" "W" is.factor(geschlecht) [1] FALSE geschlecht <- as.factor(geschlecht) geschlecht [1] M W M W W Levels: M W 10

2 Lineare Modelle 1 Lineare Regressionsmodelle Beispiele 1. Der Datensatz MunExp im Paket Ecdat) enthält unter anderem Daten zu Einnahmen (aus Steuern und Abgaben) sowie Ausgaben einer Reihe von Kommunen in Schweden aus den Jahren 1979 1987. Wir greifen uns die Daten für das Jahr 1987 heraus. data(munexp) head(munexp) id year expend revenue grants 1 114 1979 0.02297 0.01818 0.005443 2 114 1980 0.02663 0.02091 0.005730 3 114 1981 0.02733 0.02108 0.005665 4 114 1982 0.02887 0.02343 0.005886 5 114 1983 0.02265 0.01800 0.005591 6 114 1984 0.02156 0.01799 0.004754 ausgaben <- MunExp[MunExp$year == 1987, c("expend", "revenue")] Abbildung 2.1: Einnahmen und Ausgaben schwedischer Kommunen im Jahr 1987 0.015 0.020 0.025 0.030 0.010 0.015 0.020 0.025 revenue expend Wir stellen uns die Daten nun so vor, dass für Kommune j sich die Ausgaben y j in der Form y j = β 1 + β 2 x j + ε j darstellen lässt (für j = 1,..., 265). Die Fehlerterme ε j repräsentieren hierbei andere, von uns in diesem Datensatz nicht erfasste Einflussgrößen sowie zufällige Abweichungen. 11

2. Der Datensatz CPS1988 im Paket AER enthält Daten aus dem Current Population Survey des Jahres 1988. Untersucht werden soll die Frage, ob die erhobenen Faktoren einen Einfluss auf das Gehalt haben. Der Datensatz enthält 28155 Beobachtungen zu den folgenden Variablen: wage: Einkommen in Dollar pro Woche education: Ausbildungszeit in Jahren experience: Arbeitserfahrung in Jahren, künstlich berechnet als Alter-Ausbildungszeit-6 ethnicity: caucasian der African American smsa: Lebt die Person in einer Standard Metropolitan Statistical Area (SMSA)? region: northeast, midwest, south oder west parttime: Arbeitet die Person teilzeit? Solche Daten sind auf der Homepage des US Census Bureau http://www.census.gov/cps/ auch in aktuelleren Versionen verfügbar, in diesem Fall aber in der Regel noch nicht für die Bearbeitung mit einem Statistikprogramm aufbereitet. Wegen der vielen Variablen ist es relativ schwierig, sich hier einen grafischen Überblick zu verschaffen. Wir werden später mit einem komplizierteren (aber immer noch linearen) Modell auf diesen Datensatz zurückkommen. data(cps1988) head(cps1988) wage education experience ethnicity smsa region parttime 1 354.9 7 45 cauc yes northeast no 2 123.5 12 1 cauc yes northeast yes 3 370.4 9 9 cauc yes northeast no 4 754.9 11 46 cauc yes northeast no 5 593.5 12 36 cauc yes northeast no 6 377.2 16 22 cauc yes northeast no summary(cps1988) wage education experience ethnicity smsa Min. : 50 Min. : 0.0 Min. :-4.0 cauc:25923 no : 7223 1st Qu.: 309 1st Qu.:12.0 1st Qu.: 8.0 afam: 2232 yes:20932 Median : 522 Median :12.0 Median :16.0 Mean : 604 Mean :13.1 Mean :18.2 3rd Qu.: 783 3rd Qu.:15.0 3rd Qu.:27.0 Max. :18777 Max. :18.0 Max. :63.0 region parttime northeast:6441 no :25631 midwest :6863 yes: 2524 south :8760 west :6091 Beispiele 1. Bei einem Kaufhauskonzern mit 10 Filialen wird die Auswirkung von Werbeausgaben (x i, in Einheiten von 1000 e) auf die Umsatzsteigerung (y i, in Einheiten von 10000 e) untersucht. Dabei erhält man folgende Werte: 12

15000 15000 10000 10000 wage wage Abbildung 2.2: Beispielgrafiken zu Datensatz CPS1988 5000 5000 0 0 0 5 10 15 0 20 education Filiale xi yi 40 experience 1 1.5 2.0 2 2.0 3.0 3 3.5 6.0 4 2.5 5.0 5 0.5 1.0 6 4.5 6.0 7 4.0 5.0 8 5.5 11.0 9 7.5 14.0 Das zugrunde liegende lineare Modell besitzt also die Designmatrix 1 1 1 1 1 X= 1 1 1 1 1 1.5 2.0 3.5 2.5 0.5 = X T X = 10 40 40 220 4.5 4.0 5.5 7.5 8.5 Somit folgt 1 T β = (X X) 1 X y= 60 T 22 4 70 1 = 4 1 400 2 Mit R sieht das folgendermaßen aus: x <- c(15, 20, 35, 25, 5, 45, 40, 55, 75, 85)/10 y <- c(2, 3, 6, 5, 1, 6, 5, 11, 14, 17) lm1 <- lm(y ~ x) print(lm1) Call: lm(formula = y ~ x) Coefficients: (Intercept) -1 x 2 13 10 8.5 17.0 60

names(lm1) [1] "coefficients" "residuals" "effects" "rank" [5] "fitted.values" "assign" "qr" "df.residual" [9] "xlevels" "call" "terms" "model" lm1$coefficients (Intercept) x -1 2 summary(lm1) Call: lm(formula = y ~ x) Residuals: Min 1Q Median 3Q Max -2 0 0 1 1 Coefficients: Estimate Std. Error t value Pr(> t ) (Intercept) -1.000 0.742-1.35 0.21 x 2.000 0.158 12.65 1.4e-06 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1... Auch die Designmatrix kann man mit model.matrix(lm1) anzeigen, aber das wird kaum benötigt. 2. Wir betrachten noch einmal die Daten für das Jahr 1987 aus dem Datensatz MunExp im Paket Ecdat. ausgaben <- MunExp[MunExp$year == 1987, c("expend", "revenue")] lm1 <- lm(expend ~ revenue, data = ausgaben) summary(lm1) Call: lm(formula = expend ~ revenue, data = ausgaben) Residuals: Min 1Q Median 3Q Max -0.004093-0.000921-0.000240 0.000446 0.007289 Coefficients: Estimate Std. Error t value Pr(> t ) (Intercept) 0.006408 0.000482 13.3 <2e-16 *** revenue 0.935003 0.035539 26.3 <2e-16 *** --- 14

Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1... Abbildung 2.3: Einnahmen und Ausgaben schwedischer Kommunen im Jahr 1987 (mit Regressionsgerade) 0.015 0.020 0.025 0.030 0.010 0.015 0.020 0.025 revenue expend Die Beispiele, die wir bisher betrachtet haben, beinhalten alle einen linearen Zusammenhang zwischen den Daten. Lineare Modelle lassen jedoch trotz der Namensgebung zu, dass man verschiedene nichtlineare funktionale Zusammenhänge damit modelliert. Beispiel (vgl. [9]) Der Datensatz Caschool enthält für 420 Schüler verschiedener Schulen in Kalifornien die Ergebnisse eines standardisierten Lese- und Mathematiktests sowie einige Daten zur jeweiligen Schule und demographische Angaben zum Distrikt, in dem sich die Schule befindet. Eine ausführliche Beschreibung findet sich unter http://wps.aw.com/wps/media/objects/3254/3332253/datasets2e/datasets/californiatestscores.pdf Wir betrachten hier den Zusammenhang zwischen dem durchschnittlichen Einkommen des jeweiligen Distrikts (in 1000 US-$) und dem Testergebnis (d.h. dem Durchschnitt zwischen Mathematik und Lesetest). data(caschool) lm1 <- lm(testscr ~ avginc, data = Caschool) summary(lm1) Call: lm(formula = testscr ~ avginc, data = Caschool) Residuals: Min 1Q Median 3Q Max -39.57-8.80 0.60 9.03 32.53 15

Coefficients: Estimate Std. Error t value Pr(> t ) (Intercept) 625.3836 1.5324 408.1 <2e-16 *** avginc 1.8785 0.0905 20.8 <2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1... lm2 <- lm(testscr ~ avginc + I(avginc^2), data = Caschool) summary(lm2) Call: lm(formula = testscr ~ avginc + I(avginc^2), data = Caschool) Residuals: Min 1Q Median 3Q Max -44.42-9.05 0.44 8.35 31.64 Coefficients: Estimate Std. Error t value Pr(> t ) (Intercept) 607.30174 3.04622 199.36 < 2e-16 *** avginc 3.85099 0.30426 12.66 < 2e-16 *** I(avginc^2) -0.04231 0.00626-6.76 4.7e-11 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1... Abbildung 2.4: Durchschnittseinkommen der Region und durchschnittliches Testergebnis testscr 700 650 600 10 20 30 40 50 avginc In diesem Beispiel haben wir uns darauf verlassen, dass wir ein geeignetes Modell direkt gesehen haben. Das ist jedoch nicht immer möglich. Die folgende Tabelle gibt eine Übersicht über verschiedene Zusammenhänge an, die in der Ökonometrie besonders häufig verwendet werden (vgl. [1]). 16

Tabelle 2.1: Typische Funktionale Zusammenhänge Name abhängige unabhängige Variable Variable linear Y β 1 + β 2 x invers Y β 1 + β 2 x semilogarithmisch Y β 1 + β 2 log x exponential log Y β 1 + β 2 x logarithmisch log Y β 1 + β 2 log x logarithmisch-invers log Y β 1 + β 2 x Eine mögliche Strategie ist es nun, bei einem gegebenen Datensatz diese typischen Modelle auszuprobieren und dann zu entscheiden, welches am ehesten eine lineare Struktur aufweist. Beispiele 1. (vgl. [1]) Bei 12 Milchkühen wird die Menge an Kraftfutter (in Zentnern pro Jahr) und die Milchleistung (in Litern pro Jahr) beobachtet. futter <- c(10, 30, 20, 33, 5, 22, 8, 14, 25, 1, 17, 28) milch <- c(6525, 8437, 8019, 8255, 5335, 7236, 5821, 7531, 8320, 4336, 7225, 8112) Das logarithmische und das semilogarithmische Modell passen am besten. Da man den Zuwachs in beiden Fällen prozentual angibt, ist das logarithmische Modell vorzuziehen. 2. Wir wollen nun herausfinden, ob diese Strategie auch bei unserem obigen Beispiel Erfolg hätte. Sowohl das semilogarithmische als auch das logaritmische Modell scheinen eine lineare Struktur zu besitzen. In einem solchen Fall ist es keine rein statistische Entscheidung, welches der beiden Modelle gewählt wird (vgl. auch das vorhergehende Beispiel). 2 Nichtlineare Regressionsfunktionen Beispiel Wir betrachten das Modell Y j = β 1 + β 2 e β 3x j + ε j für j = 1,..., n Beispiel Im obigen Beispiel ist und daher f(x; β 1, β 2, β 3 ) = β 1 + β 2 e β 3x f (x; β 1, β 2, β 3 ) = 1 β 1 f (x; β 1, β 2, β 3 ) = e β 3x β 2 f (x; β 1, β 2, β 3 ) = β 2 xe β 3x β 3 Für dieses Beispiel betrachten wir nun einen hypothetischen Datensatz, den wir mit dieser Methode der Linearisierung untersuchen. Wir setzen x j = j für j = 1, 2,..., 20 und Y j = β 1 + β 2 e β 3x j mit β 1 = 3, β 2 = 2 und β 3 = 0.1 sowie ε j N(0, 1). 17

Abbildung 2.5: Vergleich der Modelle am Datensatz milchkuehe linear invers 8000 8000 7000 7000 Milchleistung 6000 Milchleistung 6000 5000 5000 0 10 20 30 Futtermenge 0.00 0.25 0.50 0.75 1.00 1/Futtermenge semilogarithmisch exponential 8000 8.9 7000 Milchleistung 6000 log(milchleistung) 8.7 5000 8.5 0 1 2 3 log(futtermenge) 0 10 20 30 Futtermenge logarithmisch logarithmisch invers 8.9 8.9 log(milchleistung) 8.7 log(milchleistung) 8.7 8.5 8.5 0 1 2 3 log(futtermenge) 0.00 0.25 0.50 0.75 1.00 1/Futtermenge 18

Abbildung 2.6: Vergleich der Modelle am Datensatz Caschool linear invers testscr 690 660 630 testscr 690 660 630 10 20 30 40 50 avginc 0.05 0.10 0.15 1/avginc semilogarithmisch exponential testscr 690 660 630 log(testscr) 6.55 6.50 6.45 2.0 2.5 3.0 3.5 4.0 log(avginc) 6.40 10 20 30 40 50 avginc logarithmisch logarithmisch invers log(testscr) 6.55 6.50 6.45 log(testscr) 6.55 6.50 6.45 6.40 2.0 2.5 3.0 3.5 4.0 log(avginc) 6.40 0.05 0.10 0.15 1/avginc 19

set.seed(334) nichtlinear_bsp <- function(x, beta1 = 3, beta2 = 2, beta3 = 0.1) { beta1 + beta2 * exp(beta3 * x) } y0 <- nichtlinear_bsp(1:20) + 0.5 * rnorm(20) skizze <- ggplot(data.frame(x = 1:20, y = y0), aes(x = x, y = y)) + geom_point() + stat_function(fun = nichtlinear_bsp, colour = "blue") lm0 <- nls(y0 ~ nichtlinear_bsp(1:20, beta1, beta2, beta3), start = list(beta1 = 1, beta2 = 1, beta3 = 0.5)) lm0fit <- function(x) { nichtlinear_bsp(x, coef(lm0)[1], coef(lm0)[2], coef(lm0)[3]) } skizze0 <- skizze + stat_function(fun = lm0fit, colour = "red") summary(lm0) Formula: y0 ~ nichtlinear_bsp(1:20, beta1, beta2, beta3) Parameters: Estimate Std. Error t value Pr(> t ) beta1 3.1996 1.1779 2.72 0.015 * beta2 1.8508 0.8136 2.27 0.036 * beta3 0.1031 0.0192 5.37 5.1e-05 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 0.745 on 17 degrees of freedom Number of iterations to convergence: 23 Achieved convergence tolerance: 3.35e-06... beta1 <- 3 beta2 <- 2 beta3 <- 0.1 ytilde1 <- y0 - nichtlinear_bsp(1:20, beta1, beta2, beta3) + beta1 + exp(beta3 * (1:20)) * beta2 + beta2 * (1:20) * exp(beta3 * (1:20)) * beta3 lm1 <- lm(ytilde1 ~ I(exp(beta3 * (1:20))) + I(beta2 * (1:20) * exp(beta3 * (1:20)))) y1 <- y0 - ytilde1 + coef(lm1)[1] + coef(lm1)[2] * exp(beta3 * (1:20)) + coef(lm1)[3] * beta2 * (1:20) * exp(beta3 * (1:20)) skizze1 <- skizze + geom_line(aes(x = 1:20, y = y1), colour = "red") summary(lm1) Call: lm(formula = ytilde1 ~ I(exp(beta3 * (1:20))) + I(beta2 * (1:20) * exp(beta3 * (1:20)))) Residuals: Min 1Q Median 3Q Max -1.3852-0.2554-0.0077 0.2014 1.8869 Coefficients: 20

Estimate Std. Error t value (Intercept) 3.1992 1.2431 2.57 I(exp(beta3 * (1:20))) 1.8499 0.8767 2.11 I(beta2 * (1:20) * exp(beta3 * (1:20))) 0.1029 0.0189 5.43 Pr(> t )... beta1 <- 2 beta2 <- 2 beta3 <- 0.11 ytilde2 <- y0 - nichtlinear_bsp(1:20, beta1, beta2, beta3) + beta1 + exp(beta3 * (1:20)) * beta2 + beta2 * (1:20) * exp(beta3 * (1:20)) * beta3 lm2 <- lm(ytilde2 ~ I(exp(beta3 * (1:20))) + I(beta2 * (1:20) * exp(beta3 * (1:20)))) y2 <- y0 - ytilde2 + coef(lm2)[1] + coef(lm2)[2] * exp(beta3 * (1:20)) + coef(lm2)[3] * beta2 * (1:20) * exp(beta3 * (1:20)) skizze2 <- skizze + geom_line(aes(x = 1:20, y = y2), colour = "red") summary(lm2) Call: lm(formula = ytilde2 ~ I(exp(beta3 * (1:20))) + I(beta2 * (1:20) * exp(beta3 * (1:20)))) Residuals: Min 1Q Median 3Q Max -1.3849-0.2541-0.0044 0.2024 1.8901 Coefficients: Estimate Std. Error t value (Intercept) 3.2348 1.0499 3.08 I(exp(beta3 * (1:20))) 1.8211 0.6904 2.64 I(beta2 * (1:20) * exp(beta3 * (1:20))) 0.1047 0.0154 6.81 Pr(> t )... beta1 <- 0.5 beta2 <- 5 beta3 <- 0.99 ytilde3 <- y0 - nichtlinear_bsp(1:20, beta1, beta2, beta3) + beta1 + exp(beta3 * (1:20)) * beta2 + beta2 * (1:20) * exp(beta3 * (1:20)) * beta3 lm3 <- lm(ytilde3 ~ I(exp(beta3 * (1:20))) + I(beta2 * (1:20) * exp(beta3 * (1:20)))) y3 <- y0 - ytilde3 + coef(lm3)[1] + coef(lm3)[2] * exp(beta3 * (1:20)) + coef(lm3)[3] * beta2 * (1:20) * exp(beta3 * (1:20)) skizze3 <- skizze + geom_line(aes(x = 1:20, y = y3), colour = "red") summary(lm3) Call: lm(formula = ytilde3 ~ I(exp(beta3 * (1:20))) + I(beta2 * (1:20) * exp(beta3 * (1:20)))) Residuals: 21

Min 1Q Median 3Q Max -3.719-1.823-0.029 1.642 3.094 Coefficients: Estimate Std. Error t value (Intercept) 8.04e+00 5.58e-01 1.44e+01 I(exp(beta3 * (1:20))) 9.71e-07 2.54e-07 3.82e+00 I(beta2 * (1:20) * exp(beta3 * (1:20))) 9.90e-01 2.55e-09 3.88e+08 Pr(> t )... 16 16 12 12 y y 8 8 4 4 5 10 15 20 x 5 10 15 20 x 16 16 y 12 y 12 8 8 4 4 5 10 15 20 x 5 10 15 20 x Abbildung 2.7: Echte Regesssionsfunktion und linearisierte Variante (links oben: nichtlineare Schätzung (s.u.); rechts oben: linearisiert mit β 1 = 3, β 2 = 2, β 3 = 0.1; links unten: linearisiert mit β 1 = 2, β 2 = 2, β 3 = 0.11; rechts unten: linearisiert mit β 1 = 0.5, β 2 = 5, β 3 = 0.99) Beispiel Im Modell Y j = β 1 + β 2 e β 3x j + ε j für j = 1,..., n 22

gilt, wie wir oben gesehen haben: und daher f(x; β 1, β 2, β 3 ) = β 1 + β 2 e β 3x f (x; β 1, β 2, β 3 ) = 1 β 1 f (x; β 1, β 2, β 3 ) = e β 3x β 2 f (x; β 1, β 2, β 3 ) = β 2 xe β 3x β 3 Ein Kleinste-Quadrate-Schätzer für den unbekannten Parameter β = Lösung des Gleichungssystems n j=1 n j=1 n j=1 ( Y j β 1 + β 2 e β 3x j ) 2 = 0 ( Y j β 1 + β 2 e β 3x j ) 2 e β 3 x j = 0 ( Y j β 1 + β 2 e β 3x j ) 2 β2 x j e β 3x j = 0 ( β1 β 2 β 3 ) ist daher gegeben als Beispiel (vgl. [5]) Auf der Internetseite http://people.stern.nyu.edu/wgreene/text/edition7/tablef5-2.txt wird ein Datensatz bereitgestellt, der ohne Zwischenspeicherung auf dem eigenen Rechner direkt mit dem Befehl GreeneMacrodat <- read.table("http://people.stern.nyu.edu/wgreene/text/edition7/tablef5-2.txt", header = TRUE) direkt in R eingelesen werden kann. Er enthält für den Zeitraum von 1950 bis 2004 quartalsbezogenen Daten unter anderem zum Jahreseinkommen (realdpi) und zum Jahreskonsum (realcons) (jeweils in Einheiten von Milliarden US-$). Wir betrachten nun zunächst ein lineares Modell für die Konsumfunktion, die die Abhängigkeit des Konsums vom Einkommen modelliert. lm1 <- lm(realcons ~ realdpi, data = GreeneMacrodat) summary(lm1) Call: lm(formula = realcons ~ realdpi, data = GreeneMacrodat) Residuals: Min 1Q Median 3Q Max -191.4-56.1 1.4 49.5 324.1 Coefficients: Estimate Std. Error t value Pr(> t ) (Intercept) -80.35475 14.30585-5.62 6.4e-08 *** 23

realdpi 0.92169 0.00387 238.05 < 2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1... Nun wollen wir das nichtlineare Modell Y j = β 1 + β 2 x β 3 j + ε j für j = 1,..., n an die Daten anpassen. Als Anfangswerte wählen wir die Schätzer für β 1 und β 2, die wir aus dem linearen Modell erhalten haben. Zusätzlich setzen wir β 3 = 1. konsumfunktion <- function(x, beta1, beta2, beta3) { beta1 + beta2 * x^beta3 } lm2 <- nls(realcons ~ konsumfunktion(realdpi, beta1, beta2, beta3), data = GreeneMacrodat, start = list(beta1 = -80, beta2 = 1, beta3 = 1)) summary(lm2) Formula: realcons ~ konsumfunktion(realdpi, beta1, beta2, beta3) Parameters: Estimate Std. Error t value Pr(> t ) beta1 458.7985 22.5014 20.39 <2e-16 *** beta2 0.1009 0.0109 9.24 <2e-16 *** beta3 1.2448 0.0121 103.26 <2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 50.1 on 201 degrees of freedom Number of iterations to convergence: 45 Achieved convergence tolerance: 1.73e-06... 3 Die Box-Cox-Transformation Beispiele 1. Wir betrachten zunächst ein hypothetisches Beispiel, um zu sehen, ob das oben dargestellte Verfahren sinnvoll ist. Hierzu setzen wir x j = j 2 für j = 1, 2,..., 100 und Y j = 2 + x j + ε j mit ε j N(0, 0.25). Theoretisch müsste also λ = 0.5 sein. set.seed(5221) x <- 1:100/20 y <- 2 + sqrt(x) + 0.5 * rnorm(100) lambda_werte <- seq(-2, 2, 0.01) bctransf <- function(x, lambda) { if (lambda == 0) { y <- log(x) } else { 24

6000 Konsum 4000 2000 1000 2000 3000 4000 5000 6000 Einkommen Abbildung 2.8: Einkommen und Konsum mit linearer und nichtlinearer Konsumfunktion y <- (x^lambda - 1)/lambda } y } sumsquares <- numeric(length(lambda_werte)) for (index in 1:length(lambda_werte)) { sumsquares[index] <- deviance(lm(y ~ bctransf(x, lambda_werte[index]))) } lambda_werte[which(sumsquares == min(sumsquares))] [1] 0.45 Der theoretische Wert wird also durch den vorgeschlagenen Algorithmes relativ genau erreicht. Am Schaubild ist dagegen nicht so genau abzulesen, dass das Modell, mit dem die Daten erzeugt wurden, tatsächlich besser ist als ein lineares Modell. 2. (vgl. [9]) Wir betrachten wieder den Datensatz Caschool mit den Ergebnissen eines standardisierten Lese- und Mathematiktests sowie dem durchschnittlichen Einkommen des jeweiligen Distrikts (in 1000 US-$). Wir hatten oben gesehen, dass ein semilogarithmisches Modell eine gute Anpassung liefert, jedenfalls nach der Grafik zu beurteilen. Nun wollen wir untersuchen, ob ein Box-Cox-transformiertes Modell noch besser funktioniert. Wenn das semilogarithmische Modell sinnvoll ist, dann müsste man erwarten, dass der optimale Wert von λ (im Sinne des oben dargestellten Algorithmus) um Null herum liegt. data(caschool) lambda_werte <- seq(-2, 2, 0.01) attach(caschool) 25

5 4 3 2 0 1 2 3 4 5 Abbildung 2.9: Hypothetisches Modell zur Box-Cox-Transformation (blau: λ = 1, rot: λ = 0.5, grün: λ = 0.45) sumsquares <- numeric(length(lambda_werte)) for (index in 1:length(lambda_werte)) { sumsquares[index] <- deviance(lm(testscr ~ bctransf(avginc, lambda_werte[index]))) } lambda_werte[which(sumsquares == min(sumsquares))] [1] -0.06 detach(caschool) 4 Modellwahl Beispiele 1. Wir betrachten noch einmal das Beispiel mit den Milchkühen: futter <- c(10, 30, 20, 33, 5, 22, 8, 14, 25, 1, 17, 28) milch <- c(6525, 8437, 8019, 8255, 5335, 7236, 5821, 7531, 8320, 4336, 7225, 8112) library(lmtest) lm1 <- lm(milch ~ futter) resettest(lm1, power = 2:4, type = "fitted") RESET test 26

data: lm1 RESET = 4.644, df1 = 3, df2 = 7, p-value = 0.04329 2. Bei den Schuldaten ist auch zu erwarten, dass die Hypothese der Linerität zurückgewiesen wird: data(caschool) lm1 <- lm(testscr ~ avginc, data = Caschool) resettest(lm1, power = 2:4, type = "fitted") RESET test data: lm1 RESET = 17.75, df1 = 3, df2 = 415, p-value = 7.342e-11 3. Bei unserem Datensatz mit den Handmessungen wollen wir ebenfalls untersuchen, ob ein lineares Modell angemessen ist: lm1 <- lm(groesse ~ Handlaenge, data = handmessungen) resettest(lm1, power = 2:4, type = "fitted") RESET test data: lm1 RESET = 0.0355, df1 = 3, df2 = 24, p-value = 0.9908 lm2 <- lm(groesse ~ Handbreite, data = handmessungen) resettest(lm2, power = 2:4, type = "fitted") RESET test data: lm2 RESET = 1.039, df1 = 3, df2 = 24, p-value = 0.3931 Der Box-Cox-Test Beispiele 1. Im Beispiel mit den Milchkühen ergibt sich: futter <- c(10, 30, 20, 33, 5, 22, 8, 14, 25, 1, 17, 28) milch <- c(6525, 8437, 8019, 8255, 5335, 7236, 5821, 7531, 8320, 4336, 7225, 8112) n <- length(milch) milch_mittel <- prod(milch)^{ 1/n } milch_mittel 27

[1] 6965 milch_normiert <- milch/milch_mittel lm1 <- lm(milch_normiert ~ log(futter)) deviance(lm1) [1] 0.03807 lm2 <- lm(log(milch_normiert) ~ log(futter)) deviance(lm2) [1] 0.02873 Man sieht, dass das logarithmische Modell etwas besser ist als das semilogarithmische. Wir wollen nun testen, ob wir zu einem Signifikanzniveau von 5% davon ausgehen können, dass zwischen den Modellen ein Unterschied besteht. Ein 95%-Quantil der χ 2 1-Verteilung ist gegeben durch 3.8415 und die Testgröße hat den Wert T = n 2 log S 0 = 1.6888 S 1 Die Nullhypothese der Gleichwertigkeit kann zu einem Signifikanzniveau von 5% also nicht abgelehnt werden. 2. Beim Beispiel mit den Schuldaten hatten sich ebenfalls das semilogarithmische und das logarithmische Modell als aussichtsreich herausgestellt. data(caschool) attach(caschool) Die folgenden Objekte sind maskiert from Caschool (position 3): avginc, calwpct, compstu, computer, county, distcod, district, elpct, enrltot, expnstu, grspan, mathscr, mealpct, readscr, str, teachers, testscr n <- length(testscr) testscr_mittel <- exp(mean(log(testscr))) testscr_mittel [1] 653.9 testscr_normiert <- testscr/testscr_mittel lm1 <- lm(testscr_normiert ~ log(avginc)) deviance(lm1) [1] 0.1556 lm2 <- lm(log(testscr_normiert) ~ log(avginc)) deviance(lm2) [1] 0.1571 detach(caschool) 28

Bereits durch einen Vergleich der Werte sieht man, dass die Anpassung in beiden Modellen praktisch gleich gut ist. Bei einem formalen Test ergibt sich die Testgröße T = n 2 log S 0 = 1.9186 S 1 Die Nullhypothese der Gleichwertigkeit kann zu einem Signifikanzniveau von 5% also nicht abgelehnt werden. 29

3 Verallgemeinerte lineare Modelle 1 Einführung Beispiele 1. Es soll untersucht werden, in wie weit Variablen wie der GRE (Graduate Record Exam), GPA (Grade Point Average) und das Prestige der Institution, bei der der Bachelor erworben wurde, einen Einfluss auf die Zulassung zum Masterstudium an einer amerikanischen Universität haben. Die Zielgröße (Zulassung/keine Zulassung) ist dabei binär. Der Datensatz ist online verfügbar: zulassung <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv") 2. Der Datensatz SwissLabor aus dem Paket AER enthält Daten aus der Umfrage SOMIPOPS (Socio-medical indicators for the population of Switzerland) in der Schweiz aus dem Jahr 1981. Es liegen Daten für 872 Frauen über die folgenden Variablen vor: participation berufstätig (yes/no) income logarithmiertes Einkommen ohne beruflichen Verdienst age Alter in Jahrzehnten education Jahre formaler Ausbildung youngkids Anzahl Kinder unter 7 Jahren oldkids Anzahl Kinder über 7 Jahren foreign ja: kein Schweizer Staatsbürger; nein: Schweizer Staatsbürger Nun soll untersucht werden, wie sich die Frage, ob die jeweiligen Frauen berufstätig sind, mit Hilfe eines geeigneten Modells beschreiben lässt. Tests für H 0 : β = β 0 gegen H 1 : β β 0 Beispiel Wir betrachten als erstes einen hypothetischen Datensatz mittels x k = k 20 für k = 1,..., 100 und Y k B(1, p k ) mit p k = eβ 1+β 2 x k 1 + e β 1+β 2. Hierbei wählen wir β x 1 = 1 und β 2 = 0.5 k glm1 <- glm(y ~ x, family = binomial) coef(glm1) (Intercept) x -0.2536 0.2669 Die gefundenen Schätzwerte weichen offensichtlich weit von den theoretischen Werten ab, mit denen die Stichprobe erzeugt wurde. Wir wollen nun die oben definierte Teststatistik auf das Problem H 0 : β = ( ) 1 0.5 gegen H 1 : β ( ) 1 0.5 anwenden. Beachte, dass in diesem Fall log L(Y, β) = Y log e β 1+β 2 x 1 + e β 1+β 2 x p 1 p log(1 p) gilt, wobei p = p(β) = gilt. In R können wir die Berechnung deswegen folgendermaßen vornehmen: 30

1.00 0.75 0.50 0.25 0.00 0 1 2 3 4 5 Abbildung 3.1: Hypothetisches Beispiel mit Logit- (blau) und Probit-Kurve (grün) p0 <- exp(beta1 + beta2 * x)/(1 + exp(beta1 + beta2 * x)) l0 <- y * log(p0/(1 - p0)) + log(1 - p0) pdach <- exp(coef(glm1)[1] + coef(glm1)[2] * x)/(1 + exp(coef(glm1)[1] + coef(glm1)[2] * x)) ldach <- y * log(pdach/(1 - pdach)) + log(1 - pdach) tstat <- 2 * sum(ldach - l0) pchisq(tstat, df = 2) [1] 0.8023 Tests für H 0 : β j = 0 gegen H 1 : β j 0 Beispiele 1. Wir betrachten wieder unserern hypothetischen Datensatz x k = k 20 für k = 1,..., 100 und Y k B(1, p k ) mit p k = eβ 1+β 2 x k 1 + e β 1+β 2. Wieder ist β x 1 = 1 und β 2 = 0.5. k Wir testen H 0 : β 2 = 0 gegen H 1 : β 2 0. Die Nullhypothese lautet also, dass x keinen Einfluss auf y hat. Wir wissen, dass für dieses Modell I = X T diag(p i (1 p i ))X ist. Somit können wir die Teststatistik wie folgt berechnen: glm1 <- glm(y ~ x, family = binomial) summary(glm1) Call: glm(formula = y ~ x, family = binomial) 31

Deviance Residuals: Min 1Q Median 3Q Max -1.651-1.233 0.819 1.030 1.264 Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) -0.254 0.410-0.62 0.536 x 0.267 0.146 1.83 0.068. --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1... pdach <- exp(coef(glm1)[1] + coef(glm1)[2] * x)/(1 + exp(coef(glm1)[1] + coef(glm1)[2] * x)) Xmatrix <- cbind(1, x) Imatrix <- t(xmatrix) %*% diag(pdach * (1 - pdach)) %*% Xmatrix Imatrix x 23.18 55.99 x 55.99 182.04 tstat <- coef(glm1)[2]/sqrt(solve(imatrix)[2, 2]) tstat x 1.825 2 * (1 - pnorm(tstat)) x 0.06795 Vergleicht man das eben erzielte Ergebnis mit der Ausgabe von summary(glm1), so stellt man fest, dass dieser Test durch die summary-funktion automatisch für jede Variable durchgeführt wird. Er muss also künftig nicht von Hand ausgeführt werden. Die Variable pdach kann übrigens auch einfach über den fitted(glm1) erzeugt werden. 2. Der Datensatz SwissLabor aus dem Paket AER enthält Daten aus der Umfrage SOMIPOPS (Socio-medical indicators for the population of Switzerland) in der Schweiz aus dem Jahr 1981. Es liegen Daten für 872 Frauen über die folgenden Variablen vor: participation berufstätig (yes/no) income logarithmiertes Einkommen ohne beruflichen Verdienst age Alter in Jahrzehnten education Jahre formaler Ausbildung 32

youngkids Anzahl Kinder unter 7 Jahren oldkids Anzahl Kinder über 7 Jahren foreign ja: kein Schweizer Staatsbürger; nein: Schweizer Staatsbürger Nun soll untersucht werden, wie sich die Frage, ob die jeweiligen Frauen berufstätig sind, mit Hilfe eines geeigneten Modells beschreiben lässt. data(swisslabor) logit2 <- glm(participation ~ income + age + education + youngkids + oldkids + foreign, data = SwissLabor, family = binomial) summary(logit2) Call: glm(formula = participation ~ income + age + education + youngkids + oldkids + foreign, family = binomial, data = SwissLabor) Deviance Residuals: Min 1Q Median 3Q Max -1.938-0.973-0.538 1.067 2.268 Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) 10.3743 2.1669 4.79 1.7e-06 *** income -0.8150 0.2055-3.97 7.3e-05 *** age -0.5103 0.0905-5.64 1.7e-08 *** education 0.0317 0.0290 1.09 0.27 youngkids -1.3307 0.1802-7.39 1.5e-13 *** oldkids -0.0220 0.0738-0.30 0.77 foreignyes 1.3104 0.1998 6.56 5.4e-11 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 1203.2 on 871 degrees of freedom Residual deviance: 1052.8 on 865 degrees of freedom... Nimmt man ein Signifikanzniveau von 5% als Kriterium, haben offenbar alle Größen außer education und oldkids einen Einfluss. Eine Überraschung erlebt man, wenn man neben age auch noch dessen Quadrat ins Modell aufnimmt. data(swisslabor) logit1 <- glm(participation ~ income + age + I(age^2) + education + youngkids + oldkids + foreign, data = SwissLabor, family = binomial) summary(logit1) Call: glm(formula = participation ~ income + age + I(age^2) + education + youngkids + oldkids + foreign, family = binomial, data = SwissLabor) 33

Deviance Residuals: Min 1Q Median 3Q Max -1.906-0.963-0.492 1.017 2.392 Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) 6.1964 2.3831 2.60 0.0093 ** income -1.1041 0.2257-4.89 1.0e-06 *** age 3.4366 0.6879 5.00 5.9e-07 *** I(age^2) -0.4876 0.0852-5.72 1.0e-08 *** education 0.0327 0.0300 1.09 0.2761 youngkids -1.1857 0.1720-6.89 5.5e-12 *** oldkids -0.2409 0.0845-2.85 0.0043 ** foreignyes 1.1683 0.2038 5.73 9.9e-09 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 1203.2 on 871 degrees of freedom... Jetzt haben alle Größen außer education einen Einfluss. 3. Es soll untersucht werden, in wie weit Variablen wie der GRE (Graduate Record Exam), GPA (Grade Point Average) und das Prestige der Institution, bei der der Bachelor erworben wurde, einen Einfluss auf die Zulassung zum Masterstudium an einer amerikanischen Universität haben. Die Zielgröße (Zulassung/keine Zulassung) ist dabei binär. Der Datensatz kann online folgendermaßen eingelesen werden: zulassung$rank <- factor(zulassung$rank) logit1 <- glm(admit ~ gre + gpa + rank, data = zulassung, family = "binomial") summary(logit1) Call: glm(formula = admit ~ gre + gpa + rank, family = "binomial", data = zulassung) Deviance Residuals: Min 1Q Median 3Q Max -1.627-0.866-0.639 1.149 2.079 Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) -3.98998 1.13995-3.50 0.00047 *** gre 0.00226 0.00109 2.07 0.03847 * gpa 0.80404 0.33182 2.42 0.01539 * rank2-0.67544 0.31649-2.13 0.03283 * rank3-1.34020 0.34531-3.88 0.00010 *** rank4-1.55146 0.41783-3.71 0.00020 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 34

(Dispersion parameter for binomial family taken to be 1) Null deviance: 499.98 on 399 degrees of freedom Residual deviance: 458.52 on 394 degrees of freedom AIC: 470.5... zulassung <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv") Tests für H 0 : Cβ = d gegen H 1 : Cβ d Beispiel Für den Datensatz SwissLabor wollen wir testen, ob überhaupt eine Abhängigikeit vom Alter vorliegt. Nun geht das Alter aber doppelt in das Modell ein, einmal linear und einmal quadratisch. Wir spezifizieren das Modell folgendermaßen: participation j = β 1 +β 2 income j +β 3 age j +β 4 age 2 j+β 5 education j +β 6 youngkids j +β 7 oldkids j +β 8 foreign j +ε j Wir wollen testen. Mit der Matrix H 0 : β 3 = β 4 = 0 gegen H 1 : β 2 3 + β 2 4 > 0 C = ( ) 0 0 1 0 0 0 0 0 R 2 8 0 0 0 1 0 0 0 0 ist dies gleichbedeutend mit dem linearen Testproblem H 0 : Cβ = 0 gegen H 1 : Cβ 0 Beispiel Im Beispiel von oben können wir folgendermaßen vorgehen. Wir definieren die Modelle folgendermaßen: logit1 <- glm(participation ~ income + age + I(age^2) + education + youngkids + oldkids + foreign, data = SwissLabor, family = binomial) logit2 <- glm(participation ~ income + education + youngkids + oldkids + foreign, data = SwissLabor, family = binomial) Die Modelle könnten in R übrigens einfacher auf folgende Art eingegeben werden: logit1 <- glm(participation ~. + I(age^2), data = SwissLabor, family = binomial) logit2 <- update(logit1,. ~. - age - I(age^2), data = SwissLabor, family = binomial) Die Test, die auf der Likelihood-Ratio-Statistik bzw. der Score-Statistik beruhen, sind über die Funktion anova() direkt verfügbar: anova(logit2, logit1, test = "Chisq") Analysis of Deviance Table Model 1: participation ~ income + education + youngkids + oldkids + foreign Model 2: participation ~ income + age + I(age^2) + education + youngkids + oldkids + foreign Resid. Df Resid. Dev Df Deviance Pr(>Chi) 35

1 866 1086 2 864 1018 2 68.9 1.1e-15 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 anova(logit2, logit1, test = "Rao") Analysis of Deviance Table Model 1: participation ~ income + education + youngkids + oldkids + foreign Model 2: participation ~ income + age + I(age^2) + education + youngkids + oldkids + foreign Resid. Df Resid. Dev Df Deviance Rao Pr(>Chi) 1 866 1086 2 864 1018 2 68.9 64.6 9.3e-15 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Für den Wald-Test erhalten wir Cmatrix <- matrix(c(rep(0, 4), 1, 0, 0, 1, rep(0, 8)), nrow = 2) Cmatrix [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 0 0 1 0 0 0 0 0 [2,] 0 0 0 1 0 0 0 0 Xmatrix <- model.matrix(logit1) pdach <- fitted(logit1) Imatrix <- t(xmatrix) %*% diag(pdach * (1 - pdach)) %*% Xmatrix waldstat <- t(cmatrix %*% coef(logit1)) %*% solve(cmatrix %*% solve(imatrix) %*% t(cmatrix)) %*% Cmatrix %*% coef(logit1) waldstat [,1] [1,] 58.08 1 - pchisq(waldstat, df = 8) [,1] [1,] 1.11e-09 qchisq(0.95, df = 8) [1] 15.51 Kriterien zur Modellwahl Beispiele 1. logit1 <- glm(participation ~ income + age + I(age^2) + education + youngkids + oldkids + foreign, data = SwissLabor, family = binomial) logit2 <- glm(participation ~ income + age + education + youngkids + oldkids + 36

foreign, data = SwissLabor, family = binomial) logit3 <- glm(participation ~ income + education + youngkids + oldkids + foreign, data = SwissLabor, family = binomial) logit4 <- glm(participation ~ income + age + I(sin(age)) + education + youngkids + oldkids + foreign, data = SwissLabor, family = binomial) logit5 <- glm(participation ~ income + age + I(age^2) + I(age^3) + education + youngkids + oldkids + foreign, data = SwissLabor, family = binomial) probit1 <- glm(participation ~ income + age + I(age^2) + education + youngkids + oldkids + foreign, data = SwissLabor, family = binomial(link = "probit")) extractaic(logit1) [1] 8 1034 AIC(logit1) [1] 1034 AIC(logit2) [1] 1067 AIC(logit3) [1] 1098 AIC(logit4) [1] 1038 AIC(logit5) [1] 1036 AIC(probit1) [1] 1033 Das Modell mit dem zusätzlichen quadratischen Altersterm wird also vorgezogen. Zudem hat das zugehörige Probit-Modell noch einen etwas kleineren AIC. 2. Auf der Internetseite http://www.jstatsoft.org/v27/i08/ findet man die Datei DebTrivedi.rda mit einem Datensatz zu einer Arbeit aus dem Journal of Applied Econometrics, siehe http://www.econ.queensu.ca/jae/1997-v12.3/deb-trivedi/ Der Datensatz kann nach dem Herunterladen mit dem Befehl load(debtrivedi) eingelesen werden. Hier betrachten wir die Zielgröße ofp, die Anzahl der Arztbesuche im Jahr vor der Datenerhebung in Abhängigkeit von folgenden Regressoren: 37

hosp: Anzahl der Krankenhausaufenthalte im Jahr vor der Datenerhebung numchron: Anzahl chronischer Erkrankungen age: Alter in Jahren black: nein/ja gender: weiblich/männlich married: nein/ja school: Jahre Schulbildung faminc: Familieneinkommen employed: nein/ja privins: privatversichert nein/ja medicaid: Unterstützung durch Medicaid nein/ja Für diese Zielgröße erscheint das Modell mit der Poissonverteilung am passendsten. Wir wollen nun versuchen, mit Hilfe der oben kennengelernten Tests und des AIC, das Modell etwas zu reduzieren: model1 <- glm(ofp ~ hosp + numchron + age + I(age^2) + black + married + school + faminc + employed + privins + medicaid, data = DebTrivedi, family = poisson) model1 <- glm(ofp ~ hosp + numchron + age + I(age^2) + black + married + school + faminc + employed + privins + medicaid, data = DebTrivedi, family = poisson) summary(model1) Call: glm(formula = ofp ~ hosp + numchron + age + I(age^2) + black + married + school + faminc + employed + privins + medicaid, family = poisson, data = DebTrivedi) Deviance Residuals: Min 1Q Median 3Q Max -7.924-1.993-0.697 0.744 14.525 Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) -4.14954 0.76430-5.43 5.7e-08 *** hosp 0.17920 0.00589 30.44 < 2e-16 *** numchron 0.17000 0.00432 39.37 < 2e-16 ***... AIC(model1) [1] 36113 model2 <- glm(ofp ~ hosp + numchron + age + I(age^2) + black + married + school + faminc + privins + medicaid, data = DebTrivedi, family = poisson) summary(model2) Call: glm(formula = ofp ~ hosp + numchron + age + I(age^2) + black + 38

married + school + faminc + privins + medicaid, family = poisson, data = DebTrivedi) Deviance Residuals: Min 1Q Median 3Q Max -7.921-1.988-0.697 0.742 14.517 Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) -4.11454 0.76206-5.40 6.7e-08 *** hosp 0.17917 0.00589 30.44 < 2e-16 *** numchron 0.16983 0.00431 39.42 < 2e-16 ***... AIC(model2) [1] 36111 model3 <- glm(ofp ~ hosp + numchron + age + I(age^2) + black + married + school + privins + medicaid, data = DebTrivedi, family = poisson) summary(model3) Call: glm(formula = ofp ~ hosp + numchron + age + I(age^2) + black + married + school + privins + medicaid, family = poisson, data = DebTrivedi) Deviance Residuals: Min 1Q Median 3Q Max -7.911-1.989-0.695 0.746 14.513 Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) -4.16129 0.76168-5.46 4.7e-08 *** hosp 0.17914 0.00589 30.43 < 2e-16 *** numchron 0.17002 0.00431 39.48 < 2e-16 ***... AIC(model3) [1] 36111 model4 <- glm(ofp ~ hosp + numchron + age + I(age^2) + married + school + privins + medicaid, data = DebTrivedi, family = poisson) summary(model4) Call: glm(formula = ofp ~ hosp + numchron + age + I(age^2) + married + school + privins + medicaid, family = poisson, data = DebTrivedi) 39

Deviance Residuals: Min 1Q Median 3Q Max -7.910-2.004-0.695 0.747 14.547 Coefficients: Estimate Std. Error z value Pr(> z ) (Intercept) -4.20156 0.76138-5.52 3.4e-08 *** hosp 0.17907 0.00589 30.41 < 2e-16 *** numchron 0.17075 0.00430 39.68 < 2e-16 *** age 1.38135 0.19989 6.91 4.8e-12 ***... AIC(model4) [1] 36120 40

4 Zeitreihen 1 Einführung Beispiel (vgl. [1]) Wir betrachten Absatzmengen Y t von Wasserfiltern in 1000 Stück in Abhängigkeit von Verkaufspreis x t in e. Die Daten finden sich in Tabelle 4.1. Es handelt sich dabei um monatliche Daten für den Zeitraum von Januar 2005 bis Dezember 2006. Ein lineares Modell lässt sich dabei zunächst t x t Y t t x t Y t 1 24.2 1990 13 32.2 1700 2 25.5 1630 14 32.4 1450 3 26.8 1570 15 33.2 1480 4 26.4 1960 16 34.0 1450 5 25.2 2150 17 33.7 1000 6 24.4 2450 18 32.8 1080 7 26.2 2210 19 31.3 1270 8 26.1 2400 20 30.9 1520 9 27.4 2200 21 30.0 1820 10 28.4 1270 22 28.3 1660 11 29.8 1250 23 27.5 1500 12 31.3 1500 24 26.8 1810 Tabelle 4.1: Absatzmengen von Wasserfiltern in Abhängigkeit von Verkaufspreis problemlos anwenden, das linke Schaubild in Abbildung 4.1 zeigt die Datenpunkte mit der Regressionsgeraden. Schaut man sich die sog. Residuen an, also die Differenz zwischen den Datenpunkten und ihren geschätzten Werten in der vorgegebenen zeitlichen Reihenfolge, so entsteht die rechte Grafik in Abbildung 4.1. Die Verteilung der Vorzeichen sollte dabei zufällig sein. Die Grafik suggeriert zumindest, dass das nicht der Fall ist: Offensichtlich treten Werte ober- bzw. unterhalb der Regressionsgerade ebensolche Werte im Folgemonat nach sich. Ist also ein Wert in einem Monat im Vergleich zum geschätzten Wert zu hoch, dann ist die Wahrscheinlichkeit groß, dass das auch im nächsten Monat so sein wird. Beispiele 1. Der Datensatz AirPassengers enthält die weltweite monatliche Anzahl von Flugpassagieren (in 1000) für die Jahre 1949 to 1960. Es handelt sich hierbei um einen Standarddatensatz, auf den in Darstellungen zu Zeitreihen immer wieder zurückgegriffen wird. Eine Skizze kann direkt mit plot(airpassengers) erzeugt werden. Abbildung 4.2 zeigt die Zeitreihe. 2. Die Arbeitslosenquote (von Dezember 1991 bis Mai 2013) in der Bundesrepublik Deutschland erhält man von der Seite der Bundesbank über den Link: http://www.bundesbank.de/cae/servlet/ StatisticDownload?tsId=BBK01.UJCC02&its_csvFormat=en&its_fileFormat=csv&mode=its 41

2500 250 2000 Absatzmenge Residuen 0 1500 250 1000 24 26 28 30 32 34 Verkaufspreis 500 0 5 10 15 20 25 t Abbildung 4.1: Wasserfilter: Scatterplot(links), Residualplot (rechts) 600 Passagiere 400 200 1952 1956 1960 Jahr Abbildung 4.2: Zeitreihe AirPassengers Er findet sich aufbereitet als R-Datei UnempGermany.rda auch auf der Homepage der Vorlesung und kann mit 42

load("unempgermany.rda") geladen werden. Eine entsprechende Grafik finden Sie in Abbildung 4.3. 12 Arbeitslosenquote 10 8 1995 2000 2005 2010 Jahr Abbildung 4.3: Zeitreihe UnempGermany 3. Die Datei Einzelhandel.rda von der Homepage der Vorlesung enthält die Einzelhandelsumsätze für Nahrungsmittel und Kraftstoffe für den Zeitraum von Januar 2000 bis April 2013. Die Daten sind inflationsbereinigt und so normiert, dass der Wert 100 den Preisen von 2010 entspricht. Die Daten stammen vom Statistischen Bundesamt und können der Webpage https://www.destatis.de/de/zahlenfakten/indikatoren/ Konjunkturindikatoren/Einzelhandel/hug230.html entnommen werden. Abbildung 4.4 zeigt die Werte der beiden Zeitreihen. 4. Um eine mathematische Struktur hinter solchen Zeitreihen zu entdecken, definieren wir ein fiktives Beispiel: set.seed(3241) zeit <- 1:200 x <- 100 + 0.1 * zeit + 0.004 * zeit^2 + 60 * sin(11 * zeit) 43

175 160 150 140 Nahrungsmittel 125 Kraftstoff 120 100 100 2000 2005 2010 Jahr 2000 2005 2010 Jahr Abbildung 4.4: Einzelhandelsumsätze: Nahrungsmittel (links), Kraftstoffe (rechts) 300 300 250 250 200 200 x x 150 150 100 100 0 50 100 150 200 t 0 50 100 150 200 t Abbildung 4.5: Fiktive Zeitreihe Diese Werte werden anschließend mit einem zufälligen Fehler verzerrt. Zwei Varianten dieser Zeitreihe zeigt Abbildung 4.5 2 Bestimmung von Trend und saisonaler Komponente Beispiele 1. Bevölkerung der USA von 1790 bis 2000 (in Einheiten von 1000 Personen) Die Zeitreihe kann z.b. von der Webpage http://www.quandl.com/mworth-measuringworth/0_3-united-states-population abgerufen werden. Die Zeitreihe liegt in Wirklichkeit bis 2012 vor. Wir werden aber nur die Werte bis 2000 nutzen und für eine Prognose des Werts für 2012 nutzen. 44

175 20 150 10 125 0 100 10 2000 2005 2010 Zeitreihe 2000 2005 2010 Saisonale Komponente 140 10 130 5 120 0 110 5 100 2000 2005 2010 Trend 10 2000 2005 2010 Restkomponente Abbildung 4.6: Zerlegung von Nahrungsmittel in Komponenten 2. Prozentuale Änderung der Lagerbestände an alkoholischen Getränken im Handel in den USA von Februar 1992 bis April 2013 Die Zeitreihe kann z.b. von der Webpage http://www.quandl.com/uscensus-u-s-census-bureau/bi_mwts_4248_mpcim-beer-wine-and-distilled abgerufen werden. 3. Wir betrachten die Streiks in den USA in den Jahren 1951-1980. strikes <- ts(c(4737, 5117, 5091, 3468, 4320, 3825, 3673, 3694, 3708, 3333, 3367, 3614, 3362, 3655, 3963, 4405, 4595, 5045, 5700, 5716, 5138, 5010, 5353, 6074, 5031, 5648, 5506, 4230, 4827, 3885), start = 1951) 45

Elimination eines Trends bei einer Zeitreihe ohne saisonale Effekte Methode 1: Kleinste-Quadrate-Schätzung des Trends Beispiel Für die Zeitreihe mit der US-Bevölkerungsentwicklung kann beispielsweise einfach das Modell Population = β 1 + β 2 Jahr + β 2 Jahr 2 angesetzt werden. Es ist klar, dass die Natur der Fragestellung eher ein semilogarithmisches Modell nahelegt, aber auch mit diesem einfacheren Modell lässt sich die Zeitreihe untersuchen. Mit diesen 5000 2e+05 0 Einwohner Residuen 1e+05 5000 0e+00 10000 1800 1850 1900 1950 2000 Jahr 1800 1850 1900 1950 2000 Jahr Abbildung 4.7: Bevölkerung der USA (links), Residuen (rechts) linearen Modell ist es einfach, eine Prognose für 2012 zu erstellen, indem man nämlich einfach den Jahreswert 2012 in die Modellgleichung einsetzt. Einwohner <- as.vector(useinwohner) Jahr <- 1790:2000 einwohner2012 <- rev(as.vector(uspopulation))[1] lm1 <- lm(einwohner ~ Jahr + I(Jahr^2)) print(lm1) Call: lm(formula = Einwohner ~ Jahr + I(Jahr^2)) Coefficients: (Intercept) Jahr I(Jahr^2) 2.16e+07-2.41e+04 6.69e+00 prognose2012_lm1 <- predict(lm1, newdata = data.frame(jahr = 2012)) prognose2012_lm1 1 310788 einwohner2012 [1] 314150 46