Einführung in die formale Demographie — Übung Roland Rau mailto:[email protected] 12. Oktober 2015 Inhaltsverzeichnis 1 Überblick 2 2 Erste Schritte in R 2 2.1 Woher erhalte ich R? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.2 Ein sehr mächtiger Taschenrechner . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.3 Wertezuweisungen, Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.4 Aufrufe von eingebauten Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.5 Hilfe finden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.6 Editor für Skripte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.7 Dateneingabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1 1 Überblick WICHTIGER HINWEIS: EIGENER LAPTOP KANN VERWENDET WERDEN!!! In der Vorlesung hatten wir das Thema von diskretem und kontinuierlichem Wachstum bei Bevölkerungen (ohne Einbeziehung einer Altersstruktur) besprochen. Bevor wir auf die Berechnungen derselben eingehen werden, wollen wir zuerst erste Schritte in der Sprache R unternehmen. 2 Erste Schritte in R 2.1 Woher erhalte ich R? Bei R handelt es sich um “Free Software”. Sie erhalten eine aktuelle Version unter http://www. r-project.org → Download, Packages CRAN; dort wählen Sie einen “Mirror” in Ihrer Nähe aus und laden die entsprechende Version für Ihr Betriebssytem herunter (Windows, Mac, Linux). 2.2 Ein sehr mächtiger Taschenrechner Nach der erfolgreichen Installation von R, starten Sie R unter Windows einfach durch doppelklicken auf das entsprechende Icon. Das > Zeichen bedeutet, dass R auf Ihre Eingabe wartet. Sie können R wie einen Taschenrechner benutzen. Ihre Eingabe schliessen Sie mit der ENTER bzw. RETURN Taste ab. Das ist natürlich nur ein kleiner Aspekt, was R kann. Addition, Subtraktion, Multiplikation und Division sollte klar sein. 3+4 ## [1] 7 2 4 - 9 ## [1] -5 12*5 ## [1] 60 13 / 5 ## [1] 2.6 Terme wie 32 lassen sich in R folgendermassen schreiben. 3^2 ## [1] 9 Falls dies ein längerer Ausdruck wird, können Sie natürlich Klammern verwenden. 3^(1+1) ## [1] 9 Bitte beachten Sie, dass der Befehl log den Logarithmus zur Basis e berechnet. Zur Berechnung des Logarithmus zur Basis 10 oder Basis 2 beötigen Sie folgende Funktionen. exp(1) ## [1] 2.718282 exp(12) ## [1] 162754.8 log(10) ## [1] 2.302585 3 log(exp(1)) ## [1] 1 log10(10) ## [1] 1 log2(2) ## [1] 1 Zudem bietet Ihnen R auch noch weitere interessante Operatoren zur Berechnung des Modulus und zur “Integer-Division”: 13 / 5 ## [1] 2.6 13 %% 5 ## [1] 3 13 %/% 5 ## [1] 2 2.3 Wertezuweisungen, Assignments Ein wichtige Fähigkeit von (klassischen) Programmiersprachen ist es, Werte einer Variablen zuzuweisen. In R geschieht dies mittels <-. weltbev2010 <- 6916183000 weltbev2010 ## [1] 6916183000 4 weltbev1950 <- 2525779000 Nun können wir bereits relativ einfach berechnen, mit welcher Rate die Bevölkerung in diesen Jahren gewachsen ist r <- log(weltbev2010 / weltbev1950) / (2010 - 1950) r ## [1] 0.01678857 Wie groß wäre die Weltbevölkerung denn, wenn wir annehmen würden, sie würde mit derselben Rate weitere 40 Jahre wachsen (damit also das Jahr 2050)? t <- 40 Nt <- weltbev2010 * exp(r * t) Nt ## [1] 13536733990 ### in Millionen Nt / 1000000 ## [1] 13536.73 2.4 Aufrufe von eingebauten Funktionen Natürlich beherrscht R nicht nur diese Grundrechenarten. Zusätzlich ist eine Vielzahl an Funktionen in R enthalten. Der übliche Weg, diese Funktionen aufzurufen läuft über funktionsname(argument1, argument2, ...) Zum Beispiel können wir folgendermassen n Zufallszahlen zwischen 0 und 1 erzeugen. 5 runif(n=5) ## [1] 0.4479730 0.3315388 0.2604112 0.8604990 0.8237957 runif(5) ## [1] 0.8555177 0.7575464 0.4289651 0.5210233 0.8109990 Mit weiteren Argumenten können wir den möglichen Wertebereich auch erweiteren oder einschränken. runif(n=10, min=0, max=20) ## [1] 13.2865021 5.7283952 18.5721577 2.5562863 ## [7] 8.6317165 12.5395678 3.3863449 0.5494307 2.6548885 10.1817614 Bitte beachten Sie auch, dass es R erlaubt, mehrere Funktionen ineinander zu “verschachteln”: durchschnitt <- mean(runif(n=100, min=0, max=100)) durchschnitt ## [1] 47.19002 2.5 Hilfe finden Sie werden sich nun wohl fragen, woher man erfahren kann, wie die Funktionen heissen und wie die verschiedenen Argumente lauten. Wenn Sie wissen, wie die Funktion lautet, können Sie ganz einfach die Hilfeseite aufrufen, und zwar mittels help(mean) oder ganz einfach ?mean Wenn Sie dies nicht wissen, hilft häufig ein (dauert aber ein bisschen, bis Ergebnisse kommen): 6 help.search("mean") Oder aber Sie nutzen das WWW und “googeln” nach R-project how to calculate the mean 2.6 Editor für Skripte Bisher hatten wir ja alles einfach auf der Kommandoebene eingegeben. Wie Sie vielleicht von SPSS (oder anderen Statistikpaketen) wissen, gibt es normalerweise die Möglichkeit ein Skript zu schreiben (SPSS nennt dies fälschlicherweise “Syntax”). Wenn Sie langfristig mit R arbeiten wollen, kann ich Ihnen unter Windows R-Studio empfehlen (http://www.rstudio.com/). Der beste Editor für R ist jedoch, meiner Meinung nach, (GNU) Emacs (http://www.gnu.org/software/emacs/) mit dem Statistikmode ESS (http://ess.r-project. org/). Wenn Sie dies unter Windows nutzen möchten, lege ich Ihnen die Version von Vincent Goulet ans Herz, die sozusagen alles bereits beinhaltet, was Sie benötigen (http://vgoulet.act.ulaval. ca/en/emacs/). Für die Arbeiten hier im Kurs reicht es jedoch völlig aus, wenn wir den eingebauten Editor verwenden. Starten Sie ihn via DATEI -> NEUES SKRIPT. 2.7 Dateneingabe Bis jetzt hatten wir ja noch gar nicht darüber gesprochen, wie man Daten eingibt. Sie können Daten selbst eingeben: (c steht dabei für concatenate) sp <- c("Kyle", "Cartman", "Kenny", "Stan") taschengeld <- c(10,8,NA,10) sp ## [1] "Kyle" "Cartman" "Kenny" "Stan" taschengeld ## [1] 10 8 NA 10 7 NA steht dabei für missing values. Wenn Sie nun das durchschnittliche Taschengeld berechnen wollen, werden Sie etwas seltsames erkennen: mean(taschengeld) ## [1] NA Sobald ein missing value auftaucht, ist auch das Ergebnis ein missing value. Um dem Abhilfe zu schaffen, muss explizit darauf hingewiesen werden, dass NotAvailable-Werte ReMoven werden sollen. mean(taschengeld, na.rm=TRUE) ## [1] 9.333333 Sequenzen von Daten geben Sie über seq ein: no1 <- 1:10 no2 <- seq(from=1, to=10, by=1) no3 <- seq(from=1, to=10, by=4) no1 ## [1] 1 2 3 4 5 6 7 8 9 10 [1] 1 2 3 4 5 6 7 8 9 10 no2 ## no3 ## [1] 1 5 9 Wenn Sie Daten wiederholt eingeben, müssen Sie dies nicht manuell tun. Dafür gibt es rep: 8 rep(x=10, times=3) ## [1] 10 10 10 rep(no3, times=4) ## [1] 1 5 9 1 5 9 1 5 9 1 5 9 Dies waren eindimensionale Daten (Skalare und Vektoren). Auch wenn R bis zu 7(?) Dimensio- nen unterstützt, reichen uns zwei Dimensionen in diesem Kurs aus. R kennt zwei zweidimensionale Arten, wie man Daten darstellen kann: Matrizen und Dataframes. Dataframes sind vergleichbar mit den Datenfenstern, wie Sie sie vielleicht aus SPSS kennen. Zuerst einmal eine Matrix: meine.matrix <- matrix(1:12, byrow=FALSE, ncol=4) meine.matrix ## [,1] [,2] [,3] [,4] ## [1,] 1 4 7 10 ## [2,] 2 5 8 11 ## [3,] 3 6 9 12 Wie Sie vielleicht durch eckigen Klammern erkennen können, kann man einzelne Spalten oder Zeilen einer Matrix relativ einfach extrahieren und (evtl.) einer neuen Variablen zuordnen: meine.matrix[2,] ## [1] 2 5 8 11 meine.matrix[,2] ## [1] 4 5 6 extrahiert <- meine.matrix[,4] extrahiert ## [1] 10 11 12 9 Dataframes erstellt man mittels: mein.df <- data.frame(person=sp, einkommen=taschengeld) mein.df ## person einkommen ## 1 Kyle 10 ## 2 Cartman 8 ## 3 Kenny NA ## 4 Stan 10 Einzelne Variables können Sie durch das $ ansprechen. names(mein.df) ## [1] "person" "einkommen" mein.df$person ## [1] Kyle Cartman Kenny Stan ## Levels: Cartman Kenny Kyle Stan Dies ist nötig, da R mehr als nur einen Datensatz im Speicher haben kann. Der hauptsächliche Unterschied zwischen einer Matrix und einem Dataframe ist derjenige, dass in einem Dataframe unterschiedliche Datentypen gespeichert werden können (vereinfacht: Text und Zahlen), während in einer Matrix jeweils nur ein Datentyp verwendet werden kann (Text oder Zahlen). Die meisten Daten tippen Sie jedoch nicht selbst ab. Zum Laden bestehender Datensätze wird in aller Regel die Funktion read.table verwendet. Es empfiehlt sich jedoch, dass Sie zuerst mit der Funktion setwd() in das korrekte Verzeichnis auf Ihrem Computer gehen, in dem sich die entsprechende Datei befindet. Dazu kommen wir jedoch erst in der nächsten Veranstaltung. 10
© Copyright 2024 ExpyDoc