Einführung in R

Transcrição

Einführung in R
Einführung in R
Matthias Templ, Leonhard Seyfang
Oktober 2005
Ausblick
1. Was ist R? Warum ausgerechnet R? (eine kurze Werbung)
2. Installation von R
3. Informationsmaterial zu R
4. GUI´s für R; R-Commander
5. Einige wichtige Funktionen
6. Datentypen in R
7. Beispiele: Vektor, Matrix, Data Frame, Liste, Sequenz (Live im R-Commander)
Ausblick
8. Funktionen schreiben, Daten einlesen, Skript erstellen
9. Graphiken
10. Beispiele (Live mit Hilfe des R-Commanders)
Allgemeines
R ist ein Software-Paket für Statistical Computing. Es ist die Open Source
Implementierung der Sprache S, dass hauptsächlich von John Chambers in den Bell
Laboratories entwickelt worden ist.
Eine weitere, jedoch kommerzielle Implementierung von S ist S-PLUS.
• R ist ursprünglich (1994) von Ross Ihaka und Robert Gentleman an der
Universität von Auckland entwickelt worden.
• Erste nicht-Betaversion R 1.0.0 im Jahr 2000. Jedes Jahr mehrere neue
Versionen.
• derzeit Wartung und Weiterentwicklung durch eine weltweite Gruppe von
Freiwilligen aus Forschung und Wirtschaft
• primäre Verbreitung über Webseiten (www.r-project.org) und Archive (cran.rproject.org).
• R kann über Packages erweitert werden. Einige Packages sind in der R
Distribution enthalten, weitere befinden sich auf CRAN.
Vergleiche, Vorteile von R
• Open Source, Freeware, objektorientierte Sprache
• Veni, vidi, vici (!?) – kommentierter Source-Code in tar.gz files auf CRAN
Lerne vom Code der Gurus
• Vergleich zu anderer statistischer Software
• Rechenzeit
• Hilfesystem
• Graphiken
Vergleiche, Vorteile von R
• Methodenvielfalt
• LaTeX Einbindung
• Packaging
Wie komme ich zu R
• Die allgemeine Informationswebseite ist
http://www.r-project.org/
(virtueller Name für http://www.ci.tuwien.ac.at/R-project/).
• CRAN - the Comprehensive R Archive Network
– Die Hauptseite ist http://cran.r-project.org/
(virtueller Name für http://www.ci.tuwien.ac.at/R/).
– Mirror Seiten sind verfügbar in vielen Länder,
z.B. http://cran.us.r-project.org/.
• Auf den CRAN Seiten gibt es Binary Distributionen für Windows, Mac und für
mehrere Linux Distributionen.
Wie komme ich zu R
Auf Windows:
• Lade den Installer R-2.2.0-win32.exe von
http://cran.r-project.org/bin/windows/base/
herunter und führe die Datei aus.
- Alternative (nur für Windows XP?):
Lade den Installer RDACCSDSetup2020V1.0beta.exe von
http://sunsite.univie.ac.at/rcom/download/
herunter und führe die Datei aus. Dies ist ein Installationspaket mit R-2.2.0,
R-Commander, einigen ausgewählten Packages, RExcel und dem Editor Tinn-R
mit Syntax-highlighting.
Setzen des Arbeitsverzeichnisses:
• Setzen des persönlichen Arbeitsverzeichnis:
– rechte Maustaste bei Start-Icon: Eigenschaften → Ausführen in
– Setzen im GUI über Menü: File → Change dir ...
– In R durch setzen über die Command Line mit setwd()
Kontrolle mit getwd()
Informationsquellen über R
• Die Webseite http://www.r-project.org/ und CRAN
• Die frequently asked questions (FAQ) Listen auf CRAN.
• Manuals: z.B.
– An Introduction to R
– R Data Import/Export
sind Teil der R Installation bzw. befinden sich auf CRAN. Unter Windows
können diese im Menü unter Help → Manuals gefunden werden.
Siehe auch andere R-Einführungen und R Referenz card unter
http://cran.r-project.org/other-docs.html.
Informationsquellen über R
• Books: z.B.
– Dalgaard: Introductionary Statistics with R
– Venables and Ripley: Modern Applied Statistics with S-PLUS, 1999, 3rd
edition
– Ligges: R Programming, 2005, in Deutsch
Der R Commander
• Package Rcmdr auf CRAN
• GUI für R
• Für Schulungszwecke entwickelt
• Eingeschränkte Funktionalität, aber ausreichend für die EDV-Übung.
• Einführung
Rcmdr.pdf
auf
http://socserv.mcmoster.ca/jfox/Getting-Started-with-the-
Wichtige R Funktionen
Wenn der Funtionsname und anschließend [RET] getippt wird, wird die Funktion
angezeigt. Um eine Funktion aufzurufen, muss der Funktionsname zusammen mit
der Argumentenliste innerhalb von () eingetippt werden, auch wenn diese leer ist.
D.h. q()[RET] anstatt q[RET] ist notwendig, um R zu verlassen.
q() Beende die Session. Es wird gefragt, ob der Workspace (im File .Rdata)
gespeichert werden soll.
help() Bekomme Hilfeseite für eine Funktion oder ein Objekt
help.start() Verwende einen Webbrowser für das Lesen der Hilfe
ls() Liste die Objekte im Workspace auf
rm() Lösche Objekte im Workspace
save.image() Speichern des Workspace-Inhalts in einem File
save() Speichern eines Objekts in einem File
load() Laden von mit R gespeicherten Daten
example() Exekutiere das Beispiel auf der Hilfeseite einer Funktion
summary() Fasse die Information über ein Objekt kurz zusammen
Wichtige R Funktionen
library() Laden von zusätzlichen (schon installierten) Packages
Mehr auf
http://cran.r-project.org/doc/contrib/Short-refcard.pdf
und im Dokument “R-Befehle zum Skriptum Statistik und Wahrscheinlichkeitsrechnung” (R. Dutter) von Leonhard Seyfang.
R Basics
Hilfe:
help(topic)
?topic
help.search("topic")
help.start()
help(package="package-name")
Operatoren: +, -, *, /, ^ , %*%
see help("+")
Namen:
case sensitive,
Buchstabe zu Beginn,
Kommentare: alles nach #
Zuweisung: x = 5
x <- 5
5 -> x
Vergleiche:
==, !=, >, >=,
<, <=
see help("==")
R Basics
Elementare Datentypen:
Logical : TRUE, FALSE, T, F
Integer : 1, 100, 326, ...
Double : 1.0, 3.1415297, 2.718282, NaN, Inf, -Inf
Complex : 1+0i, 1i, 3+5i
Character : "Hello", "How are you?"
Missing Values : NA
R Basics
Zusammengesetzte Datentypen:
vector : von Elementen desselben elementaren Typs
array : Vektor mit Dimensionsattribut (beliebige Anzahl an Dimensionen erlaubt).
matrix : 2-dimensionaler Array. Spezialfall, um die üblichen Matrixoperationen wie
z.B. Matrixmultiplikation durchführen zu können.
factor : Spezieller Vektor für das Kodieren von Klassen.
list : Liste von Elementen von verschiedenen Datentypen (sowohl elementar als
auch zusammengesetzt)
data.frame : Mischung“ aus Matrix und Liste
”
Data Frames
• Können betrachtet werden als
– Matrix, wo jede Spalte einen unterschiedlichen Datentyp besitzt
– Liste, wo jedes Element ein Vektor derselben Länge ist
• Zugriff auf die Elemente analog wie bei Matrizen ODER Listen
• Beobachtungen mit Missing Values können mithilfe von na.omit() entfernt
werden, wodurch die gesamte Zeile gelöscht wird
Methoden zur Konstruktion
• Die Funktionen zur Konstruktion haben dieselben Namen wie die entsprechenden Datentypen. Umwandlung kann mithilfe von as.type erfolgen, Checken
des Typs mithilfe von is.type.
> x <- matrix(1, nrow = 5, ncol = 2)
> is.matrix(x)
[1] TRUE
> as.vector(x)
[1] 1 1 1 1 1 1 1 1 1 1
> x <- list(a = "Hello", b = 1:10, pi = 3.1415927)
• Konstruktion einfacher Vektoren:
> c(1, 2, 7)
[1] 1 2 7
> c("Hello", "World")
[1] "Hello" "World"
Zugreifen auf Elemente: Vektoren
Vektoren: Elemente können über Nummern oder Namen angesprochen werden
> x <- c(5, 3, 7)
> names(x) <- c("apple", "banana", "orange")
> x["apple"]
apple
5
> x[1:2]
apple banana
5
3
> length(x)
[1] 3
> x - 1
apple banana orange
4
2
6
> 2 * x
apple banana orange
10
6
14
Zugreifen auf Elemente: Matrizen
Matrizen: analog wie bei Vektoren, wobei die Dimensionen durch Kommas
unterteilt werden
> x <- matrix(1:8, ncol = 2)
> colnames(x) <- c("First", "Second")
> x[1:2, ]
First Second
[1,]
1
5
[2,]
2
6
> x[, "Second"]
[1] 5 6 7 8
> x[-3, ]
First Second
[1,]
1
5
[2,]
2
6
[3,]
4
8
> dim(x)
[1] 4 2
Zugreifen auf Elemente: Listen
Listen: Dollar Zeichen $ oder Nummer in eckigen Klammern
> x <- list(a = "Hello", b = 1:10, pi = 3.1415927)
> x$a
[1] "Hello"
> x[["a"]]
[1] "Hello"
> x[[1]]
[1] "Hello"
> x[1]
$a
[1] "Hello"
> length(x)
[1] 3
Zugreifen auf Elemente: Data Frames
> auto <- data.frame(PS = c(55, 75, 72, 105), Gewicht = c(1050,
+
1077, 1120, 1420))
> auto
1
2
3
4
PS Gewicht
55
1050
75
1077
72
1120
105
1420
> auto$PS
[1]
55
75
72 105
Zugreifen auf Elemente: Data Frames
> auto[, "PS"]
[1]
55
75
72 105
Sequenzen
> seq(from = 0, to = 1, length = 3)
[1] 0.0 0.5 1.0
> seq(0, by = 0.1, along = 1:11)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
> rep("hallo", 3)
[1] "hallo" "hallo" "hallo"
> rep(1:3, 3)
Sequenzen
[1] 1 2 3 1 2 3 1 2 3
Matrix-Multiplikation
> x <- matrix(1:4, ncol = 2)
> x
[,1] [,2]
[1,]
1
3
[2,]
2
4
> xInv <- solve(x)
> x * xInv
[,1] [,2]
[1,]
-2 4.5
[2,]
2 -2.0
Matrix-Multiplikation
> x %*% xInv
[,1] [,2]
[1,]
1
0
[2,]
0
1
Funktionen
> moment <- function(x, n = 2) {
+
sum(x^n)/length(x)
+ }
• Es wird nur ein Wert zurückgegeben (letztes Statement oder Argument von
return). Wenn mehrere Werte zurückgegeben werden sollen, dann können
diese in einer Liste zusammengefasst werden.
• Argumente mit Namen: Bei Aufruf einer Funktion können die Argumente in
einer beliebigen Reihenfolge übergeben werden (z.B. moment(n=3, x=x)).
• Default Werte: Argumente mit Default Werten können beim Aufruf der Funktion
weggelassen werden.
Einlesen von Daten
In R gibt es die Möglichkeit, die Daten aus den verschiedensten Formaten einzulesen.
Eine nähere Beschreibung befindet sich in R Data Import/Export.
Die Befehle, die wir benötigen, sind:
• read.table(): Einlesen von Daten in Tabellen-Format aus einer Datei und
Erzeugen eines Data Frames
• read.csv2(): Einlesen von Daten im CSV-Format∗
• load(): Laden von Daten (und auch Objekten), die in R mit save gespeichert
worden sind
∗ Z.B.
können in Excel Daten im CSV Format abgespeichert werden.
Erstellen von Skripts
Um Reproduzierbarkeit der R Sessions zu erreichen, können die einzelnen Befehle in
ein File geschrieben werden und daraus nach R geladen werden.
Verwende einen externen Editor zum Schreiben eines Skripts:
• Windows:
– Setzen im GUI über Menü File → New Script
– Notepad, XEmacs, Tinn-R . . .
• Unix:
– vi
– emacs
– ...
Erstellen von Skripts
Einlesen des Skripts in R:
> source("skript.R")
Wenn die Befehle und Ergebnisse am Bildschirm mitverfolgt werden sollen:
> source("skript.R", echo = TRUE)
Erstellen von Grafiken
Befehle zum Erzeugen von Grafiken sind:
•
•
•
•
plot(): verwendet die Default Printmethode für Datentyp
hist(): Histogramm
boxplot(): Boxplot
...
Zum Hineinschnuppern: demo(graphics)
Viele Beispiele: http://addictedtor.free.fr/graphiques/index.php
und
http://www.stat.auckland.ac.nz/~paul/RGraphics/rgraphics.
html
Speichern oder Drucken der Grafiken
Windows :
• Klicken mit rechter Maustaste auf den Plot oder unter Menü File: Wähle
Save as Metafile ... oder Print ...
• Vor dem Erstellen der Grafik win.metafile(file = "Rplots.wmf")
und danach dev.off()
Unter Unix :
• dev.print(): Drucke aktives Device
• Vor dem Erstellen der Grafik postscript(file = "Rplots.ps") und
danach dev.off()
Weitere Möglichkeiten zur Abspeicherung von Grafiken können mit ?Devices
ermittelt werden.
Beispiel
>
>
>
>
>
+
>
>
data(faithful)
help(faithful)
save(faithful, file = "faithful.Rdata")
load("faithful.Rdata")
write.table(faithful, file = "faithful.dat", quote = FALSE,
row.names = FALSE)
faithful <- read.table("faithful.dat", header = TRUE)
summary(faithful)
eruptions
Min.
:1.600
1st Qu.:2.163
Median :4.000
Mean
:3.488
3rd Qu.:4.454
Max.
:5.100
waiting
Min.
:43.0
1st Qu.:58.0
Median :76.0
Mean
:70.9
3rd Qu.:82.0
Max.
:96.0
Beispiel
> dim(faithful)
[1] 272
2
> faithful <- na.omit(faithful)
> par(omi = c(0, 0, 0, 0))
> plot(faithful, main = "Faithful")
Beispiel
70
60
50
waiting
80
90
Faithful
1.5
2.0
2.5
3.0
3.5
eruptions
4.0
4.5
5.0
Beispiel
Speichern der Grafik in einer Datei innerhalb eines Skripts:
Windows :
> win.metafile(file = "faithful.wmf")
> plot(faithful, main = "Faithful", omi = c(0, 0,
+
0, 0))
> dev.off()
Unter Unix :
> postscript(file = "faithful.eps")
> plot(faithful, main = "Faithful")
> dev.off()
Beispiel
> daten <- faithful[faithful$eruptions > 3, 2]
> length(daten)
[1] 175
>
>
+
>
>
>
>
par(mfrow = c(2, 2), omi = c(0, 0, 0, 0))
hist(daten, freq = FALSE, breaks = 20, xlim = c(60,
100))
boxplot(daten, main = "Boxplot")
plot(density(daten), main = "Estimated Density")
qqnorm(daten)
qqline(daten, col = "red")
Beispiel
Boxplot
95
85
75
0.04
65
0.00
Density
0.08
Histogram of daten
60
70
80
90
100
daten
Normal Q−Q Plot
95
85
65
75
Sample Quantiles
0.04
0.02
0.00
Density
0.06
Estimated Density
60
70
80
90
N = 175 Bandwidth = 1.913
100
−2
−1
0
1
Theoretical Quantiles
2
Beispiel
> var(daten)
[1] 35.9309
> sd(daten)
[1] 5.994239
Links
Einige hilfreiche und interessante Seiten zu und über R:
• R Homepage: http://www.r-project.org/
• The Comprehensive R Archive Network: http://cran.at.r-project.org/
• Frequently Asked Questions on R:
http://cran.at.r-project.org/doc/FAQ/R-FAQ.html
• Short Introduction:
http://cran.at.r-project.org/doc/contrib/rdebuts_en.pdf
• Reference Card:
http://cran.at.r-project.org/doc/contrib/Short-refcard.pdf
Links
• R Commander:
http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/index.html
• An R site search: http://finzi.psych.upenn.edu/search.html
• Mail archives: http://maths.newcastle.edu.au/~rking/R/
• Graphiken:
http://www.stat.auckland.ac.nz/~paul/RGraphics/rgraphics.
html
http://addictedtor.free.fr/graphiques/index.php
• Mailingliste: http://www.r-project.org/mail.html
Vergleich zu SAS
Bestimme gerundetes Mittel einer Variablen eines Datensatzes, die mit ∗2.54
multipliziert werden sollte
• SAS:
DATA new; SET old;
htcm = htinches * 2.54;
PROC means; VAR htcm;
output out=new2 mean=htcm;
DATA new2; set new2;
htcm=round(htcm);
PROC fsview; run;
Kann auch in einem DATA step gelöst werden – noch längerer Code.
• R:
round( 2.54 * mean( htinches ) )
ENDE
Danke für die Aufmerksamkeit!
Der Inhalt dieser Slides entspricht zum größten Teil dem Inhalt der Slides von Bettina
Grün (siehe http://www.ci.tuwien.ac.at/~gruen/R-intro-slides.pdf )
vom Oktober 2003.

Documentos relacionados