0% fanden dieses Dokument nützlich (0 Abstimmungen)
34 Ansichten24 Seiten

RTutorial RC LMU

Hochgeladen von

carlapastore10
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
34 Ansichten24 Seiten

RTutorial RC LMU

Hochgeladen von

carlapastore10
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen

Eine Einführung in

LMU München
Seminar für Finanzökonometrie
Robert Czudaj
2
Inhaltsverzeichnis
1 Grundlagen 4
1.1 Was ist R, warum nutzen wir R? . . . . . . . . . . . . . . . . . . . . . 4
1.2 Installation von R und RStudio . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Die Benutzeroberfläche . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Die Dokumentation: wie war das noch gleich? . . . . . . . . . . . . . . 6
1.5 Installation und Nutzung neuer Pakete . . . . . . . . . . . . . . . . . . 6

2 Erste Schritte 7
2.1 Erstellen von Objekten . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.1 Datentypen und einfache Datenstrukturen . . . . . . . . . . . . 7
2.2 Rechnen mit R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 Einfache Arithmetik . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.2 Rechnen mit Vektoren und Matrizen . . . . . . . . . . . . . . . 11
2.2.3 Summen, Mittelwerte und andere Operationen . . . . . . . . . . 12
2.3 Wahrscheinlichkeitsverteilungen . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Lineare Regression in R . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5 Grafische Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.1 Der Boxplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.2 Das Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.3 Das Kuchendiagramm . . . . . . . . . . . . . . . . . . . . . . . 19
2.5.4 Das Balkendiagramm . . . . . . . . . . . . . . . . . . . . . . . 20
2.5.5 Scatterplots und Linienplots . . . . . . . . . . . . . . . . . . . . 20
2.6 Einlesen von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

Funktionsübersicht 24

3
1 Grundlagen
1.1 Was ist R, warum nutzen wir R?
R ist eine Interpretersprache für statistische Anwendungen. Ihre Nutzergemeinde steigt
stetig an. Jeder kann zum R-Projekt beitragen, indem er eigene Pakete entwickelt und
den anderen Nutzern zur Verfügung stellt. Durch diesen Open Source-Charakter bietet R
eine Vielzahl von analytischen Möglichkeiten für seine Anwender. Beispielsweise gibt es
Pakete, um das Rechnen mit Zeitreihen zu vereinfachen oder aber um mit den API’s von
Facebook oder Twitter zu kommunizieren und so Social-Media-Daten abzufragen. Aber
auch die großen “Datenkraken” ihrerseits haben R als nützliches Werkzeug entdeckt.
Gerade die Analyse von ”Big Data”(rechen- und speicherintensiv) ist eine Stärke von R.

1.2 Installation von R und RStudio


R selbst verfügt nicht über eine sonderlich ansprechende Nutzeroberfläche. Um R effektiv
nutzen zu können, empfiehlt sich das Arbeiten mit einem Editor. Wir werden RStudio
als Arbeitsoberfläche nutzen. Laden Sie zunächst beide Programme herunter:

1. Die eigentliche Programmierumgebung R:


http://cran.r-project.org/
Auf dieser Seite finden Sie die aktuelle Version von R für alle gängigen Betriebssys-
teme.

Abbildung 1: Der Downloadbereich der R-Project Homepage

4
2. Die Editor-Software RStudio:
http://www.rstudio.com/products/rstudio/download/
Auch hier laden Sie die entsprechende Datei herunter.

Abbildung 2: Der Downloadbereich der RStudio Homepage

Als erstes wird R installiert. Der Installationspfad kann beliebig gewählt werden. Shortcuts
sind nicht nötig. Nachdem die Installation von R erfolgreich war, installieren Sie RStudio.
Hier ist ein Shortcut auf dem Desktop oder im Startmenü sinnvoll.

1.3 Die Benutzeroberfläche

Abbildung 3: Die Benutzeroberfläche von RStudio

5
Starten Sie RStudio. Die Benutzeroberfläche ist in vier Bereiche eingeteilt:

1. Der Editor
Erfüllt die gleichen Funktionen wie das Programm Editor unter Windows.

2. Protokoll-Fenster
Im Reiter Environment findet man eine Übersicht aller gespeicherten Objekte
(Variablen und Funktionen). Unter History wird der Verlauf des bisher ausgeführten
Codes angezeigt (quasi wie die Chronik im Browser). Presentation ist für unsere
Zwecke unwichtig. Es sei jedoch erwähnt, dass es möglich ist, Slides mit Codes
und Plots direkt in RStudio zu erstellen und anzuzeigen (R Markdown).

