################################################# ### Kursinfos ################################################# ### Infrastruktur: # # - Möglichkeit 1: Privater Laptop mit eigener Struktur # - Möglichkeit 2: CIP-Pool-Rechner mit eigener Struktur # - Möglichkeit 3: CIP-Pool-Rechner mit vorgegebener Struktur # PMR.zip von der Homepage laden und auf dem privaten G-Laufwerk abspeichern. # PMR.zip entpacken # es müsste dann eine Struktur G:/PMR/codes, G:/PMR/data, ... vorhanden sein. ### Hintergrundliteratur zum Kurs # # - Ligges, U. (2008), Programmieren mit R, Springer. # - Kleiber, C. & Zeileis, A. (2008), Applied Econometrics with R, Springer. # - Braun, J. & Murdoch, D.(2007), A first course in statistical programming with R # - Homepagelinks: http://www.uni-regensburg.de/wirtschaftswissenschaften/vwl-tschernig/lehre/links/index.html # - Programmieren mit R Links: http://www.uni-regensburg.de/wirtschaftswissenschaften/vwl-tschernig/lehre/master/programmieren-mit-r/index.html ### Klausur: 60 Minuten ### 26.10.2018, RWH1, 10:15-11:15 Uhr. # # - Schriftlich # - ca. 2-4 Wochen nach dem zweiten Block # - im Computer-Pool # - Anmeldung per Email (vgl. Kursseite "Aktuelles") # ### Lernziele: "Programmieren in der Ökonometrie" # # - Grundlagenverständnis für R # - "Hilfe zur Selbsthilfe" # - Umgang mit und Auswertung von Daten (Deskriptive Statistiken, Visualisierung) # - Einfache Modellschätzungen # - Programmiergrundkenntnisse # - Monte-Carlo-Simulationen und Bootstrap (Basis für MCMC) # - Optimierung ################################################# ### Kursüberblick ################################################# # - A. Introduction # Installation # Was ist R? Wie funktioniert R? # Editoren # # - B. Objects # Funktionen # Atomare Datentypen # Vektoren und Matrizen # Arrays # Listen und Datensätze # Datensätze einlesen # Datensätze bearbeiten und speichern # # - C. Graphics # Der "plot"-Befehl # Grafiken bearbeiten # Grafik-Ausgabemöglichkeiten # # - D. Data Analysis # Deskriptive Datenanalyse # Zufallsvariablen und deren Verteilung # Einfache Hypothesentests # # - E. Flow Control # Bedingte Ausführung (if) # Schleifen (for, while) # apply-Befehle # Paket "parallel" # # - F. Regression # Schätzgleichungen # Diagnose und Testen # Prognose # FGLS bei Heteroskedastie # Dynamische Regression # # - G. Monte Carlo # Simulation zur Evaluation von Schätzeigenschaften # Simulationsbasierte Tests (Monte Carlo Test) # Modellselektion # # - H. Optimization # Numerische Optimierung # # - I. Bootstrap # Basic # Bootstrap-Konfidenzintervalle # # - J. Effizienz # Dateimanagement # Ãœbersichtlicher Code # Zeitoptimierter Code # (S3)-Klassen # # - Zahlreiche Tutorials zum Durchklicken ################################################# ### Allgemeines zu R ################################################# ### DIE Homepage # http://www.r-project.org/ # ### Installation/Start von R (allgemein) # # 1. Auf der Homepage auf "CRAN" klicken, dann Server aussuchen, # z. B. Göttingen http://ftp5.gwdg.de/pub/misc/cran/ # 2. Auf "Download R for Windows" klicken, danach auf "base". # 3. Auf "Download R 3.*.* for Windows" klicken und die Datei speichen und ausführen. # 4. R starten. # #### Tiobe-Index http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html # The ratings are based on the number of skilled engineers world-wide, # courses and third party vendors. Popular search engines such as Google, # Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate # the ratings. Observe that the TIOBE index is not about the best programming # language or the language in which most lines of code have been written. ### Vor-/Nachteile von R, vgl. dazu Ligges (2008), S.5 ff. # # + Open Source Software unter GNU lizenziert, insofern keine "Black Box", d.h. JEDER Code ist einsehbar. # + Fast auf jedem OS (Operating System, Betriebssystem) lauffähig, auch als Serverversion # + Jeder darf selbst R Pakete schreiben (und veröffentlichen; vgl. rugarch package) # + Guter Support, gutbesuchte Foren und eine unterstützende Community # + Umsonst (vgl. Lizenzpreise für Matlab, Maple, EViews und Co.). # # - Kein vollständig graphisches Benutzerinterface bzw. Graphical User Interface (GUI) # (vgl. EViews, STATA, ...) # - Ohne Zusatzpakete keine interaktiven bzw. dynamischen Graphiken. # - Interpretersprache, d.h. bei unpassender Programmierung scheint R langsam zu arbeiten. # (es lässt sich aber C++ Code einbinden um dieses Problem zu beheben) ################################################# ### Benutzeroberfläche ################################################# ### R-Console (die Schnittstelle zum Compiler) # Befehl eingeben und jede Zeile mit Taste "return" bestätigen # Case Sensitivity # Beispiel: sin(0) Sin(0) # Tasten mit "Pfeil oben/unten" schalten durch die zuletzt eingegebenen Zeilen 2 - 1 # Abgeschlossene Befehlszeilen haben ein ">" am Anfang, wenn R auf weitere # Eingaben wartet, wird ein "+" am Anfang der Zeile ausgegeben. 2 - 1 # Wenn das "+" am Anfang der Zeile steht kann die Eingabe auch durch drücken # von "Esc" abgebrochen werden. # ### Plot-Fenster (device) # # Plots werden geöffnet, sobald ein plot-Befehl gegeben wurde # Beispiel: plot(sin, -pi, 2*pi) ### Skripte # # Auch mehrzeilige Befehle gezielt ausführbar (per Icon oder mit "Strg+R", vorher die auszuführenden Befehle selektieren). # Skripts haben zwar .R als Endung, sind aber normale .txt-Dateien, insbesondere also mit jedem Texteditor veränderbar. # Das Raute-Symbol oder auch Kommentarzeichen in R (#), das sich bis hierhin vor jeder Textzeile findet, sorgt dafür, # dass diese Zeilen nicht als Programmbefehle interpretiert und insofern nicht ausgeführt, sondern nur angezeigt werden. # Empfehlung: Skripte in externem Editor öffnen/bearbeiten und von dort an R senden (siehe unten für verschiedene Möglichkeiten). ################################################# ### Auswahl von R-Editoren ################################################# ### R-Studio (F-Laufwerk / R / RStudio / program / bin / rstudio.exe) # # Vorteile: # + Kommt einer GUI am nächsten # + Plot, Ãœbersicht über Objekte und Pakete in 1 Fenster # + integriertes R-Terminal # + Extra-Klick-Funktionen wie Daten laden # # Nachteile: # - alle 4 Einzelfenster evtl klein, kein Vollbild möglich # - kaum Editor-Funktionalität (Makros, etc.) # - relativ starr und unflexibel, nur für R # Installation # 1. Download und Installation von "RStudio IDE" (Desktop Version) http://rstudio.org/ # Fazit: Besser für Anfänger # ### Notepad++ in Verbindung mit npptor (Notepad++ to R) # # Vorteile: # + Flexibler Editor für alle möglichen Programmiersprachen, txt-Files etc. (ein Editor für mehrere Programmiersprachen?) # + Schnell und ressourcensparend # + Extrem funktional als Editor: Add-Ons, Makros, Hotkeys etc. # + Einrückungen, Hervorhebungen, Aus- und Einkommentierungen komfortabel # + Gutes Programm zum Ändern von großen Textdaten da regular Expressions (später ein kleiner Exkurs) # # Nachteile: # - Man muss Editor- und R-Fenster manuell zurechtrücken (z.B. nebeneinander) # - Anfangs unübersichtlich, da zu viele Möglichkeiten # Installation # 1. Installiere Npp http://notepad-plus-plus.org/ # 2. Installiere NppToR http://sourceforge.net/projects/npptor/ # 3. Hotkeys ändern: # - Rechtsklick auf blaues R-Symbol im Tray-Menu / Taskleiste # - Settings # - "Pass Line" z.B. mit Wert "^R" (=Strg+R) # # Einige Hotkeys # Tab Einrücken (ganze Markierung) # Shift+Tab Wieder zurück # Strg+K Auskommentieren # Strg+Shift+K Wieder Einkommentieren # Strg+D Verdopplung der Zeile # Fazit: Besser für erfahrenere Anwender bzw. mit Erfahrungen in anderen PRogrammiersprachen # ### Tinn-R # # Vorteile (zu Npp): # arrangiert automatisch Editor- und R-Fenster # Etliche Interaktionsmöglichkeiten mit R (alles Löschen, Plots schließen etc.) # # Nachteile (zu Npp): # lästiges Ändern der R-Einstellungen erforderlich bei jedem R-Update # langsamerer Programmstart # keine Klappbaren Schleifen und Funktionen # 1. Download und Installation von "RStudio IDE" (Desktop Version) http://sourceforge.net/projects/tinn-r/ # ### Weitere # Emacs: ess.r-project.org/ # WinEdt: cran.r-project.org/web/packages/RWinEdt/ # ... ### Aufgabe A1 # Machen Sie sich mit R und einem der beiden Editoren (Notepad++ ODER RStudio) vertraut: # Installieren Sie beides und lesen Sie sich die Menüeinträge, # Einstellungen, Tastenkombinationen etc. durch. # ################################################# ### Erste Schritte für die Arbeit mit R ################################################# ### Arbeitsverzeichnis, vgl. Kleiber, Zeileis (2008), S.12 # # getwd() # Was ist das Arbeitsverzeichnis? setwd("c:/") # Arbeitsverzeichnis ändern, z.B.: setwd("g:/PMR"); # Alternative: RStudio, 4. Fenster / Files / Zahnrad ### Aufgabe A2 a) # Erstellen Sie auf ihrem G-Laufwerk einen Ordner "PMR" für "Programmieren mit R", # z.B. "G:\PMR" in dem Sie die Skripte (Ordnername "codes"), Daten (Ordnername "data"), # Images (Ordnername "RData") usw. speichern. Setzen Sie Ihr Arbeitsverzeichnis # überliegenden Ornder, in diesem Fall "G:\PMR" mit Hilfe des setwd() Befehls. # Probieren Sie Schreibweisen ohne "" aus, mit \ statt / und lesen # Sie sich die Fehlermeldungen durch. # Alternativ können Sie die .zip-Datei "PMR.zip" von der Homepage laden und auf # dem G-Laufwerk entpacken. ### Aufgabe A2 b) # Nutzen Sie den Befehl "list.files()" um sich die im Working Directory befindlichen # Dateien anzusehen. # Probieren Sie auch relative Pfadangaben, das heißt "." und ".." mit "list.files()" ### Wichtig: # Wenn Sie das Arbeitsverzeichnis auf "G:/PMR" setzen, können Sie mit Hilfe # von der Unterordnerangabe auch dort Datein speichern. ### Hilfe # # Hilfe zu einer bestimmten BEKANNTEN Funktion (hier: zu "getwd()"). ?getwd getwd() help(getwd) # Hilfe zu einem UNBEKANNTEM Thema (hier: zu "working directory"). # Ausgabe als: "Paketname::Funktionsname" (base::.... steht dbaei für die mitgelieferte Basis Version) ??"working directory" help.search("working directory") # Alternative dazu apropos("mea") # # Suche auf den R-Seiten im WWW RSiteSearch("stepAIC", restrict="functions") # # Hilfe ist auch über das entsprechende Menü erhältlich. # Nützliche Dokumentationen finden sich unter "Hilfe", "Handbücher (PDF)". # # Google! Suche etwa "R help" und weitere Suchbegriffe. Nur "R" leider schwierig ### R als Taschenrechner # 1+3 123 * 789 # 1+5*2 # Punkt vor Strich wird beachtet. 2^3*2 # 0/0 # aber beachte: 2/0; hier NaN: Not a Number -2/0 -Inf + 2 # # Klammern (1+5)*2 1 + ( 5 * 2 ) ### Zuweisungen, um Objekte zu erstellen. # a = 1 + 3 # "=" als erste Möglichkeit für eine Zuweisung. # Definition einer Variablen: Variablenname ist der String "a" und hat den Wert 1+3=4 b <- 1 + 3 # "<-" als zweite Möglichkeit für eine Zuweisung (empfohlen bei manchen Autoren). # ### Anmerkung hierzu: # "<-" und "=" sind aber keine äquivalenten Ausdrücke, beispielsweise # funktioniert die in über "<-" die Zuweisung auch in Ausdrücken: # if(bool=(2==2)) print("test") # erzeug einen Fehler vs. if(bool<-(2==2)) print("test") # hier wird die Variable "bool" mit dem Wert TRUE belegt bool ### Objekte anzeigen a print(a) # dasselbe, nur explizit (c <- 33*5) # anzeigen bei der Zuweisung cat(a,c,"\n") # "\n" bedeutet neue Zeile, formatierte Ausgabe möglich (); # Beispiel einer Escapesequenz cat(a,"\n",c,"\n") cat(a,c) # später (https://de.wikipedia.org/wiki/Escape-Sequenz) ### Workspace - was ist das? # ls() # List objectS # ### Speichern und Laden von R-Objekten, die im Workspace gespeichert sind # getwd() setwd( dir = "G:/PMR") save.image( file = "RData/GanzerWorkspace.RData" ) # ALLE Objekte (im Workspace) speichern save(a, file = "RData/Nur_a.RData") # Bestimmte Objekte speichern load(file = "RData/Nur_a.RData") # Alle Objekte laden load(file = "RData/GanzerWorkspace.RData") ### Löschen von einzelnen und allen R-Objekten, die im Workspace (zwischen-)gespeichert sind # rm(a) # ReMove a # Test: ls() ?rm rm( list = ls()) # löscht die Variable list, die mit allen Objektnamen ls() belegt ist, # kurz, löscht alles load( file="RData/GanzerWorkspace.RData") ### R code aus Datei ausführen # ?source getwd() setwd(dir = "G:/PMR") source(file = "codes/ersteFunktion.R") ### Machen Sie sich den Unterschied zwischen Skriptdateien und Images klar! ### Aufgabe A3 # Erzeugen Sie eine Datei "test.r" in ihrem codes-Ordner. # bwinÓéÀÖ_bwinÓéÀÖ¹ÙÍø»¶Ó­Äú@e enthält ein Skript, das das Objekt x, belegt mit der Zahl 5, # und das Objekt y, belegt mit der Zahl 6, erzeugt. Bevor Sie diese # test.r-Datei mit dem source-Befehl aufrufen, löschen Sie Ihren # gesamten Workspace. # Sehen Sie sich danach den Workspace an, berechnen Sie das Produkt der # beiden Zahlen, löschen Sie danach das Objekt x, speichern # Sie den restlichen Workspace im ".RData"-Format im Ordner "RData". # # Hinweis: Allgemein ist es schlau, das Arbeitsverzeichnis nicht hin- und herzusetzen, # sondern nur den Source-Befehl auf den expliziten Code-Ordner anzuwenden. ################################################# ### Pakete bzw. Bibliotheken (Sammlung von Daten, Funktionen, ...) ################################################# ### Grund für modularen Aufbau # # R als erweiterbares System für alle Wissenschaftsbereiche, die datenanalytisch arbeiten. # ### Installation zusätzlicher Pakete (= Sammlung von Funktionen (und Daten)) # # Alternative 1: # 1. In R auf "Pakete" klicken, danach auf "Installiere Paket(e)...". # 2. CRAN mirror auswählen, z.B. "Germany (Goettingen)" und auf "OK" klicken. # 3. Paket auswählen und bestätigen. # # Alternative 2: # 1. Eingabe von install.packages("AER") # 2. CRAN mirror auswählen, z.B. "Germany (Goettingen)" und auf "OK" klicken. # # Alternative 3 (nur für RStudio Nutzer): # 1. Multifenster auf Packages klicken # 2. "Install Packages" klicken, suchen und auswählen. # ### Benutzen von Paketen # library(AER) # z.B. library("AER") data("CASchools") ?ivreg # # Will man wissen, welche Pakete bereits geladen sind, so funktioniert dies mit search() search() # Kurze Infos zu einem Paket library(help="AER") # # Entfernen eines Pakets aus dem aktuellen Workspace rm(CASchools) detach("package:AER") data("CASchools") search() ### Aufgabe A4 # Besuchen Sie die CRAN Seite und dort die Liste der verfügbaren Pakete. # Falls Sie eines interessiert, installieren Sie es und lesen Sie die Hilfe zu den # Funktionen. ### Aufgabe A5 # Testen Sie R als Taschenrechner: # a) sin(0) # b) Definieren Sie x als die Zahl 2 und berechnen sie die doppelte dritte Potenz von x. # a) # b)