###################################################### # # # Universität Regensburg - Lehrstuhl für Ökonometrie # # # # Kursprüfung im Fach: Programmieren mit R # # # # Wintersemester 2015/2016 # # # # Datum: 26.10.2015 # # # ###################################################### ###################################################### # Bearbeitungshinweise: ###################################################### # # - Die Bearbeitungszeit beträgt 60 (+5) Minuten (Abspeichern, Versenden) # - Die Klausur besteht aus drei Aufgaben (60 Punkte), die alle bearbeitet werden sollen. # Aufgabe 1: 20 Punkte # Aufgabe 2: 25 Punkte # Aufgabe 3: 15 Punkte # - Zugelassene Hilfsmittel sind das Kursmaterial (gedruckt oder digital) sowie R-bezogene # Internetseiten (inkl. Foren aller Art). # - Benennen Sie diese Datei zunächst um in: PMR_ws14_kla_Nachname_Vorname.R (IHR Name...!) # - Senden Sie am Ende der Bearbeitungszeit Ihren R-Code an: # stefan.rameseder@ur.de # - Drucken Sie nach dem Versenden Ihren Code aus und geben Sie ihn bei der Aufsicht ab. # - Lösen Sie die folgenden Aufgaben mittels ausführbarem Code in R (aktuelle Version) # und ergänzen Sie bei Bedarf Ihre Programmierung um aussagekräftige Kommentare. # - Interpretationen, etc. sollen ebenfalls als Kommentar angegeben werden. # - Falls Teile Ihres Programms nicht funktionieren, geben Sie ebenfalls in Kommentarform # an, wie Ihr Lösungsweg in algorithmischer Form aussehen würde. Auch dann ist eine # komplette Punktzahl möglich. ###################################################### # Name: # Vorname: # Matrikelnummer: ###################################################### ###################################################### # # #### #### #### ### # # # #### # # # # ## # # # # # # # # # # ### # #### #### #### ### #### #### #### # # # ###################################################### ###################################################### # Aufgabe 1 (18 Punkte): ###################################################### # a) (2 Punkte) Installieren und laden Sie das car-Paket. # (Falls es Probleme im Cip Pool gibt, laden Sie es direkt in der Konsole, fügen Sie es # in der Konsole hinzu und laden Sie es danach in RStudio.) # b) (3 Punkte) Laden Sie den Datensatz AMSsurvey. # Definieren Sie (mit der Vignette oder der Hilfefunktion) die vorkommenden Beobachtungen. # A data frame with 24 observations on the following 5 variables. # -type a factor with levels I(Pu) for group I public universities, I(Pr) for group I private universities, # II and III for groups II and III, IV for statistics and biostatistics programs, and Va for # applied mathemeatics programs. # -sex a factor with levels Female, Male of the recipient # -citizen a factor with levels Non-US, US giving citizenship status # -count The number of individuals of each type in 2008-09 # -count11 The number of individuals of each type in 2011-12 # c) (1 Punkt) Wenden Sie die Funktion summary auf den Datensatz an. Wie viele verschiedene Typen gibt es? # d) (2 Punkte) Speichern Sie den Datensatz bestehend aus Beobachtungen weiblicher Mathematiker # in der Variable "AMSsurvey_fem" ab. # e) (4 Punkte) Wie viele Frauen waren 2008 und wie viele Frauen 2011 unter den Befragten? # Wie viele waren davon jeweils US-Bürger? Haben sich die Prozentzahlen verändert? Wenn ja, um wie viel Prozent? # f) (4 Punkte) Zeichnen Sie für den kompletten Datensatz # einen "count(y)-type(x)"-Coplot, der auf "citizen" und zugleich auf "sex" bedingt ist. # g) (4 Punkte) Regressieren Sie im Datensatz für die Gruppe der Mathematikerinnen # "count" auf "type" und eine Konstante. Wiederholen Sie die Regression mit "count11" # als Regressand. Ändern sich die Vorzeichen der geschätzten Parameter? ###################################################### # Aufgabe 2 (25 Punkte): ###################################################### # a) (3 Punkte) Setzen Sie den Zufallsgenerator auf die Startposition 111. # Initialisieren Sie einen Vektor beta mit den Einträgen 15, 1 und 2. # Erzeugen Sie zwei Zufallsvektoren x1 und x2 mit jeweils 50 Beobachtungen. x1 sei # normalverteilt mit Mittelwert 1 und Varianz 1, x2 t-verteilt mit 5 Freiheitsgraden. # b) (5 Punkte) Simulieren sie nun r=200 mal ein "y=beta_1 + beta_2 x1 + beta_3 x2 +u", # indem Sie bei jedem Durchgang einen chi^2-verteilen Fehler "u" (Anzahl von Freiheitsgraden = 2) # erzeugen. Speichern Sie ALLE simulierten "y" pragmatisch ab. # Hinweise: Für jede Replikation r benötigen Sie einen Vektor der gleichen Länge x1 bzw. x2. # c) (5 Punkte) Erweiteren Sie nun Ihre Simulation: # - Initialisieren Sie zu Beginn einen Leervektor "beta_hat" der Dimension 200 x 3 # - Speichern Sie in jedem Durchlauf die Schätzung von "beta" im Modell # y_i = beta_1 + beta_0 x1_i + beta_3 x_2_i + u_i # in Ihren Vektor "beta_hat" # d) (3 Punkte) Setzen Sie den Zufallsgenerator noch einmal auf den Anfangswert zurück und führen Sie die gesamte Simulation # durch. # e) (2 Punkte) Führen Sie nun den Befehl apply(beta_hat, 2 , mean) # aus. Erklären Sie, was dieser Befehl berechnet. # f) (7 Punkte) Plotten sie das Histogramm der Schätzungen (probability=TRUE) # von allen Schätzern beta_hat in einen Plot mit drei Spalten und einer Zeile. # Fügen Sie mittels vertikaler Linie die wahren Werte in rot hinzu. # Geben Sie der Graphik einen Titel und Achsenbeschriftungen. # Hinweis: # 1. Ändern Sie die Grenzen der x-Achse, falls der wahre Wert nicht in das Histogramm einzeichenbar ist. # 2. Setzen Sie im Anschluss die graphical device mittels dev.off() wieder auf Ausgangszustand. ###################################################### # Aufgabe 3 (15 Punkte): ###################################################### # a) (5 Punkte) Schreiben Sie eine Funktion mit dem Namen "savePlot", die bei Eingabe zweier Vektoren x und y # einen Scatterplot von y gegen x zeichnet und ihn als .pdf-Datei mit dem Namen "plot.pdf" im Pfad "G:\" abspeichert. # Hinweis: # Vergessen Sie nicht "dev.off()" # Testen Sie danach mit den beiden Vektoren y <- rnorm(50) x <- rchisq(50, df = 2) # b) (5 Punkte) Testen Sie die Argumente der Funktion, indem Sie prüfen, ob es sich um numerische # Vektoren handelt, die gleich lang sind. Falls dies nicht zutrifft, # soll ein entsprechender Fehler ausgegeben werden. # Hinweis: # - Sie müssen hier zwei Tests durchführen. # - Testen Sie Ihre Funktion mit savePlot(1:4, 3:11) savePlot(1:4, rep("a", times = 4)) # c) (5 Punkte) Regressieren Sie zusätzlich y auf x (ohne Konstante) und zeichnen Sie die Regressionsgerade # in der Funktion savePlot in der Farbe grün in den Plot. Testen Sie anschließend noch einmal die Funktion. ###################################################### # Ende ######################################################