3. Grafische Ausgabe, Dokumentation und Packages


Der Reiter Plots dient der grafischen Ausgabe. Benötigt man Hilfe zu einer be-
stimmten Funktion, kann man unter Help im Suchfeld oben rechts nach ihr suchen.
Eine Übersicht aller installierten Pakete findet sich unter dem Reiter Packages.

4. Die Konsole
Wollen wir unseren im Editor geschriebenen Code ausführen, senden wir ihn über
den Button Source (oben rechts im Editorfenster) zur Konsole. Alternativ kann
man seinen Code auch direkt in der Konsole eingeben.

1.4 Die Dokumentation: wie war das noch gleich?


R verfügt über eine sehr gut strukturierte Dokumentation, mit der sich die Mehrzahl der
Probleme während des Arbeitens lösen lässt.
Benötigen wir Hilfe zu einer bestimmten Funktion, können wir die dazugehörige Seite
mittels help(Funktionsname) aufrufen. Dabei folgen alle Funktionsbeschreibungen
der Dokumentation demselben Aufbau. Im Abschnitt Description erfahren wir, was die
jeweilige Funktion eigentlich macht. Unter Usage sehen wir den typischen Aufbau der
Funktion und unter Arguments die detailierte Beschreibung der Funktionsargumente. Am
Ende jeder Seite findet man simple Anwendungsbeispiele. Eine Kurzschreibweise ist durch
?NameDerFunktion gegeben.

help(rnorm) # Hilfe zu der Funktion rnorm()


?help # Hilfe zu der Funktion help()
??randomnumbers # Hilfe zum Stichwort "randomnumbers"

Die Dokumentation kann auch nach einzelnen Stichwörtern durchsucht werden. Dazu
verwendet man einfach zwei Fragezeichen anstelle von einem.

1.5 Installation und Nutzung neuer Pakete


Neue Pakete können innerhalb von RStudio über den den Reiter Packages oder alternativ
über das Menü Tools Install Packages installiert werden. Die Standardquelle für neue
Pakete ist dabei die ”CRAN”Bibliothek. Fortgeschrittene Nutzer können Pakete auch
direkt in der Konsole installieren. Dazu nutzt man den Befehl install.packages().

6
Möchte man ein neu installiertes Paket verwenden, so muss man es in der aktuellen R-
Session noch importieren. Dies geschieht mit Hilfe der Funktion library(paketname).
Beispielsweise beinhaltet das Paket ”MASS” unter anderem einen Datensatz namens
geyser und die Funktion truehist(), mit deren Hilfe das Plotten von Histogrammen
verbessert werden kann.

# Methoden und Daten des Pakets MASS laden/importieren!


library(MASS)

# Variablen des Datensatzes importieren


attach(geyser)
# Histogramm der durchschnittlichen Wartezeit zwischen
# zwei Ausbrüchen des Geysirs plotten.
truehist(waiting, main="Duration between two eruptions")

Duration between two eruptions


0.030
0.025
0.020
0.015
0.010
0.005
0.000

40 50 60 70 80 90 100 110

waiting

2 Erste Schritte
Erstellen Sie ein neues R-Skript. Dazu klicken Sie im Menü auf File New File R Script
oder nutzen den Kurzbefehl Strg + + N . Im Editor-Fenster öffnet sich daraufhin eine
neue Datei.

2.1 Erstellen von Objekten


2.1.1 Datentypen und einfache Datenstrukturen
In R gibt es eine Reihe von Datenstrukturen. Das simpelste Objekt ist dabei ein Vektor
der Länge 1 bzw. ein Skalar. Nehmen wir an, wir möchten der Variable x den Wert 10
zuweisen. Dies ist mit folgendem Code möglich:

7
x <- 10 # Erstelle Objekt x

Wir schreiben also zunächst den gewünschten Namen des Objekts und weisen diesem
mit Hilfe von <- einen Wert zu. Führen wir unser Skript über den Button Source aus,
wird der Code in der Konsole verarbeitet und im Reiter Environment erscheint unsere
Variable. Wie Sie vielleicht bereits vermuten, werden Kommentare in R durch eine Raute
gekennzeichnet. Alles, was in einer Zeile einer Raute folgt, wird von R ignoriert. Möchten
wir den Inhalt eines Objekts ausgeben, reicht es, dessen Namen zu schreiben:

