###################################################### # # # Universität Regensburg - Lehrstuhl für Ökonometrie # # # # Kursprüfung im Fach: Programmieren mit R # # # # Wintersemester 2016/2017 # # # # Datum: 31.10.2016 # # # ###################################################### ###################################################### # 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: 17 Punkte # Aufgabe 2: 17 Punkte # Aufgabe 3: 12 Punkte # Aufgabe 4: 14 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_ws16_kla_Nachname_Vorname.R (IHR Name...!) # - Senden Sie am Ende der Bearbeitungszeit diese Datei an: # stefan.rameseder@ur.de # - Drucken Sie nach dem Versenden Ihren Code aus und geben Sie ihn bei der Aufsicht UNTERSCHRIEBEN 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 (17 Punkte): ###################################################### # a) (2 Punkte) Installieren und laden Sie das AER-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 CPS1985. Wie viele Beobachtungen von wie vielen Variablen beinhaltet dieser? # Wie viele der Variablen sind Faktoren, wie viele sind numerisch? # c) (1 Punkt) Beschreiben Sie kurz den Unterschied eines "factors" zu einem "ordered factor". # d) (2 Punkte) Speichern Sie den Teildatensatz bestehend aus allen männlichen Beobachtungen # in der Variable "male_dat" ab. # Hinweis: Falls Ihnen dies nicht gelingt, so arbeiten Sie mit dem kompletten Datensatz weiter. # e) (1 Punkt) Wie viele Beobachtungen sind in diesem Teildatensatz? # f) (3 Punkte) Zeichnen Sie für den Datensatz "male_dat": # i) Einen Scatterplot mit x=education, y=wage. # ii) Einen bedingten Scatterplot mit x=education, y=wage bedingt auf occupation # g) (3 Punkte) Regressieren Sie im gesamten Datensatz # log(wage) gegen eine Konstante, education, experience und gender. # Regressieren Sie danach in "male_dat" log(wage) gegen die gleichen Variablen ohne gender. # Speichern Sie beide Zusammenfassungen in "total_sum" und "male_sum". # h) (2 Punkte) Speichern Sie die beiden Parameterschätzungen der Konstanten in der Variablen int_big # und int_male ab. ###################################################### # Aufgabe 2 - Simulation (17 Punkte): ###################################################### # a) (2 Punkte) Setzen Sie den Zufallsgenerator auf die Startposition 1. # Initialisieren Sie einen Vektor alpha mit den Einträgen 0.1 und 1. # Erzeugen Sie einen Zufallsvektor x1 mit 100 Beobachtungen, wobei x1 # t-verteilt sei mit 7 Freiheitsgraden. # b) (5 Punkte) Simulieren sie nun r=1000 mal 100 Beobachtungen # einer abhängigen Variablen y via "y=alpha_1 + alpha_2 x1 +u", # indem Sie bei jedem Durchgang einen t-verteilen Fehler "u" (Anzahl von Freiheitsgraden = 2) # erzeugen. Speichern Sie ALLE simulierten "y" pragmatisch ab. # Hinweis: Für jede Replikation r benötigen Sie einen Vektor der gleichen Länge x1. # c) (5 Punkte) Erweiteren Sie nun Ihre Schleife: # - Initialisieren Sie zu Beginn einen Leervektor "alpha_hat" der Dimension 2 x r=1000 # - Speichern Sie in jedem Durchlauf die Schätzung "alpha_hat" von "alpha" im Modell # y_i = alpha_1 + alpha_2 x1_i + u_i # in Ihren Vektor "alpha_hat" # d) (2 Punkte) Setzen Sie den Zufallsgenerator noch einmal auf den Anfangswert # zurück und führen Sie die gesamte Simulation durch. # e) (3 Punkte) Zeichnen Sie ein Histogramm von den Schätzungen "alpha_1_hat" von "alpha_1". # Hinweis: Setzen Sie "breaks = 40" und zeichnen Sie den Mittelwert von alpha_1_hat ein. ###################################################### # Aufgabe 3 - Definition einer Funktion (12 Punkte): ###################################################### # a) (7 Punkte) Schreiben Sie eine Funktion mit dem Namen "PlotReg", # die bei Eingabe zweier Vektoren x und y # einen Scatterplot von y gegen x zeichnet, # y gegen x und eine Konstante regressiert, die Regressionsgerade einzeichnet # 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 der Fehler "Fehlerhafte Eingabe" ausgegeben werden. # Hinweis: # - Sie müssen hier zwei Tests durchführen, sowohl auf "gleiche Länge" als auch "beide numerisch". # - Testen Sie Ihre Funktion mit PlotReg(1:4, 3:11) PlotReg(1:4, rep("a", times = 4)) ###################################################### # Aufgabe 4 - Optimierung (14 Punkte): ###################################################### # a) (4 Punkte) Gegeben sei ein klassisches simples lineares Regressionsbeispiel y = X b + u # wobei set.seed(1) X <- cbind(1, rnorm(100, mean = 1, sd = 2)) y <- X %*% c(1,2) + rnorm(100, sd = 3) plot(X[,2],y) # Berechnen Sie den KQ-Schätzer (entweder von Hand oder per lm() ) # und speichern Sie beide Punktschätzungen in einem Vektor beta_hat ab. # b) (4 Punkte) Definieren Sie sich die SSR (Sum of Squared Residuals), # d.h. eine Funktion "ssr" mit drei Argumenten b, y, x via # f(b) = sum( (y-b[1]-b[2]*x)^2 ) # Testen Sie anschließend Ihre Funktion mit ssr(b = c(1, 2), y = y, x = X[ ,2]) # b) (4 Punkte) Minimieren Sie diese Funktion mit Hilfe der optim()-Funktion. # Hinweis: # - Nutzen Sie als Startwert par = c(0,0) # - Nicht zu minimierende Argumente (hier y, x) können nach der Funktionsübergabe # angegeben werden: optim( par , fn , additional_argument, additional_argument, ...) # c) (2 Punkte) Interpretieren Sie kurz die Rückgabewerte $par und $value. ###################################################### # Ende ######################################################