statistik und grafikerstellung mit r - uni-saarland.de · u n iv ersi t a s s a r avien s is...
TRANSCRIPT
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