## [1] 10

Im obigen Beispiel-Code und auch allen folgenden wird eine Konsolenausgabe durch
## gekennzeichnet. Natürlich kann man auch Objekte mit nicht-numerischen Werten
definieren:

name <- "Maximilian"


name

## [1] "Maximilian"

Wie Sie sehen, erfolgt die Zuweisung hier mit Hilfe von Anführungszeichen. Damit
haben Sie bereits zwei Datentypen kennengelernt. Insgesamt kann man drei grundlegende
Datentypen abgrenzen:

1. numeric
Diese Klasse umfasst alle numerischen Werte inklusive Inf, -Inf und NaN (”Not a
Number”). Das Objekt x gehört dieser Klasse an.

2. character
Zeichenketten wie zum Beispiel der Wert des Objektes name.

3. logical (Boolsche Werte)


Dieser Typ umfasst nur zwei Ausprägungen: TRUE und FALSE.

8
Vektoren mit mehr als nur einem Element können mit Hilfe der Funktion c() erstellt
werden. Schauen Sie sich deren Funktionweise in der Dokumentation mit dem Befehl
help(c) an. Dort erfahren Sie, dass c() die übergebenen Argumente zusammenfügt
und (in der Regel) einen Vektor dieser zurückgibt.
Nachdem wir uns schlauer gemacht haben, erstellen wir einen (3 × 1) Vektor:

a <- c(1,2,3) # Erstelle Vektor


a # Ausgabe

## [1] 1 2 3

Eine andere Möglichkeit, diesen Vektor zu erstellen, bietet die Funktion seq(). Deren
Argumente from, to und by stellen dabei den Start-, Endwert und das Inkrement einer
Sequenz dar. Eine Kurzschreibweise hierfür ist 1:3.

b <- seq(from=1,to=3,by=1) # Erstelle Vektor


b

## [1] 1 2 3

b <- 1:3 # Kurzschreibweise


b

## [1] 1 2 3

Möchten wir nur auf ein oder mehrere bestimmte Elemente eines Vektors zugreifen,
indizieren wir diesen mit Hilfe folgender Syntax:

b[2] # Ausgabe des zweiten Elements

## [1] 2

a[1:2] # Ausgabe der ersten zwei Elemente

## [1] 1 2

Während c() seine Argumente aneinanderreiht, fügen die Funktionen rbind() und
cbind() ihre Argumente zeilen- bzw. spaltenweise zusammen.

a <- c(1,2,3) # Erstelle Vektoren


b <- c(4,5,6)
C <- rbind(a, b) # zeilenweise zusammenfügen
C

## [,1] [,2] [,3]


## a 1 2 3
## b 4 5 6

9
D <- cbind(a, b) # spaltenweise zusammenfügen
D

## a b
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6

Soeben haben wir zwei Matrizen erstellt. Objekt C ist eine (2 × 3) Matrix, während D die
Dimension (3 × 2) hat. An dieser Stelle möchte ich erwähnen, dass R “case-sensitive”
ist. Es macht also einen Unterschied, ob man Funktions- oder Objektnamen mit kleinen
oder großen Buchstaben aufruft.
Auch bei Matrizen erfolgt der Zugriff auf einzelne Elemente mit Hilfe von eckigen
Klammern. Dabei werden die Indizes der Zeilen und Spalten durch ein Komma getrennt.

C[2,3] # Element in Zeile 2, Spalte 3

## b
## 6

C[1,] # Erste Zeile

## [1] 1 2 3

C[,2] # Zweite Spalte

## a b
## 2 5

C[2,2:3] # Zweite Zeile, Spalten 2 bis 3

## [1] 5 6

Möchte man eine Matrix direkt definieren, nutzt man den Befehl matrix(). Die Anzahl
der Zeilen (Spalten) wird mit Hilfe des Arguments nrow (ncol) festgelegt.

M1 <- matrix(1:6,nrow=2)
M1

## [,1] [,2] [,3]


## [1,] 1 3 5
## [2,] 2 4 6

M2 <- matrix(c("A","B","C","D","E","F"), ncol=2)

10
M2

## [,1] [,2]
## [1,] "A" "D"
## [2,] "B" "E"
## [3,] "C" "F"

2.2 Rechnen mit R


