###################################################### # # # 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 ######################################################