###################################################### # # # Universität Regensburg - Lehrstuhl für Ökonometrie # # # # Kursprüfung im Fach: Programmieren mit R # # # # Wintersemester 2013/2014 # # # # Datum: 22.10.2013 # # # ###################################################### ###################################################### # Bearbeitungshinweise: ###################################################### # # - Die Bearbeitungszeit beträgt 60 (+5) Minuten (Abspeichern, Versenden) # - Die Klausur besteht aus vier Aufgaben (60 Punkte), die alle bearbeitet werden sollen. # Aufgabe 1: 25 Punkte # Aufgabe 2: 20 Punkte # Aufgabe 3: 8 Punkte # Aufgabe 4: 7 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: PIR_ws13_kla_Nachname_Vorname.R (IHR Name...) # - Senden Sie am Ende der Bearbeitungszeit ihren R-Code an: # stefan.rameseder@wiwi.uni-regensburg.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 (25 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.) # in R Console: install.packages("AER") # b) (2 Punkte) Laden Sie den im AER-Paket enthaltenen Datensatz MASchools. # Machen Sie die Spaltenüberschriften des Datensatzes direkt ansprechbar. # (Falls Sie das Paket nicht laden konnten, holen Sie sich den Datensatz von der Homepage) # c) (2 Punkte) Lesen Sie die Hilfe des Datensatzes durch, geben Sie die deskriptiven # Statistiken des Datensatzes aus. # (Falls Sie das Paket nicht laden konnten, lesen Sie die Hilfe im Internet) # d) (2 Punkte) Interpretieren Sie mit der Hilfe von oben den Mittelwert von stratio. # Achten Sie dabei darauf, auf was sich der Datensatz bezieht. # Statio gibt die Student-teacher ratio an, d.h. ist sozusagen ein Indikator für die Betreuungs- # intensität der unterschiedlichen School-Districts in Massachusetts. # In ganz Massachusetts kommen auf einen Lehrer durchschnittlich 17,34 (ganzzahlig 18) Schüler, bzw. # ein Lehrer ist für die Betreuung von 17,34 (18) Schülern verantwortlich # e) (1 Punkt) Erzeugen Sie das logarithmierte durchschnittliche Gehalt # als eigene Variable lsalary im Datensatz. # f) (2 Punkte) Erzeugen Sie einen Datensatz SalSTRatIncDat, der NUR die Variablen # lsalary, stratio und income enthält. # g) (3 Punkte) Wenn Sie sich lsalary ausgeben lassen, sehen Sie, dass einige # Beobachtungen nicht vorkommen. Benutzen Sie diejenige Teilmenge des Datensatzes, # in dem die Beobachtungen mit NA Einträgen in lsalary gelöscht werden. # Nennen Sie die reine Version des Datensatzes SalSTRatIncDat_clean. # # Hinweis: In der Bedingung könnte der Befehl is.na() gebraucht werden. # h) (2 Punkte) Wie viele Beobachtungen wurden durch das Weglassen der NA Einträge # in lsalary gelöscht? # i) (2 Punkte) Schätzen Sie ein lineares Regressionsmodell, wobei lsalary # durch eine Konstante, stratio und income erklärt wird. # Verwenden Sie dazu den bereinigten Datensatz SalSTRatIncDat_clean. # Falls Sie diesen Datensatz nicht bereinigen konnten, nutzen Sie # den ursprünglichen Datensatz. # Benennen Sie die Schätzung im bereinigten Fall mit eq1, im anderen # Fall mit eq2. # j) (3 Punkte) Testen Sie die folgende Hypothese: # Der Einfluss des Pro-Kopf-Einkommens ist derselbe, wie der Einfluss # des Schüler-Lehrer-Verhältnisses. # (H0: beta_2 = beta_3) # Falls Sie hierfür Befehle benötigen, die noch nicht vorhanden sind, # suchen und installieren Sie das entsprechende Package und machen # es danach verfügbar. # j) (4 Punkte) Erzeugen Sie eine Graphik, in der stratio gegen income # illustriert wird. # Zeichnen Sie die Mittelwerte von stratio als grüne Linie und von # income als rote Linie ein. # Kennzeichnen Sie den Schnittpunkt gelb mit einem ausgemalten Kreis. # Hinweis: ?points bzw. pch ###################################################### # Aufgabe 2 (20 Punkte): ###################################################### # a) (3 Punkte) Geben Sie den Namen einer Funktion an, die Kerndichteschätzungen von Objekten # durchführt. (engl.: Smoothing Kernel Objects). In welchem Paket liegt die Funktion? # b) (3 Punkte) Laden Sie das Paket, falls Sie es noch nicht geladen haben. Lesen Sie die Hilfe # von der Funktion kernel() durch. # - Was ist der Objektname von dem Objekt, das kernel() als Wert zurückgibt? # - Aus was besteht dieses Objekt? # c) (3 Punkte) Sprechen Sie alle Werte (nicht Attribute) der Funktion am Beispiel # kernel("daniell", 5) an. # d) (3 Punkte) Laden Sie nun von der Kurshomepage # (http://www-wiwi.uni-regensburg.de/Institute/VWL/Tschernig/Lehre/ProgrammierenR.html.de) # die Datei dataUS.csv herunter und lesen Sie sie in R in die Variable data_US ein. # Hinweis: Setzen Sie vorher Ihr Arbeitsverzeichnis entsprechend. # e) (2 Punkte) In Ihrer dataUS steht nun in der zweiten Spalte das Datum, das noch # nicht als DATE-Objekt erkannt wurde. Überschreiben Sie die zweite Spalte mit # dem Datum als DATE-Objekt und machen Sie die einzelnen Spalten verfügbar. # f) (3 Punkte) Wenden Sie nun die gefundene Funktion von vorher auf die Arbeitslosenraten # im Datensatz dataUS an. Benutzen sie dazu k1<- kernel("daniell", 5) um sich einen "5-Glätter" # zu erzeugen und glätten Sie mit dem kernapply()-Befehl und den oben erzeugten Zahlen # die Arbeitslosenraten der USA. # Nennen Sie die geglätteten Daten ur_smooth. # Hinweis: Eventuell gibt es in der Hilfe zu kernel() ein interessantes Beispiel. # g) (3 Punkte) Erzeugen Sie einen Linienplot der Zeitreihe ur. Zeichnen Sie zusätzlich # ur_smooth rot ein. ###################################################### # Aufgabe 3 (8 Punkte): ###################################################### # a) (5 Punkte) Die Fakultät einer ganzen Zahl x ist definiert als # x!:=x*(x-1)*(x-2)*...*1 # Schreiben Sie eine Funktion mit dem Namen fak, die bei Eingabe einer # NATÜRLICHEN Zahl die Fakultät dieser Zahl erzeugt. # # Hinweise: # - Alle Ihnen bekannte Schleifen sind anwendbar, mit einer for-Schleife # und dem Anwenden dieser auf die natürliche Zahl geht es am intuitivsten. # - Neben Schleifen sind auch andere Konstrukte denkbar. # - Testen Sie Ihre Funktion mit fak(3)=6 bzw. fak(4)=24 # - Notfalls können Sie im Internet nach Anregungen suchen, bedenken Sie aber, # dass vieles auch falsch sein kann. # b) (1 Punkt) Betrachten Sie nun Ihren Code und optimieren Sie ihn bzgl. Lesbarkeit, Eindeutigkeit # Kommentaren. # c) (2 Punkte) Beschreiben Sie kurz ohne Code, inwiefern man diese Funktion gegenüber # fehlerhafter Eingaben absichern könnte bzw. wo Probleme auftreten können. ###################################################### # Aufgabe 4 (7 Punkte): ###################################################### # a) (3 Punkte) Setzen Sie den Zufallsgenerator auf die Startposition 123. # Realisieren Sie einen Vektor beta mit den Einträgen 1 und 2. # Erzeugen Sie zwei Zufallsvektoren x1 und x2 mit jeweils 50 Beobachtungen. x1 sei # normalverteilt mit Mittelwert 3 und Varianz 4, x2 chi^2-verteilt mit 5 Freiheitsgraden. # b) (4 Punkte) Simulieren sie nun r=200 mal ein y=beta_1 x1+beta_2 x2 +u, # indem Sie bei jedem Durchgang einen normalverteilten Fehler u (Mittelwert=0, Varianz=1) # erzeugen. Speichern Sie ALLE simulierten y pragmatisch ab. ###################################################### # Ende ######################################################