2.2.1 Einfache Arithmetik
R ist prinzipiell nichts anderes als ein programmierbarer Taschenrechner. Addition, Sub-
traktion und alle anderen Grundrechenarten sind dementsprechend einfach und intuitiv
ausführbar.

a <- 2
b <- 3
a + b # Addition
a - b # Subtraktion
a * b # Multiplikation
a / b # Division
b %% a # Division mit Rest (Modulo)
2^3 # Potenzierung
sqrt(2) # Quadratwurzel von 2
log(2) # Natuerlicher Logarithmus von 2
exp(2) # Wert der Exponentialfunktion an der Stelle 2

2.2.2 Rechnen mit Vektoren und Matrizen


Die Multiplikation von Vektoren und Matrizen erfordert eine etwas andere Syntax. Dazu
nutzt man den %*%-Operator.

# Multiplikation von Vektoren und Matrizen


v <- 1:2
M <- matrix(4:7,nrow=2)

v %*% v

## [,1]
## [1,] 5

v %*% M

## [,1] [,2]
## [1,] 14 20

11
M %*% v

## [,1]
## [1,] 16
## [2,] 19

Für Operationen wie das Transponieren oder das Berechnen der Determinante stehen
wiederum entsprechende Funktionen zur Verfügung.

# Transponieren
t(M)

# Determinante
det(M)

# Inverse einer Matrix


solve(M)

2.2.3 Summen, Mittelwerte und andere Operationen


Möchte man die Summe aller Elemente eines Objektes berechnen, hilft die Funktion sum()
weiter. Die Zeilen- beziehungsweise Spaltensummen einer Matrix lassen sich entweder
durch Anwendung von sum() auf die entsprechend indizierte Matrix berechnen, oder
aber man nutzt die Funktionen rowSums() und colSums().

a <- 1:3
M <- matrix(1:6, ncol=2)

sum(a) # Summe der Elemente des Vektors a.

## [1] 6

sum(M) # Summe der Elemente der Matrix M.

## [1] 21

colSums(M) # Die Spaltensummen von M...

## [1] 6 15

sum(M[,1]) # sind alternativ auch mit sum berechenbar.

## [1] 6

sum(M[,2])

## [1] 15

12
Um den Mittelwert der Elemente des Vektors a zu ermitteln, könnte man natürlich die
soeben errechnete Summe einfach durch die Anzahl der Elemente des Vektors teilen.
Diese kann man mit length() ausgeben lassen. Die Funktion mean() nimmt einem
diesen Arbeitsschritt ab.

length(a) # Anzahl an Elementen in a

## [1] 3

sum(a)/length(a) # Mittelwert "per Hand"...

## [1] 2

mean(a) # oder aber mit der entsprechenden Funktion.

## [1] 2

Auch für andere grundlegende statistische Kennzahlen gibt es entsprechende Funktionen.


Nachstehend finden Sie eine Übersicht der prominentesten Vertreter.

var(a) # Berechnung der Varianz,

## [1] 1

sd(a) # der Standardabweichung,

## [1] 1

b <- c(4,-5,6)
cov(a,b) # der Kovarianz,

## [1] 1

cor(a,b) # oder der Korrelation.

## [1] 0.1707

Nebenbei bemerkt lohnt es sich, ab und an einen Blick in die Dokumentation oder eine
Suchmaschine zu werfen, um zu prüfen, ob es nicht bereits implementierte Funktionen
(und somit Pakete) gibt, die vor unnötig viel Aufwand schützen (bei sinkendem Lerneffekt
versteht sich).

2.3 Wahrscheinlichkeitsverteilungen
Als statistische Software beherrscht R natürlich auch den Umgang mit Wahrscheinlich-
keitsverteilungen. Dazu zählen vor allem das Ziehen von Zufallszahlen oder aber das
Arbeiten mit den jeweiligen Dichte- und Verteilungsfunktionen. Als Beispiel schauen wir
uns an, wie die Normalverteilung in R implementiert ist. Rufen Sie dazu die Hilfe-Seite

13
?Normal auf.
Wie Sie im Abschnitt Usage erkennen können, stehen Ihnen vier verschiedene Funktionen
zur Verfügung, deren Namen sehr ähnlich sind:

1. rnorm()
Generierung von normalverteilten Zufallszahlen. Das r steht hier für ”random”.

2. dnorm()
Gibt die Dichte f (x) (d=”density”) einer Normalverteilung an einem oder mehreren
bestimmten Punkten wieder.

