Einführung in die formale Demographie — Übung

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