42
U N IV E R SI T A S S A R A V I E N S I S Statistik und Grafikerstellung mit R Valentin Popov Lehrstuhl Statistik und Ökonometrie Universität des Saarlandes EMail: [email protected] September 2011 Uni des Saarlandes Crashkurs in R September 2011 1

Statistik und Grafikerstellung mit R - uni-saarland.de · U N IV ERSI T A S S A R AVIEN S IS Statistik und Grafikerstellung mit R Valentin Popov Lehrstuhl Statistik und Ökonometrie

Embed Size (px)

Citation preview

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Statistik und Grafikerstellung mit R

Valentin Popov

Lehrstuhl Statistik und ÖkonometrieUniversität des Saarlandes

EMail: [email protected]

September 2011

Uni des Saarlandes Crashkurs in R September 2011 1

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Vorbemerkungen

R ist als Open Source Software kostenlos erhältlich (bezeichnet als "free software"unter GNU General Public Licence).

R baut auf mathematischer Programmiersprache S auf.

Die ursprünglichen Autoren von S sind John M. Chambers, R. A. Becker und A. R.Wilks, AT & T Bell Laboratories, Statistics Research Department.

R ist eine Programmiersprache, und auch der Name eines Software-Systems, dasdiese Sprache implementiert.

Das R-Ursystem wurde von R & R - Ross Ihaka und Robert Gentleman amDepartment of Statistics der University of Auckland entwickelt.

Seit 1997 wird das Kernsystem durch R Core Team (20 Personen - R & R plus 18Leute im engsten Kreis) entwickelt.

Der Umfang von R ist ständig wachsend und wir lernen nur einen kleinen Teildavon kennen.

Uni des Saarlandes Crashkurs in R September 2011 2

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Installation von R

Aktuelle Version (September 2011) R 2.13.1

Installation von der Homepage: http://r-project.org

CRAN→ Stadt in "Germany" auswählen (z.B. Muenchen)→ Windows→ base→ Download R 2.13.1 for Windows

Hilfe bei der Installation bzw. Windows-spezifischen Problemen: R for WindowsFAQ

http://cran.r-project.org/bin/windows/base/rw-FAQ.html

Bei der Benutzerinstallation ist es sinnvoll zusätzliche Manuals auszuwählen.

Falls Tinn-R als Editor benutzt wird (siehe unten), soll man die Standardoptionenanpassen und dabei SDI (mehrere kleine Fenster) auswählen.

Uni des Saarlandes Crashkurs in R September 2011 3

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Installation von Zusatzpaketen

Basisinstallation kann mit zusäztlichen Paketen erweitert werden.

Zahlreiche (über 2600!) Zusatzpakete sind auf der Webseite verfügbar.

Installation von Zusatzpaketen:

R starten→ Dropdown-Menü "Packete" auswählen→ "Installiere Paket(e)..."auswählen→ CRAN-Spiegelserver (z.B. Germany(Muenchen)) und auf "OK"klicken→ Benötigte Paket(e) (Auswahl von mehreren möglich) auswählen undauf "OK" klicken.

Vorsicht: Avira Antivir macht erfahrungsgemäß bei der Paketinstallationgelegentlich Schwierigkeiten, also ggf. temporär Virenschutz deaktivieren(Virengefahr sehr gering)!Tipp: Bei der Installation aktueller Version von R, kann man die in der altenVersion benutzen Zusatzpaketen automatisch unterladen:

In der alten Version ausführenpackages <- installed.packages()[,"Package"]save(packages, file="Rpackages")In der aktuellen Version ausführenload("Rpackages")for (p in setdiff(packages, installed.packages()[,"Package"]))install.packages(p)

Uni des Saarlandes Crashkurs in R September 2011 4

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Literatur

Gedruckte Literatur auf Deutsch:Dolic, B.: Statistik mit R, Oldenbourg Verlag 2004Ligges, U.: Programmieren mit R, 3. Auflage, Springer Verlag 2008Schlittgen, R.: Statistische Anwendungen,Standardmethoden und ihre Alternativen mit ihrer Durchführung in R, OldenbourgVerlag 2004Wolf, H.-P. et al.: BWL− Crash − Kurs Statistik aktiv mit R, UVK VerlagsgesselschaftmbH 2006.