3. pnorm()
Gibt den Wert der Verteilungsfunktion F (x) einer Normalverteilung wieder. Hier
steht das p für ”probability”.

4. qnorm()
Stellt die Quantilsfunktion F −1 (x) (q = ”quantile”) einer Normalverteilung dar.

Diese Namensgebung ist bei allen Wahrscheinlichkeitsverteilungen identisch. So lautet


die Dichtefunktion der Gleichverteilung beispielsweise dunif() und die Quantilsfunktion
der Exponentialverteilung qexp(). Eine Übersicht aller bereits installierten Verteilungen
finden Sie in der Dokumentation (?Distributions).

Nehmen wir an, wir möchten eine zufällige Zahl aus einer Normalverteilung mit Erwartungs-
wert 10 und Varianz 9 ziehen. Dies geschieht mit dem Befehl rnorm(1,mean=10,sd=3).
Das erste Argument steht für die Anzahl der zu ziehenden Zahlen, mean für den Er-
wartungswert und sd für die Standardabweichung (nicht die Varianz!) der Normalver-
teilung. Übergeben wir nur das erste Argument, setzt R den Erwartungswert und die
Standardabweichung automatisch auf 0 beziehungsweise 1, was dem Ziehen aus einer
Standardnormalvertielung entspricht.

# Generiere normalverteilte Zufallszahl


# mit Erwartungswert 10 und Varianz 9.
rnorm(1,mean=10,sd=3)

## [1] 7.666

# Ziehe eine Zahl aus der Standardnormalverteilung.


rnorm(1)

## [1] 0.5059

# Ziehe 5 Zufallszahlen
rnorm(5)

## [1] -0.9708 1.4706 -0.9236 0.9508 0.5344

14
Je nachdem aus welcher Verteilung man ziehen möchte, ändern sich die Funktionsar-
gumente. Das Ziehen einer gleichverteilten Zufallszahl auf dem Intervall von 5 bis 10
beispielsweise ist mit der Funktion runif(1,min=5,max=10) möglich. Die Argumente
min und max sind dabei selbsterklärend.

# Ziehe eine Zufallszahl auf dem gleichverteilten


# Intervall von 5 bis 10.
runif(1,min=5,max=10)

## [1] 8.822

# Ziehe 3 Zufallszahlen auf dem Intervall von -1 bis 1.


runif(3,min=-1,max=1)

## [1] 0.5679 -0.2841 0.3334

Die anderen drei Funktionen arbeiten ähnlich. Auch ihnen müssen die Parameter der
jeweiligen Verteilung übergeben werden. Sie unterscheiden sich hauptsächlich in ihrem
ersten Argument.

# Dichte der Normalverteilung N(10,1) an der Stelle 10?


dnorm(10,mean=10,sd=1)

## [1] 0.3989

# Wie groß ist die Wahrscheinlichkeit bei einer


# N(0,1)-verteilten ZV Werte <= 1.644854 zu erhalten?
pnorm(1.644854)

## [1] 0.95

# Was ist das 95% Quantil der Standardnormalverteilung?


qnorm(0.95)

## [1] 1.645

2.4 Lineare Regression in R


Neben der direkten Berechnung des KQ-Schätzers über die entsprechende Formel, bietet
die Funktion lm() eine weitere Möglichkeit. Wir übergeben ihr unsere Formel in der
Form abhängige Variable ∼ erklärende Variable(n). Dabei ist zu beachten, dass
beide Objekte die gleiche Anzahl an Beobachtungen haben müssen.

attach(cars) # Beispieldatensatz "cars" laden


model <- lm(dist~speed) # KQ-Schätzung vornehmen

15
Durch die Funktion attach() importieren wir (vereinfacht gesagt) die 50 Beobachtungen
umfassenden Vektoren dist und speed des Beispieldatensatzes “cars”, um direkt über
ihren Namen Zugriff auf sie zu bekommen.
Der Rückgabewert von lm() ist ein Objekt der Klasse ”lm”, welches nichts anderes ist
als eine Liste mehrerer Komponenten der vorgenommenen Schätzung. Diese Liste können
Sie sich mit der Funktion names() ausgeben lassen.

# Zeige Elemente des Objekts 'model'


names(model)

## coefficients
## residuals
## effects
## rank
## fitted.values
## assign
## qr
## df.residual
## xlevels
## call
## terms
## model

Zugriff auf die einzelnen Komponenten einer Liste erhält man mittels des $ - Operators.

# Ausgabe der Koeffizienten des Modells


model$coefficients

## (Intercept) speed
## -17.579 3.932

# Ausgabe der ersten Residuen der Schätzung


head(model$residuals)

## 1 2 3 4 5 6
## 3.849 11.849 -5.948 12.052 2.120 -7.813

16
Einen Überblick über die Schätzung bekommen wir durch die Funktion summary(). Diese
kann auf beinahe jedes beliebige Objekt angewendet werden und liefert eine Übersicht der
deskriptiven Kennzahlen oder aber, wie hier, eine spezielle Aufbereitung der Schätzung.

summary(model)

##
## Call:
## lm(formula = dist ~ speed)
##
## Residuals:
## Min 1Q Median 3Q Max
## -29.07 -9.53 -2.27 9.21 43.20
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -17.579 6.758 -2.60 0.012 *
## speed 3.932 0.416 9.46 1.5e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15.4 on 48 degrees of freedom
## Multiple R-squared: 0.651,Adjusted R-squared: 0.644
## F-statistic: 89.6 on 1 and 48 DF, p-value: 1.49e-12

17
2.5 Grafische Darstellung
Die Plotmöglichkeiten in R sind mittlerweile so vielfältig, dass nahezu jede gewünschte
Grafik, jedes Diagramm oder aber geografisches Kartenmaterial zur Visualisierung genutzt
werden kann. Im Rahmen dieser Einführung beschäftigen wir uns jedoch nur mit den
Basis-Funktionen.
Gerade in diesem Kapitel ist es wichtig, mit all den grafischen Funktionen und
Parametern (Dokumentation!) herumzuspielen. So lernt man schnell eine Viel-
zahl an Möglichkeiten kennen.
Am besten eignet sich dafür einer der internen Datensätze, wie zum Beispiel “cars” oder
“faithful”. Eine Übersicht aller Datensätze finden Sie übrigens mit library(help =
datasets).
Wir werden ein paar grundlegende Diagramm-Typen anhand des zuvor genutzten Daten-
satzes cars illustrieren. Laden Sie diesen erneut mittels attach(cars).

2.5.1 Der Boxplot

boxplot(dist, main="My First Plot")

My First Plot
120
100
80
60
40
20
0

2.5.2 Das Histogram


Hier ist das Argument freq sehr wichtig. Setzt man dieses gleich TRUE, so wird die
absolute Anzahl an Beobachtungen auf der y-Achse abgetragen; bei FALSE die relativen
Häufigkeiten.

hist(dist, main="A histogram!",freq=TRUE)

18
A histogram!

15
Frequency

10
5
0

0 20 40 60 80 100 120

dist

2.5.3 Das Kuchendiagramm

# Anzahl an Geschwindigkeiten unter 10mph


# length() gibt uns die Länge eines Vektors.
num1 <- length(speed[speed<10])
# Anzahl an Geschwindigkeiten über 10mph
num2 <- 50-num1 # 50 Beobachtungen insgesamt
pie(c(num1,num2),label=c("Below 10mph","Above 10mph"),
+ main="Pie Chart of speeds")

Pie Chart

Below 10mph

Above 10mph

19
2.5.4 Das Balkendiagramm

barplot(dist,main="Distances visualized with a barplot!",col="red",


xlab="Observations")

Distances visualized with a barplot!

120
100
80
60
40
20
0

Observations

2.5.5 Scatterplots und Linienplots


Die wichtigste grafische Funktion stellt vielleicht plot() dar. Mit ihr kann ein karthesisches
Koordinatensystem geplottet werden, in welchem beispielsweise Punktewolken oder aber
Liniendiagramme dargestellt werden können.

attach(cars)
# Punktewolke der Merkmale dist und speed mit
# blauen Punkten und Achsenbeschriftungen.
plot(y=dist,x=speed,col="blue", xlab="Speed",ylab="Distances")

20
120
100
80
Distances

60
40
20
0

5 10 15 20 25

Speed

Einen Linienchart schauen wir uns mit Hilfe von 50 Realisierungen einer standardnormal-
verteilten Zufallsvariable an. In der Regel macht ein solcher Plot bei Merkmalen Sinn, die
über die Zeit beobachtet wurden (Stichwort Zeitreihen, Bsp.: Aktienkurs).

randNorm <- rnorm(n=50)