In R integrierte Handbücher (erreichbar unter Hilfe→ Handbücher (PDF))An Introduction to RGrundlegender Überblick, Durchlesen sinnvoll.R Reference ManualDokumentation aller Befehle aus R Basisinstallation, Durchlesen nicht sinnvoll.R Data Import/ExportDokumentation vorhandener Schnittstellen zu anderen Statistik-Programmen,Datenbanken, Netzwerkprotokollen.R Language DefinitionBeschreibt genauer, wie R "funktioniert"; empfehlenswert, wenn die "Introduction to R"Fragen offen lässt.Writing R Extensions, R Internals und R Installation and AdministrationZielgruppe sind Leute mit fortgeschrittenen Kenntnissen in R.

Uni des Saarlandes Crashkurs in R September 2011 5

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Was kann man mit R machen?

Rechnen (Skalaren, Vektoren, Matrizen)

Daten holen (sowohl von der Festplatte, als auch aus Internet)

Datenanalysen ausführen (u.a. deskriptive Statistik, schließende Statistik)

Modellanpassungen machen (u.a. verallgemeinte lineare Modelle,Zeitreiheanalyse, Varianzanalyse)

Graphische Datenanalysen machen (Histogramme, Boxplots,Quantil-Quantil-Plots und viele weitere Plot-Möglichkeiten )

Simulationen durchführen

...

Uni des Saarlandes Crashkurs in R September 2011 6

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Welche Vorteile hat R?

Alle Anweisungen, eingetippt auf der Tastatur, werden in R unmittelbar ausgeführt.

Die Syntax ist ziemlich einfach und intuitiv (solange Englischkenntnisse vorhandensind).

R ist flexibel - die Ergebnisse einer Analyse werden nicht direkt auf demBildschirm angezeigt, sondern als Objekte gespeichert.

Uni des Saarlandes Crashkurs in R September 2011 7

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Erste Schritte: Starten und beenden

Um ein Kommandofenster zu öffnen führt man die Datei "rgui.exe" aus. Wenn eineVerknüpfung (shortcut) auf dem Desktop vorhanden ist, erfolgt dies in dem derButton "R" direkt mit einem Doppelklick angesprochen wird.

Unter in Blau angezeigten Hinweisen erscheint in Rot ein Prompt-Zeichen (>) undein (blinkender) Kursor: R ist bereit Befehle entgegenzunehmen und zuverarbeiten.

Vollständige Befehle werden zeilenweise, nach RETURN, ausgeführt, bei einemunvollständigen Befehl erscheint + (Fortsetzung der Eingabe), mehrere Befehle ineiner Zeile werden durch Semikolon getrennt.

Das Kommandofenster wird mit dem Befehl q() verlassen. Alternativ kann manauf dem Kreuz im Menüleiste oben rechts am Bildschirmrand klicken. In beidenFällen wird man gefragt ob die aktuelle Sitzung (mit den erstellten Objekten)gespeichert werden soll. Klickt man auf "ja" werden die Daten im aktuellenVerzeichnis gespeichert, sonst gehen sie verloren.

Obwohl R nicht menügesteuert ist, kann man bestimmte Befehle (wie z.B.Speichern, Verzeichnis wechseln, Zusatzpakete installieren usw.) auch mit denAktionsmenüs ausführen.

Uni des Saarlandes Crashkurs in R September 2011 8

UN

IVE R S IT A

S

SA

RA V I E N

SI S

R-Texteditor

Schreiben im Texteditor statt direkt im Kommandofenster spart Zeit und Mühewenn man eine Reihe von Befehlen mehrmals benutzen will oder wenn mankompliziertere Funktionen schreibt.

R beinhaltet einen Standardeditor.

Mit dem Datei-Menü (Neues Skript, Öffne Skript) wird eine Text-Dateigeöffnet, in die der Programmtext geschrieben und unter Name.R gespeichertwerden kann.Befehle werden ausgeführt, indem einzelne Zeilen oder markierte Abschnitte mit:

Strg+R oderBearbeiten (Ausführung Zeile oder Auswahl)

Deutlich komfortabler ist der Editor Tinn-R (siehehttp://www.sciviews.org/Tinn-R/), der u.a. Befehle farblich absetzt(Syntax-Highlighting) und zugehörige Klammern einfärbt.

Uni des Saarlandes Crashkurs in R September 2011 9

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Erste Schritte: Hilfefunktionen

Mit R wird auch Online-Hilfe zu Befehlen und Handbüchern installiert.

Man kann direkt die Hilfe für einen bestimmten Befehl abrufen:

> ?mean> help(mean)> help("mean")

Als Folge wird eine Seite auf Englisch geöffnet mit allgemeiner Information zumBefehl. Wichtige Sektionen: Description, Usage, Arguments, Details, Value, Seealso, Examples.

Uni des Saarlandes Crashkurs in R September 2011 10

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Erste Schritte: Hilfefunktionen

Standardmässig sucht R Hilfe für die Befehle nur in den geladenen Paketen.Wenn die Option try.all.packages gleich TRUE gesetzt wird, wird in allenuntergeladenen Paketen gesucht.

> help(garchFit,try.all.packages=TRUE)

Help for topic ’garchFit’ is not in anyloaded package but can be found in thefollowing packages:

Package Librarytseries C:/Programme/R/R-2.13.1/library

In diesem Fall wird aber die Hilfeseite für den Befehl nicht angezeigt. Dies erfolgtwenn man Gebrauch von der Option package macht:

> help(garchFit, package=fGarch)

Uni des Saarlandes Crashkurs in R September 2011 11

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Erste Schritte: Hilfefunktionen

Eine Suche mit Stichwörtern erfolgt mit help.search("name") oder ??name.

Mit apropos werden Funktionen von den geladenen Paketen angezeigt, dessenName eine bestimmte Zeichenfolge hat:

> apropos("help")

[1] "help"[2] "help.search"[3] "help.start"[4] "link.html.help"

Im WWW kann man nach Stichwörten mit dem Befehl RSiteSearch suchen:> RSiteSearch("Probit model")

Suche direkt im WWW unter: http://rseek.org/.

Uni des Saarlandes Crashkurs in R September 2011 12

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Mailing-Listen

Anmeldung unter http://www.r-project.org/mail.html

Wichtige Mailing-Listen:

R-help

Richtige Liste, um Fragen zur Benutzung von R zu stellen und Hilfe bei konkretenProblemen zu suchen

Dennoch: Liste nicht gedacht für "Homework-problems"

Hohe Aktivität (≈ 100 mails pro Tag!!!)

R-SIG-Finance

Special interest group für Anwendungen im Bereich Finance

Gemischte Aktivität (öfter einige Tage nichts, dann intensive Diskussionen mit ≈ 10-20mails pro Tag.

Wichtig: Posting guide lesen!

Uni des Saarlandes Crashkurs in R September 2011 13

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Erste Schritte: Rechnen, Speichern in Objekten, Löschen

In R ist es ohne weiteres möglich, die gängigen Rechenoperationendurchzuführen: Addieren (x+y), Substrahieren (x-y), Multiplizieren (x*y),Dividieren (x/y), Exponieren (exp(x)), Logarithmieren (log(x), die Basis iststandardmäsig die Eulersche Zahl), Wurzel ziehen (sqrt(x)), Potenzen rechnen(x^y).

Frühere Zeilen kann man mit der Pfeiltaste in die aktuelle Zeile holen, für dasArbeiten z.B. mit Copy & Paste ist der Editor angenehmer.

Ein erreichtes Ergebnis wird als Objekt in R gespeichert in dem diesem Ergebnisein Name zugewiesen wird. Die Zuweisung erfolgt mit "<-", "->" oder "=" :

> potenz<-2^10> potenz[1] 1024> potenz=2^10;potenz[1] 1024

Einzelne Objekte werden mit dem Befehl rm entfernt. Der R-Workspace in einemVerzeichnis wird mit rm(list=ls()) geleert. Es wird empfohlen, dass manvorsichtig mit diesem Befehl umgeht.

Uni des Saarlandes Crashkurs in R September 2011 14

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Erste Schritte: Häufig auftretende Fehler

Klammersetzung - Beim Arbeiten mit R, besonders wenn lange Befehleausgeführt werden sollen, kann es passieren dass die Klammern nicht richtiggesetz werden. Ein der größten Vorteilen des Tinn-R Editors ist die Möglichkeitdie Klammerpaare leicht zu checken.

Groß- und Kleinschreibung - R unterscheidet zwischen Groß- undKleinschreibung:

> name<-exp(5); NameFehler: objekt "Name" nicht gefunden> name[1] 148.4132

Überschreiben von Objekten - das Überschreiben von Objekten erfolgt ohneWarnung! Um unerwünschte Datenverluste zu vermeiden, soll man zunächstnachprüfen ob der ausgewählte Name schon "besetzt" ist. Das erfolgt problemlosin dem man alle Objekte im aktuellen R-Workspace mit dem Befehl ls() auflistet.

Uni des Saarlandes Crashkurs in R September 2011 15

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Zusatzpakete

Über das Hilfe-Menü mit ”HTML Hilfe” oder über help.start() erreicht man dieHTML-Seite, wo man auf ”Packages” geht. Dort werden alle installierten Paketeangeführt und man kann weiter auf die Liste der Befehle und Datensätze in demjeweiligen Paket gehen und die Details nachlesen.

Pakete können problemlos installiert werden.

Damit man mit einem installierten Paket arbeiten kann, muss es geladen werden;über das Pakete-Menü kann man mit ”Lade Paket” aus der Liste der installiertenPakete auswählen. Alternativ kann man die Befehle require oder librarybenutzen.

require(fGarch)

Uni des Saarlandes Crashkurs in R September 2011 16

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Datengenerierung: Vektoren

Erstellung von Vektoren durch Verbindung (”concatinate") von Elementen:

> a <- c(1,7,-2); a[1] 1 7 -2> b <- c(a,1.5) ; b[1] 1.0 7.0 -2.0 1.5> c <- c(a,b) ; c[1] 1.0 7.0 -2.0 1.0 7.0 -2.0 1.5> d <- c(-a,b) ; d[1] -1.0 -7.0 2.0 1.0 7.0 -2.0 1.5

Erstellung von Vektoren, die Folgen (”sequences") darstellen:

> seq(1,3,by=0.5)[1] 1.0 1.5 2.0 2.5 3.0> seq(1,9,by=pi)1.000000 4.141593 7.283185> seq(1,3,length=9)[1] 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00> seq(1,3)[1] 1 2 3

Uni des Saarlandes Crashkurs in R September 2011 17

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Datengenerierung: Vektoren

Für Folgen kann man auch den Operator ":" benutzen. Vorsicht mit arithmetischenOperators, angewandt an ":" :

> 1:10[1] 1 2 3 4 5 6 7 8 9 10

> 1:10-1[1] 0 1 2 3 4 5 6 7 8 9

> 1:(10-1)[1] 1 2 3 4 5 6 7 8 9

Mit sequence werden Serien von Folgen von ganzen Zahlen erzeugt, wobei jedeSerie endet mit den als Argumente angegebenen Zahlen:

> sequence(c(2,5))[1] 1 2 1 2 3 4 5> sequence(3:5)[1] 1 2 3 1 2 3 4 1 2 3 4 5

Uni des Saarlandes Crashkurs in R September 2011 18

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Datengenerierung: Vektoren

Erstellung von Vektoren durch Wiederholung (”replicate"):

> e <- rep(2,5) ; e[1] 2 2 2 2 2> f <- rep(c(1,2),3) ; f[1] 1 2 1 2 1 2> g <- rep(1:4,length=10) ; g[1] 1 2 3 4 1 2 3 4 1 2> h <- rep(c(1,2),each=3) ; h[1] 1 1 1 2 2 2

Erstellung von Vektoren mit Nullen mit numeric und double. Das Argument ergibtdie Länge des Vektors:

> i<-numeric(7) ;i[1] 0 0 0 0 0 0 0> j<-double(7) ;j[1] 0 0 0 0 0 0 0

Uni des Saarlandes Crashkurs in R September 2011 19

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Datengenerierung: Matrizen

Eine Matrix besteht aus mehreren Spaltenvektoren (columns) oder aus mehrerenZeilenvektoren (rows) gleicher Länge; dementsprechend kann eine Matrix mit”cbind” und ”rbind” erstellt werden:

> d<-rep(1,3)> e<-7:5> a<-cbind(d,e);a

d e[1,] 1 7[2,] 1 6[3,] 1 5> b<-rbind(d,e);b

[,1] [,2] [,3]d 1 1 1e 7 6 5

Uni des Saarlandes Crashkurs in R September 2011 20

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Datengenerierung: Matrizen

Matrizen werden auch mit dem Befehlmatrix(Datenvektor,Zeilenanzahl,Spaltenanzahl) erstellt:

> m <- matrix(1:12,2,6)> m

[,1] [,2] [,3] [,4] [,5] [,6][1,] 1 3 5 7 9 11[2,] 2 4 6 8 10 12> mr <- matrix(1:12,2,6,byrow=TRUE) ; mr

[,1] [,2] [,3] [,4] [,5] [,6][1,] 1 2 3 4 5 6[2,] 7 8 9 10 11 12> m0 <- matrix(0,2,4) ; m0

[,1] [,2] [,3] [,4][1,] 0 0 0 0[2,] 0 0 0 0

Wenn man eine bestimmte n x m - Marix erstellt, ist es komfortabler zuerst einen x m - Matrix mit Nullen zu erstellen und danach mit dem Befehl fix die Datenmanuell einzutragen.

Uni des Saarlandes Crashkurs in R September 2011 21

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Datengenerierung: Matrizen

Diagonalmatrizen können mit dem Befehl diag erstellt werden. In diesem Fallkann das Argument der Funktion eine natürliche Zahl (diag erzeugt einenEinheitsmatrix mit Anzahl Spalten gleich dieser Zahl) oder ein Vektor (seineElemente erscheinen auf dem Hauptdiagonal) sein:

> A<-diag(3); A # 3x3 Einheitsmatrix

[,1] [,2] [,3][1,] 1 0 0[2,] 0 1 0[3,] 0 0 1

> B<-diag(c(35,61)); B

[,1] [,2][1,] 35 0[2,] 0 61

Wenn der Befehl diag auf eine Matrix angewandt wird, ergibt R ein Vektor vonden Elementen auf dem Hauptdiaginal:

> diag(B)[1] 35 61

Uni des Saarlandes Crashkurs in R September 2011 22

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Datengenerierung: Matrizen

Matrizen können auch mit outer erstellt werden. Die Rechenoperationouter(a, b) ergibt das äußere Produkt zwischen jedem Element von a und jedemElement von b:

Wenn keine Operation angegeben wird, werden die Elemente standarmäßigmultipliziert. Sonst wird die gewünschte Operation mit FUN angegeben.

> outer(1:3,1:4) ; outer(1:3,1:4,FUN="-")

[,1] [,2] [,3] [,4][1,] 1 2 3 4[2,] 2 4 6 8[3,] 3 6 9 12

[,1] [,2] [,3] [,4][1,] 0 -1 -2 -3[2,] 1 0 -1 -2[3,] 2 1 0 -1

Uni des Saarlandes Crashkurs in R September 2011 23

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Datengenerierung: Faktoren

Ein Faktor ergibt nicht nur die Werte, die eine entsprechende (kategoriale)Variable annimmt, sondern auch alle mögliche Faktorstufen (levels), sogarwenn sie nicht präsent in der Daten sind.

> factor(c("rot","gruen","blau"))[1] rot gruen blauLevels: blau gruen rot> factor(c("rot","gruen","blau"),levels=c("rot","gruen","blau","pink"))[1] rot gruen blauLevels: rot gruen blau pink> factor(c(1:5,1:3),labels=c("Mo","Di","Mi","Do","Fr"))[1] Mo Di Mi Do Fr Mo Di MiLevels: Mo Di Mi Do Fr> factor(1:5,exclude=4)[1] 1 2 3 <NA> 5Levels: 1 2 3 5

Ein Vektor mit kategorialen Werten kann in einen ”factor” transformiert werden,damit andere Merkmalsdaten für die verschiedenen Faktorstufen getrenntausgewertet werden, vgl. dazu die Funktion tapply.

Uni des Saarlandes Crashkurs in R September 2011 24

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Vektoren

Auskunft über die Länge eines Vektors erfolgt mit dem Befehl length:

> a<-seq(1,3,.5)> length(a)

[1] 5

Überprüfung ob ein Objekt ein Vektor ist:

> is.vector(a)

[1] TRUE

Konvertierung zu anderen Datentypen mit as.* :

> a1<-as.character(a); a1[1] "1" "1.5" "2" "2.5" "3"> as.double(a1)[1] 1.0 1.5 2.0 2.5 3.0

Uni des Saarlandes Crashkurs in R September 2011 25

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Vektoren

Adressierung von Komponenten und Auswahl:

> a[3]; a[1:3] ; a[-(1:3)]; a[c(1,3)]

[1] 2[1] 1.0 1.5 2.0[1] 2.5 3.0[1] 1 2> a[a>2]

[1] 2.5 3.0> a[a==5]numeric(0)

> a>2

[1] FALSE FALSE FALSE TRUE TRUE

Uni des Saarlandes Crashkurs in R September 2011 26

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Vektoren

Das Ergebnis eines Vergleichs von Vektoren ist ein logischer Vektor mit Eingaben TRUE undFALSE, die intern als 1 und 0 abgespeichert werden.

Vergleichsoperationen mit R (entnommen aus Dolic ):

Operator Operation> Größer als< Kleiner als

== Genau gleich!= Ungleich>= Größer Gleich<= Kleiner Gleich

> c(1,2,3)==c(1,2,5)

[1] TRUE TRUE FALSE

Vorsicht:

> (sqrt(2))^2==2[1] FALSE

(Siehe dazu FAQ 7.31 auf http://cran.r-project.org/doc/FAQ/R-FAQ.html)

Uni des Saarlandes Crashkurs in R September 2011 27

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Vektoren

Rechenoperation auf einem Vektor erfolgt komponentenweise:

> a<-1:5; a[1] 1 2 3 4 5> a^2; sqrt(a)[1] 1 4 9 16 25[1] 1.000000 1.414214 1.732051 2.000000 2.236068

Operationen mit Vektoren gleicher Länge erfolgen komponentenweise:

> b <- seq(-4,4,2) ; b[1] -4 -2 0 2 4> a+b ; a*b ; a/b ; b/a ; (a/b)*(b/a)[1] -3 0 3 6 9[1] -4 -4 0 8 20[1] -0.25 -1.00 Inf 2.00 1.25[1] -4.0 -1.0 0.0 0.5 0.8[1] 1 1 NaN 1 1

Uni des Saarlandes Crashkurs in R September 2011 28

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Vektoren

Bei Operationen mit Vektoren ungleicher Länge wird der kürzere Vektor so oft wienötig wieder durchlaufen:

> c <- c(1,2) ; d <- c(10,20,30) ; e <- c(d,40)> e+c[1] 11 22 31 42> d+c[1] 11 22 31Warnmeldung:Länge des längeren Objektes ist kein Vielfaches derLänge des kürzeren Objektes in: d + c> d/c[1] 10 10 30Warnmeldung:Länge des längeren Objektes ist kein Vielfaches derLänge des kürzeren Objektes in: d/c

Uni des Saarlandes Crashkurs in R September 2011 29

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Vektoren

Insbesondere erfolgt Multiplikation (Addition) eines Vektors mit einem Skalar(=Vektor der Länge 1) komponentenweise:

> d+2 ; d*2 ; d*2+1[1] 12 22 32[1] 20 40 60[1] 21 41 61

Skalarprodukt zweier Vektoren a und b (gleicher Länge) mit dem Befehlcrossprod(a,b) oder als Matrixprodukt t(a)%*%b des transponierten(Zeilen-)Vektors t(a) mit b; Resultat ist eine (1 x 1)-Matrix.

> crossprod(d,d+2)[,1]

[1,] 1520

Uni des Saarlandes Crashkurs in R September 2011 30

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Vektoren

Einige Kennzahlen eines Datenvektors:

> x <- rnorm(100) # 100 unabhängige N(0,1)-ZV> sum(x) # Summe der Werte[1] -6.90419> mean(x) # Arithmetisches Mittel der Werte[1] -0.0690419> var(x) # Stichprobenvarianz der Werte[1] 1.022697> sd(x) # Stichprobenstandardabweichung[1] 1.011285> min(x) # Minimum der Werte[1] -2.22887> max(x) # Maximum der Werte[1] 2.41132> range(x) # Spannbreite[1] -2.22887 2.41132

Uni des Saarlandes Crashkurs in R September 2011 31

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Vektoren

Sortieren eines Datensatzes mit der Funktion sort:

> a<-c(5,1,9,3); a[1] 5 1 9 3> sort(a)

[1] 1 3 5 9> sort(a,decreasing=T)

[1] 9 5 3 1

Summe bzw. Produkt der Elementen eines Vektors mit sum bzw. prod:

> sum(a)[1] 18> prod(a)[1] 135

Uni des Saarlandes Crashkurs in R September 2011 32

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Matrizen

Die Anzahl Zeilen einer Matrix werden mit nrow abgerufen; die Anzahl Spalten -mit ncol; die Dimension - mit dim. Der Befehl length angewandt auf einerMatrix ergibt die Anzahl Elemente in der Matrix:

> m<-cbind(d,d+2)> nrow(m); ncol(m); dim(m); length(m)

[1] 3[1] 2[1] 3 2[1] 6

Die Zeilennamen bzw. die Spaltennamen werden mit rownames bzw. colnamesangezeigt:

> rownames(m)NULL> colnames(m)[1] "d" ""

Uni des Saarlandes Crashkurs in R September 2011 33

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Matrizen

Man kann bequem neue Namen bestimmter oder ganzen Zeilen bzw. Spaltenzuweisen:

> rownames(m)<-c("eins", "zwei", "drei")> colnames(m)[2]<-"dplus"> m

d dpluseins 10 12zwei 20 22drei 30 32

Mit der Zuweisung NULL wird das Objekt geleert:

> rownames(m)<-NULL> m

d dplus[1,] 10 12[2,] 20 22[3,] 30 32

Uni des Saarlandes Crashkurs in R September 2011 34

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Matrizen

Adressierung von Matrixelementen und Auswahl:

> m[2,1][1] 20> m[,2]; m[,"dplus"][1] 12 22 32[1] 12 22 32> m[1:2,]

d dplus[1,] 10 12[2,] 20 22> is.vector(m[2,1])[1] TRUE

Uni des Saarlandes Crashkurs in R September 2011 35

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Matrizen

Standardoperationen auf Matrizen erfolgen komponentenweise.

Für Matrizenaddition und -multiplikation müssen die Dimensionen passen:> m <- matrix(1:12,2,6)> mr <- matrix(1:12,2,6,byrow=TRUE)># Achtung: komponentenweise Multiplikation!> m + mr ; mr * mr

[,1] [,2] [,3] [,4] [,5] [,6][1,] 2 5 8 11 14 17[2,] 9 12 15 18 21 24

[,1] [,2] [,3] [,4] [,5] [,6][1,] 1 4 9 16 25 36[2,] 49 64 81 100 121 144> A <- mr %*% t(mr) # Übliche Matrizenmultiplikation> A

[,1] [,2][1,] 91 217[2,] 217 559

Uni des Saarlandes Crashkurs in R September 2011 36

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Matrizen

Determinante einer Matrix mit dem Befehl det. Wenn die Matrix nichtquadtratisch ist, erfolgt eine Fehlermeldung:

> det(A)[1] 3780> det(m)Fehler in determinant.matrix(x, logarithm = TRUE, ...) :

’x’ muss eine quadratische Matrix sein

Matrixinverse und Lösung eines linearen Gleichungssystems:

> solve(A)[,1] [,2]

[1,] 0.14788360 -0.05740741[2,] -0.05740741 0.02407407> b<-c(1,2)> solve(A,b) #Ax = b, x = ?[1] 0.03306878 -0.00925926

Uni des Saarlandes Crashkurs in R September 2011 37

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Matrizen

Unterschiedlich lange Matrizen u. Vektoren in cbind:

Für Matrizen A, B mit unterschiedlicher Zeilenanzahl ruft cbind(A,...,B,...)eine Fehlermeldung hervor. Vektoren, die cbind mit einer längeren Matrix oderlängeren Vektoren verbindet, werden durch Wiederholung aufgefüllt (bis zur Längeder Matrix bzw. des längsten Vektors). Vektoren, die cbind mit einer kürzerenMatrix oder kürzeren Vektoren verbindet, werden entsprechend verkürzt. In beidenFällen erfolgt eine Warnung; für rbind entsprechend bzgl. der Spaltenanzahl.

Um Rechenoperationen bei fehlenden Werten (NA: not annotated, NaN: not anumber) auf den vorhanden Werten durchzuführen, werden mit na.rm=TRUE diefehlenden Werte unterdrückt:

> a <- c(0/0, 1, 2, 3, NA) ; a[1] NaN 1 2 3 NA> mean(a) ; mean(a,na.rm=T)[1] NA[1] 2

Uni des Saarlandes Crashkurs in R September 2011 38

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Matrizen

Für die Anwendung von Funktionen auf alle Spalten und/oder Zeilen einer Matrixist die Funktion apply nützlich. Die wichtigsten Argumenten sind X , MARGIN undFUN. X bestimmt die Datenquelle; MARGIN nimmt die Werte 1 oder 2: 1 bedeutetdie Funktion wird zeilenweise angewandt, 2 - spaltenweise; FUN bestimmt dieFunktion selbst:

> m<-matrix(1:16,4,4);m

[,1] [,2] [,3] [,4][1,] 1 5 9 13[2,] 2 6 10 14[3,] 3 7 11 15[4,] 4 8 12 16> apply(X=m,MARGIN=2,FUN=max)

[1] 4 8 12 16> apply(m,1,mean)

[1] 7 8 9 10

Uni des Saarlandes Crashkurs in R September 2011 39

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Listen

Eine Liste kann beliebige R-Objekte unterschiedlichen Typs enthalten:

> Liste <- list(name="Mustermann",vorname="Hans",+ alter=54,alterkinder=c(6,11,13))> Liste$name[1] "Mustermann"

$vorname[1] "Hans"

$alter[1] 54

$alterkinder[1] 6 11 13

Uni des Saarlandes Crashkurs in R September 2011 40

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Listen

Listeneinträge werden äquivalent adressiert mit $ über die Objektnamen oderdurch [[ ]]:

> Liste$name ; Liste[[1]][1] "Mustermann"[1] "Mustermann"

aber beachte:

> Liste[1]$name[1] "Mustermann"

Einfache eckige Klammern [ ] liefern den Namen des Eintrags mit zurück, nichtnur den Inhalt!

Uni des Saarlandes Crashkurs in R September 2011 41

UN

IVE R S IT A

S

SA

RA V I E N

SI S

Manipulation von Objekten: Dataframes

Dataframes sind Tabellen; es sind spezielle Listen, deren Objekte dieTabellenspalten sind. Im Gegensatz zu Matrizen sind auch nichtnumerischeEinträge (insbes. Faktoren) zulässig.

Die Spalten von Dataframes können komfortabel mit $ über ihre Namen adressiertwerden.

Befehl attach fügt einen Dataframe in den Suchpfad ein. Komponenten desDataframes sind dadurch leicht zugänglich. Rückgängig mit Befehl detach.

Befehl data.matrix wandelt Dataframes in Matrizen um (qualitative Faktorenwerden zu natürlichen Zahlen).

Erstellen von Dataframes aus Vektoren (und Erweiterung um neue Spalten) mitBefehl data.frame.

Die Befehle dim, ncol, nrow, fix sind auch auf Dataframes anwendbar; für dieSpalten eines Dataframes ist lapply nützlich.

Uni des Saarlandes Crashkurs in R September 2011 42