plot(randNorm,col="red",type="l") # 'l' steht für 'line'
2
1
randNorm

0
−1
−2
−3

0 10 20 30 40 50

Index

Alle Plots können nachträglich noch durch weitere Komponenten ergänzt werden. Bei-
spielsweise könnte in eine Punktewolke noch eine Linie gezeichnet werden. Dies ist mit
den Funktionen abline() oder lines() möglich. Auch einzelne Punkte können mit
points() besonders markiert oder hinzugefügt werden. Als Beispiel nehmen wir den
soeben erstellten Scatterplot.

21
attach(cars)
# Punktewolke der Merkmale dist und speed
# mit zusätzlich eingezeichneter Regressionsgerade
model <- lm(dist~speed)
plot(y=dist,x=speed, xlab="Speed",ylab="Distances")
abline(model$coefficients,col="blue")
# Beobachtung 49 scheint ein Ausreißer zu sein.
# Markieren wir diesen in rot und mit einem Dreieck.
points(x=speed[49],y=dist[49],col="red",pch=2,lwd=2)
# 'pch' := 'plotting character'; 2 = Dreieck
# 'lwd' := 'line width'; Stärke der Linie/des Punktes
120
100
80
Distances

60
40
20
0

5 10 15 20 25

Speed

22
2.6 Einlesen von Daten
R ist in der Lage eine Vielzahl an Dateien zu lesen. Dazu zählen beispielsweise Dateien
vom Typ *.csv (”comma seperated values”) oder Excel-Spreadsheets mit den Endungen
*.xls und *.xlsx. Aber auch Datensätze die mit anderen statistischen Programmen wie
Stata erstellt wurden (*.dta), können importiert werden. Wer daran interessiert ist, sollte
einen Blick auf die Pakete foreign und XLConnect werfen.
An dieser Stelle gehe ich kurz auf das Einlesen von CSV-Dateien ein. Dazu verwendet
man die Funktion read.csv().
CSV-Dateien sind nichts anderes als Textdateien die Daten enthalten. Einzelne Beobach-
tungen sind in der Regel durch Kommata (oder ein anderes Zeichen) getrennt. Um das
zu verdeutlichen, erstellen wir einen Beispiel-Datensatz. Öffnen Sie dazu den einfachen
Text-Editor (TextEdit unter Mac) und schreiben Sie folgende drei Zeilen:

"x","y"
1.5,-3.5
-10,6.32

Wichtig ist, die letzte Zeile noch durch Drücken der Enter -Taste abzuschließen. Speichern
Sie anschließend die Datei unter dem Namen ”test.csv” auf dem Desktop ab.
Um die Daten nun einzulesen, müssen wir R mitteilen wo sie liegt, wie sie heißt und wie
sie formatiert ist. Dies alles geschieht mit folgendem Code:

filePath <- "C:/Users/BENUTZER/Desktop/test.csv"


data <- read.csv(file=filePath, dec=".", sep=",")
data

## x y
## 1 1.5 -3.50
## 2 -10.0 6.32

Das Attribut dec legt also fest, welches Dezimalzeichen genutzt wird, während mit sep
das Zeichen übergeben wird, welches die einzelnen Beobachtungen trennt. In diesem Fall
das Komma.
Streng genommen ist die Endung der Datei in diesem Fall nicht wichtig. Auch eine
*.txt-Datei wird als CSV-Datei erkannt, sofern sie ebensolche Daten enthält. Sollte es
beim Einlesen von CSV-Dateien Probleme geben, schauen Sie sich die Dokumentation zu
oben genutzter Funktion an. Es gibt noch eine Reihe weiterer Argumente, mit denen das
Einlesen genau gesteuert werden kann.

23
Funktionsübersicht
abline, 21 matrix, 10
attach, 16 mean, 13
barplot, 20 pie, 19
boxplot, 18 plot, 20
pnorm, 14
c, 9
points, 21
cbind, 9
colSums, 12 qexp, 14
cor, 13 qnorm, 14
cov, 13
rbind, 9
det, 12 read.csv, 23
dnorm, 14 rnorm, 14
dunif, 14 rowSums, 12
exp, 11
sd, 13
head, 16 seq, 9
help, 9 solve, 12
hist, 18 sqrt, 11
sum, 12
install.packages, 6 summary, 17
length, 13, 19 t, 12
library, 7 truehist, 7
lines, 21
log, 11 var, 13

24

Das könnte Ihnen auch gefallen