Einführung in das statistische Programmpaket - uni-trier.de · Einführung in R Melanie...
Transcript of Einführung in das statistische Programmpaket - uni-trier.de · Einführung in R Melanie...
Wirtschafts- und SozialstatistikProfessor Dr. Ralf MünnichDipl.-Kffr. Melanie Knobelspies
Einführungin das statistische Programmpaket
Einführung in R Melanie Knobelspies
1 Grundlagen
1.1 Was ist R ?
• R ist GNU (Open–Source; keine Black Box ⇒ alle Algorithmen nachvollziehbar);
• Info unter: http://www.r-project.org ;
• Download unter: http://cran.r-project.org ;
• S–Plus ist kommerzielle Version (Programmiersprache fast identisch);
• Gute Programmierumgebung;
• Schnelle Entwicklung (sehr viele aktuelle Pakete);
• Interfaces zu anderen Programmen (bspw. MySQL, MS Excel, WinBUGS);
• Umfangreiche statistische Methoden;
• Flexible Graphikerstellung;
• Nachteil: Keine vollständige graphische Benutzeroberfläche.
1.2 R als Taschenrechner
− + ∗ / Grundrechenarten
ˆ bzw. ** Potenz
% / % Ganzzahlige Division
% % Modulo Division
sqrt( ) Quadratwurzel
log( ) Natürlicher Logarithmus
log10( ) Logarithmus zur Basis 10
exp( ) Exponentialfunktion
sin( ) cos( ) Trigonometrische Funktionen
round( ) rundet auf die nächste ganze Zahl auf oder ab
floor( ) rundet auf die nächste ganze Zahl ab
ceiling( ) rundet auf die nächste ganze Zahl auf
factorial( ) Fakultät
choose(n,k) Binomialkoeffizient
Wirtschafts- und Sozialstatistik, Universität Trier Seite 2
Einführung in R Melanie Knobelspies
1.3 Die wichtigsten Zeichen in R
<- Zuweisung (x <- 3 speichert beispielsweise Zahl 3unter dem Namen x).Beachte: Benutzereigene Objekte maskieren die in Rvorhandenen Befehle. Bestehende Namen wie z. B. exp, log,mean, var, c, . . . sollten daher vermieden werden.
# Kommentarzeichen
NA Fehlende Werte (Not Available)
NaN Undefinierte Werte
Inf Unendlich
NULL Leere Menge
1.4 Was es noch zu beachten gibt
• R unterscheidet zwischen Groß– und Kleinschreibung (R ist case sensitiv);
• Als Dezimaltrennzeichen wird ein Punkt verwendet (kein Komma);
• Für das Erstellen von Funktionen und längeren Aufrufen empfiehlt es sich einen Editor zu ver-wenden. Den in R implementierten Editor erhält man unter: Datei ⇒ Neues Skript (Menüleiste)Eine Liste der für R optimierten Editoren findet man unter:http://www.R-project.org/GUI/;
• R–Codes sollten stets gut kommentiert werden (Verwendung von #);
• Pakete können in R mit dem Befehl library(Paket) geladen werden (oder alternativ überdie Menüleiste Pakete→ Lade Pakete;
• Mit ls( ) oder objects( ) erhält man eine Übersicht der Objekte im Workspace;
• rm(x,y,z) entfernt einzelne Objekte;
• rm(list=ls()) entfernt alles;
• R bietet ein umfangreiches Hilfesystem. Durch Eingabe von help(Befehl) bzw. ?Befehlwird die Hilfe zu dem entsprechenden Befehl angezeigt;
• library(help="Paket") zeigt die Hilfe zu dem entspechenden Paket an;
• Auch der Befehl example(Funktion) liefert nützliche Informationen (z.B. example(plot));
• R bietet eine Reihe von Demonstrationen, die mit dem Befehl demo( ) aufgerufen werden kön-nen (z.B. demo(grahics)).
Wirtschafts- und Sozialstatistik, Universität Trier Seite 3
Einführung in R Melanie Knobelspies
2 Objekttypen in R
2.1 Datentypen
Das Programm R arbeitet mit Objekten. Die wichtigsten Objekt in R sind Vektoren, Matrizen, Listen undData.frames. Die Elemente eines Objekts können in den meisten Fällen unterschiedlichen Datentypessein. Die wichtigsten Datentypen in R sind numeric, logical und character. Mit mode(Objekt) kannder Datentyp eines Objektes abgefragt werden.
Datentyp Beschreibung Beispiel
numeric ganze und reelle Zahlen 5, 3.462
logical logische Werte FALSE, TRUE
character Buchstaben und Zeichenfolgen "Hallo"
Um zu testen, ob ein Objekt einen bestimmten Datentyp hat, gibt es folgende Befehle:
• is.numeric( )
• is.logical( )
• is.character( )
Wird das vorangestellte is durch ein as ersetzt, so kann ein anderer Datentyp erzwungen werden.(Tabelle entnommen aus PARADIS, 2002, S. 21)
Umwandlung in Funktion Resultatnumeric as.numeric FALSE → 0
TRUE → 1"1","2",... → 1,2,...
"A" → NAlogical as.logical 0 → FALSE
andere Zahlen → TRUEBuchstaben → NA
"F" → FALSE"T" → TRUE
character as.character 1,2,... → "1","2",...FALSE → "FALSE"TRUE → "TRUE"
Wirtschafts- und Sozialstatistik, Universität Trier Seite 4
Einführung in R Melanie Knobelspies
Beispiel:
> a <- 100> b <- 50
> mode(a)
[1] "numeric"
> is.numeric(a)
[1] TRUE
> is.character(a)
[1] FALSE
> a/b
[1] 2
> a <- as.character(a)
> is.character(a)
[1] TRUE
> a <- as.character(a)
> a/b
Fehler in a/b : nicht-numerisches Argument für binären Operator
2.2 numeric–Vektoren
2.2.1 Die c( ) Funktion
Vektoren enthalten mehrere Elemente des gleichen Typs (einzelne Zahlenwerte werden als Vektoren derLänge 1 behandelt).Durch die c( ) Funktion (c steht für combine) können mehrere Elemente zusammengefügt werden.
> y <- c(4,1,8,5,3)
liefert
[1] 4 1 8 5 3
Wirtschafts- und Sozialstatistik, Universität Trier Seite 5
Einführung in R Melanie Knobelspies
Die Argumente der Funktion c( ) werden zu einem Vektor zusammengefasst und durch <- als Objektunter dem Namen y abgespeichert.
2.2.2 Sequenzen
Erzeugung von regelmäßigen Zahlenfolgen anhand des Befehls seq( )
Wichtigste Argumente: from, to, by, length
Höchstens drei der Argumente dürfen spezifiziert werden.
>seq(from=-5,to=5,by=1)
liefert
[1] -5 -4 -3 -2 -1 0 1 2 3 4 5
Es geht auch die Kurzschreibweise:
> seq(-5,5) # default ist hierbei by=1
Noch kürzer geht es mit dem Doppelpunktoperator:
> -5:5
Gibt man den zusätzlichen Befehl length mit, so kann die Anzahl der Elemente eines Vektorsbestimmt werden.
Aufgabe: Erstellen Sie die folgende Sequenz. Benutzen Sie dabei verschiedene Argumente.
[1] -5.0 -4.8 -4.6 -4.4 -4.2 -4.0 -3.8 -3.6 -3.4 -3.2 -3.0 -2.8
Lösung: > seq(from=-5,length=12,by=0.2)
2.2.3 Wiederholungen
n–malige Wiederholungen eines Skalars (bzw. eines Vektors) erhält man durch den Befehl rep( ).Die Anzahl der Wiederholungen wird durch das Argument times festgelegt.
> rep(5.5,times=5)
liefert
[1] 5.5 5.5 5.5 5.5 5.5
Das ganze kann auch auch für Sequenzen angewandt werden.
> rep(1:4,times=5)
Wirtschafts- und Sozialstatistik, Universität Trier Seite 6
Einführung in R Melanie Knobelspies
liefert
[1] 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
Soll jedes Element mehrmals hintereinander wiederholt werden, so muss das Argument eachmitgegeben werden.
> rep(1:4,each=5)
liefert
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4>
Eine Kombination von times und each ist ebenso möglich.
> rep(1:4,each=3,times=2)
liefert
[1] 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4
Auch eine Wiederholung von Elementen mit variabler Anzahl ist möglich.
Aufgabe: Erstellen Sie folgende Sequenz:
[1] 1 1 2 2 2 2 3 3 3 3 3 3
Lösung:
> Reihe <- seq(2,6,2)> Reihe[1] 2 4 6> rep(1:3,Reihe)
Wirtschafts- und Sozialstatistik, Universität Trier Seite 7
Einführung in R Melanie Knobelspies
2.2.4 Elementare Vektoroperationen
length(y) Länge des Vektors y (=Anzahl der Vektorelemente).
rev(y) Kehrt die Reihenfolge der Elemente eines Vektors um.
unique(y) Liefert die Elemente des Eingabevektors ohne Wiederholungen.
sort(y) Sortiert die Elemente aufsteigend.
rank(y) Bildet den zugehörigen Rangvektor.
order(y) Liefert den Vektor der Indizes der Eingabedaten für deren aufsteigende Sortierung.
Werden zwei Vektoren addiert, so geschieht dies elementweise.Beispiel:
> x <- c(10,20,30,40)> y <- 5:8> x+y[1] 15 26 37 48>
Sind die Vektoren unterschiedlicher Länge, so wird der kürzere zyklisch verlängert.
> z <- c(1,2)> z+y[1] 6 8 8 10>
Auch einzelne Funktionen können elementweise auf einen Vektor angewandt werden.
> sqrt(y) # bildet die Quadratwurzel für jedes Element in y[1] 2.236068 2.449490 2.645751 2.828427>> y^2[1] 25 36 49 64>> 2*y[1] 10 12 14 16
Beachte: Will man das Skalarprodukt aus zwei Vektoren berechnen (im Beispiel: zTz), so mussder Befehl der Matrixmultiplikation %*% verwendet werden.
> t(z)%*%z[,1]
[1,] 5
Wirtschafts- und Sozialstatistik, Universität Trier Seite 8
Einführung in R Melanie Knobelspies
2.2.5 Zusammenfassende Vektoroperationen und statistische Maße
sum(y) Bildet die Summe der Vektorelemente.
cumsum(y) Bildet die kumulative Summe.
prod(y) Bildet das Produkt.
cumprod(y) Bildet das kumulative Produkt.
diff(y) Bildet die sukzessiven Differenzen der Vektorelemente.
min(y) Liefert den kleinsten Wert des Vektors.
max(y) Liefert den größten Wert des Vektors.
range(y) Liefert das Minimum sowie das Maximum der Werte eines Vektors.
mean(y) Liefert das arithmetische Mittel.
mean(y,trim=0.1) Liefert das getrimmte arithmetische Mittel. D.h. die 10% der kleinstenund die 10% der größten Werte werden nicht berücksichtigt.
var(y) Liefert die Varianz.
sd(y) Liefert die Standardabweichung.
scale(y) Skaliert oder zentriert die Werte. Die Auswahl der Operation geschieht,indem man center=FALSE bzw. scale=FALSE setzt.
table(y) Liefert Häufigkeitstafeln der Variable y.
mad(y) Liefert den Median der absoluten Abweichung der Elemente von x vomMedian von x.
median(y) Liefert den Median.
quantile(x,probs=p) Bestimmt die empirischen Quantile von x zu den in p angegebenenAnteilen (mittels linearer Interpolation).
summary(y) Liefert eine Auswahl von statistischen Maßen.
cov(x,y) Liefert die Kovarianz der Elemente zweier Vektoren.
cor(x,y) Liefert die Korrelation der Elemente zweier Vektoren.
Aufgabe: Führen sie die Vektoroperationen anhand der Vektoren y <- c(1,3,9,18,21)und x <- 4:8 durch.
Wirtschafts- und Sozialstatistik, Universität Trier Seite 9
Einführung in R Melanie Knobelspies
2.2.6 Indizierung von Vektoren
Um Teile oder einzelne Elemente eines Vektors auszuwählen bzw. zu eliminieren, werden eckige Klam-mern benötigt. Die Indizierung eines Vektors x erfolgt gemäß x[a]. a kann hierbei eine positive odernegative Zahl, ein Vektor oder ein logischer Ausdruck (siehe Abschnitt 2.3) sein. Bei logischen Aus-drücken werden dabei nur die Elemente ausgewertet, die TRUE sind.
x <- c(5,6,7,8,9,3,2,1)
x[4] Auf das 4. Element in x zugreifen.
x[9] Beachte: Ist der angegebene Index größer als die Länge des Vek-tors, so erhält man als Ergebnis NA
x[ ] Bleibt die Klammer leer, so werden alle Vektorelementegleichzeitig indiziert.
x[2:5] Auf das 2. - 5. Element in x zugreifen.
x[4] <- NA Der vierte Wert des Vektors x soll fehlen.
x[c(2,4,5)] Auf das 2., 4. und 5. Element von x zugreifen.
x[-5] Liefert alle Elemente des Vektors x mit Ausnahme des 5. Ele-ments.
x[-c(2:4)] Liefert alle Elemente des Vektors x mit Ausnahme des 2. bis 4.Elements.
x[x<=4] Liefert alle Werte von x, die kleiner oder gleich 4 sind.
which(x<=4) Liefert den Index der Werte die kleiner oder gleich 4 sind.
sum(x<=4) Bestimmt die Anzahl der Werte von x, die kleiner oder gleich 4sind
sum(x[x<=4]) Gibt die Summe der Werte derjenigen Elemente an, die kleineroder gleich 4 sind.
Möchte man nur auf die ersten oder letzten k Elemente eines Vektors zugreifen, so können dieFunktionen head( ) und tail( ) verwendet werden.Beispiel:
> head(x,n=3) # entspricht x[1:3][1] 5 6 7> tail(x,n=2) # entspricht x[length(x)-2+1:length(x)][1] 2 1>
Aufgabe: Überprüfen Sie was passiert, wenn für den oben genannten Vektor x der Befehlx[x>8] <- c(-1,-2,-3) eingegeben wird.
Wirtschafts- und Sozialstatistik, Universität Trier Seite 10
Einführung in R Melanie Knobelspies
2.2.7 Fehlende Werte
Enthält ein Vektor fehlende Werte, so lassen sich nicht mehr alle Vektoroperationen ohne weiteresausführen. Bei den meisten Operationen genügt es das logische Argument na.rm=TRUE zu setzen.Beispiel:
> y <- c(2,4,8,10,NA)
> sum(y) # Berechnung nicht möglich
[1] NA
> mean(y)
[1] NA
> sum(y,na.rm=TRUE) # die Summe lässt sich nun berechnen
[1] 24
> mean(y,na.rm=TRUE)
[1] 6>
Für die Berechnung der Kovarianz bzw. der Korrelation zweier Vektoren erfolgt die Berücksichtigungfehlender Werte mit dem Argument use="complete.obs".Dies sorgt dafür, dass alle Fälle eliminiert werden, von denen mindestens ein Element des Paares nichtvorhanden ist.
Mit is.na() kann auf fehlende Werte getestet werden. Weiterhin sollte is.na() auch für das Setzenfehlender Werte verwendet werden. Siehe hierzu folgendes Beispiel (entnommen aus LIGGES, 2006,S. 30).
> x <- c(5,7,NA,22)
> is.na(x)
[1] FALSE FALSE TRUE FALSE
> is.na(x[1])<- TRUE
> x
[1] NA 7 NA 22>
Wirtschafts- und Sozialstatistik, Universität Trier Seite 11
Einführung in R Melanie Knobelspies
2.2.8 Übungsaufgaben zu numeric-Vektoren
1. Generieren Sie anhand des seq Befehls den Vektor:
(−2.0 , −0.5 , 1.0 , 2.5 , 4.0 , 5.5 , 7.0)T
2. Generieren Sie einen Vektor mit 12 Elementen, wobei das kleinste Element 3 und das größteElement 12 ist. Benennen Sie den Vektor a.
3. Generieren Sie einen Vektor mit 12 Elementen, wobei das größte Element 5 und der Abstandzwischen den Elementen jeweils 0.2 beträgt. Benennen Sie den Vektor b.
4. Generieren Sie einen Vektor mit den Einträgen 1 bis 10 und benennen Sie ihn d. Probieren Siedabei verschiedene Möglichkeiten aus.
5. Erstellen Sie folgenden Vektor anhand des rep–Befehls und nutzen sie einmal das Argumentlength und einmal das Argument times.
(1 , 3 , 5 , 1 , 3 , 5 , 1 , 3 , 5)T
6. Lassen Sie sich eine Übersicht über die Objekte im Workspace geben.
7. Löschen Sie die 2 Objekte a und b.
8. Erstellen Sie folgenden Vektor anhand des rep Befehls:
(1 , 1 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 4)T
9. Erstellen Sie folgenden zwei Vektoren:
(22 , 33 , 41 , 50)T
(22 , 32 , 42 , 52)T
10. Berechnen Sie den Mittelwert, sowie die Varianz des Vektors d.
11. Modifizieren Sie den Vektor d, indem Sie dem 4. und dem 5. Element den Wert NA zuweisen undberechnen Sie daraufhin erneut den Mittelwert und die Varianz.
12. Erstellen Sie zwei Vektoren, die eine exakte negative lineare Abhängigkeit aufweisen und berech-nen Sie den Korrelationskoeffizienten. Benennen Sie die Vektoren x und y.
13. Setzten Sie das zweite Element des Vektotrs x auf NA und berechnen Sie die Korrelation erneut.
Hinweis: Die Lösung finden Sie in der Datei Vektor.r
Wirtschafts- und Sozialstatistik, Universität Trier Seite 12
Einführung in R Melanie Knobelspies
2.3 logical–Vektoren
In logischen Vektoren werden Wahrheitswerte gespeichert. Die Wahrheitswerte kennen lediglich dieZustände wshr (TRUE) und falsch (FALSE). Intern werden die logischen Werte von R in numerischeWerte (TRUE=1, FALSE=0) umgewandelt.
> x <- c(150,170,190,210,220)>> x>200>[1] FALSE FALSE FALSE TRUE TRUE>> (x>200)*2>[1] 0 0 0 2 2>
Elementweise logische Operationen
Operator Operation> größer als< kleiner als== genau gleich!= ungleich (Negation)>= größer gleich<= kleiner gleich& und| oder! Negationxor entweder oder
Bei der Kombination von Minus und „kleiner als“ bzw. „größer als“ Zeichen ist ein Leerzeichen er-forderlich.< − wird ansonsten als Zuweisung verstanden.
Zusammenfassende logische Operationen
Neben den elementweise logischen Operationen gibt es noch eine Reihe zusammenfassende logischeOperationen. Diese arbeiten nicht vektorwertig, sondern liefern immer einen einzelnen Wahrheitswert.
Operator Operation&& sequentielles und|| sequentielles oderall sind alle Elemente TRUE?any ist mindestens ein Element TRUE?which Welche Elemente sind TRUE?
Wirtschafts- und Sozialstatistik, Universität Trier Seite 13
Einführung in R Melanie Knobelspies
2.4 character–Vektoren
character–Vektoren bestehen aus Elementen, die Zeichenketten sind. In R müssen Zeichenketten inHochkommatas stehen. Auch hier werden die einzelnen Elemente wieder mir c( ) zu einem Vektorverbunden.
> Fächer <- c("BWL","VWL","Soziologie")> Fächer[1] "BWL" "VWL" "Soziologie"> Weitere.Fächer <- c("Mathematik","Informatik")> FB4 <- c(Fächer,Weitere.Fächer)> FB4[1] "BWL" "VWL" "Soziologie" "Mathematik" "Informatik">
Eine nützliche Funktion bei character–Vektoren ist die Funktion paste( ). Mit paste( ) könneneinzelne Argumente zusammengehängt werden.
>> paste("Statistik","macht","Spaß")[1] "Statistik macht Spaß">
Mit dem Argument sep kann bestimmt werden, welches Zeichen zwischen den einzelnen Argumentensteht (Voreinstellung ist das Leerzeichen).
> paste("Statistik","macht","Spaß",sep=":")[1] "Statistik:macht:Spaß">
2.5 Faktoren
Faktoren dienen zur Abbildung von kategorialen Variablen mit mehreren Ausprägungen. Die k möglichenAusprägungen (in R: levels) eines Faktors werden in R durch die natürlichen Zahlen 1 bis k codiert. Siesind aber mit Zeichenketten assoziierbar, so dass die Bedeutung der Ausprägungen erkennbar bleibt(vgl. EICHNER, 2005, S. 26).
> Tiere <-c("Hund","Pferd","Katze","Pferd","Pferd","Hund","Katze")> Tiere
[1] "Hund" "Pferd" "Katze" "Pferd" "Pferd" "Hund" "Katze"
Wirtschafts- und Sozialstatistik, Universität Trier Seite 14
Einführung in R Melanie Knobelspies
> Tiere <- factor(Tiere)> Tiere>[1] Hund Pferd Katze Pferd Pferd Hund Katze
Levels: Hund Katze Pferd>>> attributes(Tiere)$levels[1] "Hund" "Katze" "Pferd"
$class[1] "factor"
>
Die einzelnen Stufen werden dabei gemäß der lexographischen Ordnung angelegt. Für eine andereAnordnung sorgt der Parameter levels.
> Tiere2 <-factor(c("Hund","Pferd","Katze","Pferd","Pferd","Hund"),levels=c("Pferd","Katze", "Hund"))
>> Tiere2
[1] Hund Pferd Katze Pferd Pferd HundLevels: Pferd Katze Hund
Eine Umbenennung der Argumente kann mit der Funktion labels() erzielt werden.
> factor(Tiere2,labels=c("Haflinger","Perserkatze","Schäferhund"))
[1] Schäferhund Haflinger Perserkatze Haflinger Haflinger Schäferhund
Levels: Haflinger Perserkatze Schäferhund
Mit dem Befehl ordered() können geordnete Faktoren erzeugt werden. Für die Levelordnung wirdhierbei die lexographische Levelsortierung verwendet.
> Tierpreis <- ordered(Tiere, levels=c("Katze","Hund","Pferd"))>> Tierpreis[1]>Tierpreis[3][1] TRUE> Tierpreis[1]>Tierpreis[2][1] FALSE>> levels(Tiere)[1] "Katze" "Hund" "Pferd"
Wirtschafts- und Sozialstatistik, Universität Trier Seite 15
Einführung in R Melanie Knobelspies
Sollen den einzelnen Stufen Zahlenwerte zugeordnet werden, so benötigt man den Befehl unclass.
> unclass(Tiere)>[1] 1 3 2 3 3 1 2attr(,"levels")[1] "Hund" "Katze" "Pferd">
Die Funktion table( ) liefert eine Häufigkeitsauszählung von nominal skalierten Variablen. Hier-aus lässt sich dann die relative Häufigkeit berechnen.
> table(Tiere)
TiereHund Katze Pferd
2 2 3>> rel.Hfkt <- table(Tiere)/length(Tiere)> rel.HfktTiere
Hund Katze Pferd0.2857143 0.2857143 0.4285714>
Mit dem Befehl cut() kann eine numeric–Variable in eine factor–Variable umgewandelt werden. Mitbreaks() können die Klassengrenzen bestimmt werden.
> Alter <- rnorm(100,30,5)> Alter<-round(Alter,digits=0)> Alter
[1] 35 23 30 38 23 34 25 27 33 34 36 27 ...[25] 31 37 29 26 20 34 25 29 26 23 27 37 ...
...Alterklass<- cut(Alter,breaks=c(0,25,30,40),
labels=c("-25","25-30","30+"))Alterklass
[1] 30+ -25 25-30 30+ -25 30+ -25 ...[25] 30+ 30+ 25-30 25-30 -25 30+ -25 ...
...
Levels: -25 25-30 30+
> table(Alterklass)Alterklass
-25 25-30 30+28 32 39
Wirtschafts- und Sozialstatistik, Universität Trier Seite 16
Einführung in R Melanie Knobelspies
2.6 Listen
Eine Liste ist eine geordnete Sammlung von Objekten in R. Im Gegensatz zu Vektoren können in einerListe auch Objekte unterschiedlichen Typs geführt werden. Listen werden mit der Funktion list( )erzeugt (vgl. SACHS und HEDDERICH, 2006, S. 636).
> Liste1 <- list("Zahlen"=1:5,"Buchstaben"=c("A","B","C"),"Logik"=c(T,T,F,F))
> Liste1$Zahlen[1] 1 2 3 4 5
$Buchstaben[1] "A" "B" "C"
$Logik[1] TRUE TRUE FALSE FALSE
>
Auf die einzelnen Listenelemente kann mittels $ bzw. [[ ]] zugegriffen werden.
> names(Liste1)[1] "Zahlen" "Buchstaben" "Matrix"
> length(Liste1)[1] 3
> Liste1$Zahlen[1] 1 2 3 4 5
> Liste1$Buchstaben[1] "A" "B" "C"
> Liste1[[3]]> Liste1[[3]][1] TRUE TRUE FALSE FALSE
> Liste1$Buchstaben[2][1] "B">> Liste1[[3]][1][1] TRUE
Aufgabe: Erzeugen Sie eine Liste mit 3 Variablen und jeweils 4 Beobachtungen: Geschlecht= m, w, w,m; Einkommen=2599,2200,3000,4000; verheiratet= T, F, F, T
Wirtschafts- und Sozialstatistik, Universität Trier Seite 17
Einführung in R Melanie Knobelspies
2.7 Matrizen
2.7.1 Generierung von Matrizen
Eine Matrix besteht aus einer beliebigen Anzahl von Vektoren gleichen Typs (numeric !) und gleicherLänge. Die Anzahl der Zeilen und der Spalten legt die Dimension der Matrix (Zeile × Spalte) fest.
X =
a11 a12 . . . aik
a21 a22 . . . a2k...
...an1 a12 . . . ank
Am einfachsten können Matrizen in R durch Zusammenfügung von Vektoren erzeugt werden. Mit derFunktion rbind( ) gechieht dies zeilenweise (r steht für row) und mit der Funktion cbind( )spaltenweise (c steht für column).
>> a <- c(1,2,3,4,5,6)> b <- rep(1,6)> X <- cbind(a,b)> Y <- rbind(a,b)> X
a b[1,] 1 1[2,] 2 1[3,] 3 1[4,] 4 1[5,] 5 1[6,] 6 1> Y
[,1] [,2] [,3] [,4] [,5] [,6]a 1 2 3 4 5 6b 1 1 1 1 1 1
Matrizen können auch direkt über den matrix( ) Befehl erzeugt werden.
> X <- matrix(data=1:12,nrow=4,ncol=3) # Achtung die alte X Matrix# wird jetzt überschrieben
> X[,1] [,2] [,3]
[1,] 1 5 9[2,] 2 6 10[3,] 3 7 11[4,] 4 8 12
Wirtschafts- und Sozialstatistik, Universität Trier Seite 18
Einführung in R Melanie Knobelspies
• Der Parameter data legt die Elemente der Matrix fest.
• Der Parameter ncol legt die Spalten der Matrix fest.
• Der Parameter nrow legt die Zeilen der Matrix fest.
Mit dem Argument byrow=T wird eine zeilenweise Belegung der Matrix mit den Daten erreicht (de-fault ist byrow=F, also eine spaltenweise Belegung).
> Z <- matrix(data=1:12,nrow=4,ncol=3,byrow=T)> Z
[,1] [,2] [,3][1,] 1 2 3[2,] 4 5 6[3,] 7 8 9[4,] 10 11 12
Eine dritte Möglichkeit Matrizen in R zu generieren, ergibt sich durch die Verwendung des dim( )Befehls.
> A <-1:15> dim(A)<-c(5,3)> A
[,1] [,2] [,3][1,] 1 6 11[2,] 2 7 12[3,] 3 8 13[4,] 4 9 14[5,] 5 10 15
2.7.2 Arbeiten mit Matrizen
Addition und Subtraktion zweier Matrizen X und ZBeachte: gleiche Dimension!
X - Z
Multiplikation einer Matrix X mit einer Konstanten a a * X
Transponierte Matrix XT t(X)
Matrixmultiplikation: XT Z mit dem Operator % ∗% t(X) %*% Z
Berechnung des Kreuzprodukts XT X crossprod(X)
Matrixinversion: X−1 solve(X)
Wirtschafts- und Sozialstatistik, Universität Trier Seite 19
Einführung in R Melanie Knobelspies
Weiterhin erlaubt R die Abfrage bestimmter Matrixeigenschaften:
• dim(X) : Dimension der Matrix
• nrow(X) : Anzahl der Spalten
• ncol(X) : Anzahl der Zeilen
• mode(X) : Typ der Elemente
Zugriff auf einzelne Elemente einer Matrix, auf komplette Spalten oder auf komplette Zeilen geschieht(wie bei Vektoren) mittels eckigen Klammern.
Für die Matrix X
X =
1 2 34 5 67 8 9
liefert X[1,] die erste Zeile der Matrix (1,2,3), während X[,2] die zweite Spalte der Matrix angibt(2,5,8).Einen einzelnen Wert erhält man über X[Zeile,Spalte]. So liefert beispielsweise X[2,3] denWert 6.
2.7.3 Zuweisung von Variablennamen
Sollen den einzelnen Zeilen und Spalten einer Matrix Namen zugewiesen werden, so geschieht dies mitder Funktion dimnames( ).
>> dimnames(Z)NULL>>> Spalten <- c("Variable 1","Variable 2","Variable 3")>> Zeilen <- c("Beobachtung 1","Beobachtung 2","Beobachtung 3",
"Beobachtung 4")> dimnames(Z) <- list(Zeilen,Spalten)> Z
Variable 1 Variable 2 Variable 3Beobachtung 1 1 2 3Beobachtung 2 4 5 6Beobachtung 3 7 8 9Beobachtung 4 10 11 12>
Wirtschafts- und Sozialstatistik, Universität Trier Seite 20
Einführung in R Melanie Knobelspies
>> dimnames(Z)[[1]][1] "Beobachtung 1" "Beobachtung 2" "Beobachtung 3" "Beobachtung 4"
[[2]][1] "Variable 1" "Variable 2" "Variable 3"
>
Nun kann auf die Zeilen und Spalten der Matrix X auch mit ihrem Namen zugegriffen werden (beachtehierbei die Hochkommatas).
>> X[,Variable 2]Fehler: Syntaxfehler in Zeile "X[,Variable 2"> X[,"Variable 2"]Beobachtung 1 Beobachtung 2 Beobachtung 3 Beobachtung 4
13 17 5 3> X["Beobachtung 2","Variable 2"][1] 17>> X["Beobachtung 1",c("Variable 1","Variable 3")]Variable 1 Variable 3
9 1>
Wirtschafts- und Sozialstatistik, Universität Trier Seite 21
Einführung in R Melanie Knobelspies
2.8 Data.frames
Ein Data. frame ist eine Kombination aus Liste und Matrix. Er enthält Vektoren unterschiedlichen Typs(Merkmale, Variablen) gleicher Länge, wie sie im Rahmen von Erhebungen und Experimenten häufigauftreten. Diese Datenrahmen können durch die Funktion data.frame( ) aus Vektoren erzeugt oderaus externen Dateien mit der Funktion read.table( ) in R eingelesen werden (vgl. SACHS undHEDDERICH, 2006, S. 636).
> Gehalt <- data.frame(Alter=c(23,25,30,45,35),Einkommen=c(1000,3000,3500,4000,2500),Geschlecht=c("m","w","w","m","m"))
> GehaltAlter Einkommen Geschlecht
1 23 1000 m2 25 3000 w3 30 3500 w4 45 4000 m5 35 2500 m
In Analogie zu Matrizen besitzt ein data.frame auch eine Dimension, die über dim( ) abgefragt wer-den kann.Die Länge hingegen entspricht nicht der Anzahl der Elemente, sondern der Anzahl der Spalten einesdata.frames.
> is.data.frame(Gehalt)[1] TRUE
> length(Gehalt)[1] 3 # vgl. mit length(as.matrix(Gehalt))
> dim(Gehalt)[1] 5 3
Um eine Variable anzusprechen, vewendet man das $-Zeichen .
> Gehalt$Alter # oder Gehalt[1][1] 23 25 30 45 35
Alternativ kann mittels attach(Datensatz) der Datensatz an zweiter Stelle des Objektsuchpfadesangebracht werden. Somit können einzelne Variablen direkt angesprochen werden.Mit detach( ) wird der Datensatz wieder aus dem Objektsuchpfad entfernt.
> attach(Gehalt)> Einkommen[1] 1000 3000 3500 4000 2500> detach(Gehalt)> EinkommenFehler: objekt "Einkommen" nicht gefunden
Wirtschafts- und Sozialstatistik, Universität Trier Seite 22
Einführung in R Melanie Knobelspies
2.9 Aufgaben zu Matrizen und Data.frames
1. Erzeugen Sie folgende Matrix X1 und transponieren Sie diese.
X1 =
9 13 15 17 58 5 71 3 4
2. Greifen Sie die entsprechenden Zeilen und Spalten der Matrix X ab, so dass sie die reduzierte
Matrix X2 erhalten.
X2 =
(5 17 58 5 7
)3. Erweitern Sie die Matrix X2 um die Zeile (10, 10, 10) und benennen Sie Ihre neue Matrix X3.
4. Berechnen Sie das Kreuzprodukt von X3 und bilden Sie die Inverse davon. Was fällt Ihnen auf?
5. Benennen Sie die einzelnen Zeilen und Spalten der Matrix X3 mit frei gewählten Namen.
6. Berechnen Sie die Kovarianz sowie die Korrelation zwischen den Elementen der Matrix X3.
7. Setzen Sie alle Elemente der Matrix X3, die größer als 8 sind, auf NA.
8. Erstellen Sie folgenden data.frame:
Semesterzahl Alter Studiengang Geschlecht4 22 VWL m7 25 BWL w5 24 VWL m4 21 Soz m9 25 VWL w8 26 VWL m2 23 BWL w3 21 Soz m
• Berechnen Sie das mittlere Alter.
• Wandeln Sie die Variable Geschlecht in einen Faktor um.
• Teilen Sie den Datensatz anhand des Geschlechts in zwei getrennte Datensätze.
• Stellen Sie die Häufigkeitsverteilung des Studienfachs graphisch dar (Hinweis: BenutzenSie den barplot( ) Befehl).
• Wandeln Sie den Datensatz in eine Matrix um. Verwenden Sie einmal den Befehl as.matrix( )und einmal den Befehl data.matrix( ). Worin liegt der Unterschied zwischen diesenbeiden Befehlen?
• Betrachten Sie nur den reduzierten data.frame der VWL– und BWL–Studenten. BenutzenSie hierbei den subset() Befehl.
Hinweis: Die Lösung finden sie in der Datei Matrizen.r
Wirtschafts- und Sozialstatistik, Universität Trier Seite 23
Einführung in R Melanie Knobelspies
3 Zufallsvariablen in R
In R existieren Funktionen, um Werte von Dichte– und Verteilungsfunktionen sowie Quantile von Zu-fallsvariablen mit vorgegebener Verteilung zu berechnen. Den gewünschten Verteilungen wird jeweilsnach Fragestellung der Buchstabe d, p, oder q vorangestellt. Weiterhin besteht die Möglichkeit sich inR (Pseudo–) Zufallszahlen gemäß der gewünschten Verteilung erzeugen zu lassen.
Anfangsbuchstabe Art der Funktion
d (density) Dichte– bzw. Wahrscheinlichkeitsfunktion
p (probability) Verteilungsfunktion
q (quantiles) Berechnung von Quantilen
r (random) Erzeugung von Pseudo–Zufallszahlen
Die nachfolgende Tabelle enthält eine Übersicht über die gebräuchlichsten Verteilungen. Es wird jeweilsx durch d, p, q oder r ersetzt.
Verteilung Funktion
Normalverteilung xnorm( )
Binomialverteilung xbinom( )
χ2-Verteilung xchisq( )
Logistische Verteilung xlogis( )
Exponentialverteilung xexp( )
F–verteilung xf( )
t–verteilung xt( )
Gleichverteilung xunif( )
Hypergeometrische Verteilung xhyper( )
Poisson Verteilung xpois( )
Betrachtet man beispielsweise eine binomialverteilte Zufallsvariable mit den Parametern n = 10 undθ = 0,6
b(x|10, 0,6) =
(
10
x
)· 0,6x · (1− 0,6)10−x für x = 0, 1, 2, . . . , 10
0 sonst
so ergeben sich die Wahrscheinlichkeiten W (X = 0), W (X = 1), W (X = 2), W (X = 3), W (X = 4)über den Befehl:
dbinom(0:4,size=10,prob=0.6)
Die entsprechenden Wahrscheinlichkeiten der Verteilungsfunktion, also W (X ≤ 0), W (X ≤ 1),W (X ≤ 2), W (X ≤ 3), W (X ≤ 4) dieser Zufallsvariable erhält man über:
pbinom(0:4,size=10,prob=0.6)
Wirtschafts- und Sozialstatistik, Universität Trier Seite 24
Einführung in R Melanie Knobelspies
Gibt man zusätzlich noch das Argument lower.tail=FALSEmit, so lässt sich die Gegenwahrschein-lichkeit W (X > . . .) berechnen.
Ist man hingegen an den Quantilen interessiert, so liefert die Funktion
qbinom(c(0.1,0.9),size=10,prob=0.6)
die Werte, an welchen die Verteilungsfunktion die Wahrscheinlichkeit 0,1 bzw. 0,9 besitzt (qbinom istalso die Umkehrfunktion von pbinom).
Mit rbinom(20,10,0.6) erhält man hingegen 20 binomialverteilte Zufallszahlen, die einer Bino-mialverteilung mit den Parametern n = 10 und θ = 0,6 folgen.
Durch die Verwendung des Befehls set.seed( ) kann eine Reproduzierbarkeit der Zufallsvariablenerzeugt werden.
>set.seed(123)>rbinom(20,10,0.6)[1] 7 5 6 4 4 9 6 4 6 6 3 6 5 6 8 4 7 9 7 3>rbinom(20,10,0.6)[1] 4 5 5 2 5 5 6 6 7 8 3 4 5 5 9 6 5 7 7 7>set.seed(123)>rbinom(20,10,0.6)[1] 7 5 6 4 4 9 6 4 6 6 3 6 5 6 8 4 7 9 7 3
Beispiel:
Die nachfolgende Graphik lässt sich mit folgendem R–Code erzeugen:
x <- seq(-5,5,by=0.1)ZV1 <-dnorm(x,0,1)ZV2 <-dnorm(x,0,2)plot(x,ZV1,type="l",main="Dichtefunktionen")lines(x,ZV2,type="l",col="red")text(1.3,0.36,"ZV1")text(3,0.1,"ZV2",col="red")
Alternativ geht auch:
Vtlg1 <-pnorm(x,0,1)Vtlg2 <-pnorm(x,0,2)plot(x,Vtlg1,type="l",main="Verteilungsfunktionen")lines(x,Vtlg2,type="l",col="red")
−4 −2 0 2 4
0.0
0.1
0.2
0.3
0.4
Dichtefunktionen
x
ZV
1
ZV1
ZV2
Wirtschafts- und Sozialstatistik, Universität Trier Seite 25
Einführung in R Melanie Knobelspies
Aufgaben zu Zufallsvariablen
1. Was liefert pnorm(c(-2,3))?
2. Was liefert qnorm(0.2,2,3)?
3. Berechnen Sie die Wahrscheinlichkeiten für X = 0, 2, . . . , 10 von 20 poissonverteilten Zufallsvari-ablen mit Parameter λ = 2,5 und zeichnen Sie die Wahrscheinlichkeitsfunktion.Hinweis: Benutzen Sie den plot( ) Befehl mit dem Argument type="h".
4. Berechnen Sie die entsprechenden Werte der Verteilungsfunktion der Zufallsvariablen aus 3.
5. Wie groß ist die Wahrscheinlichkeit in 10 Münzwürfen vier mal Kopf zu erzielen?
6. Wie groß ist die Wahrscheinlichkeit in 10 Münzwürfen mehr als vier mal Kopf zu erzielen?
7. Angenommen 1% aller Schulkinder können vor ihrer Einschulung schon lesen und schreiben.Wie groß ist die Wahrscheinlichkeit, dass in einer 1. Klasse von 30 Schülern keines, 1 Kind bzw.2 Kinder schon lesen und schreiben können?
8. Generieren Sie 50 standardnormalverteilte Zufallszahlen und stellen Sie diese anhand eines (rel-ativen) Histogramms graphisch dar. Schätzen Sie µ und σ2 ihrer Stichprobe und zeichnen Sie dieDichtefunktion der Normalverteilung mit den geschätzten Parametern µ und σ2 in die bestehendeGraphik ein.
9. Generieren Sie 50 binomialverteilte Zufallszahlen mit Parameter θ = 0,25. Zeigen Sie anhandeiner geeigneten Graphik, inwieweit die Binomialverteilung durch die Normalverteilung approx-imiert werden kann.Hinweis: µ = n · θ , σ2 = n · θ · (1− θ)
10. In einer Population von jungen Frauen sei die Körpergröße normalverteilt mit µ = 166,5 cm undσ = 6,5 cm.
(a) Bestimmen Sie ein 95% Konfidenzintervall.
(b) Simulieren Sie das Ziehen einer Stichprobe vom Umfang n = 9 aus dieser Population. Wiegroß ist der Mittelwert und die Standardabweichung Ihrer Stichprobe? Was für einen Werterwarten Sie?
(c) Berechnen Sie aus Ihrer Stichprobe ein 95%–Konfidenzintervall für µ. Liegt µ, das Sie ausder Aufgabenstallung kennen innerhalb dieses Intervalls?
11. Bei einem Klassentreffen des Abiturjahrgangs 2003 unterhalten sich die N = 400 Teilnehmerüber ihren beruflichen Werdegang. Aus den Gesprächen wird ersichtlich, dass sich 270 Teilnehmeran einer Universität eingeschrieben haben. Bei einer zufälligen Stichprobe (Modell ohne Zurück-legen) vom Umfang n = 18 wurde die Anzahl der Studenten in der Stichprobe ermittelt.
(a) Bestimmen Sie die Wahrscheinlichkeit, dass genau 12 Studenten in der Stichprobe enthaltensind (Hinweis: Verwenden Sie die Hypergeometrische Verteilung).
(b) Bestimmen Sie die Wahrscheinlichkeit, dass höchstens 15 Studenten in der Stichprobe en-thalten sind. Benutzen Sie hierbei die Approximation durch die Standardnormalverteilungmit den Parametern µ = n · M
Nund σ2 = n · M
N· (1− M
N) · N−n
N−1.
Wirtschafts- und Sozialstatistik, Universität Trier Seite 26
Einführung in R Melanie Knobelspies
12. In einer Schokoladenfabrik werden täglich 500 000 Schokoladentafeln XXL produziert. Bei ein-er Zufallsstichprobe von n = 41 Tafeln wurde ein durchschnittliches Gewicht einer Tafel von202 Gramm ermittelt. Der Mittelwert des Gewichts aller produzierten Tafeln ist unbekannt. Ausvorangegangenen Untersuchungen ist jedoch bekannt, dass die Standardabweichung 10g beträgt.Ferner darf von einer normalverteilten Grundgesamtheit ausgegangen werden.
(a) Ermitteln Sie ein 90% Konfidenzintervall für das durchschnittliche Gewicht einer Schoko-ladentafel und begründen Sie, warum von einem Modell mit Zurücklegen ausgegangen wer-den darf.Hinweis: KI für µ bei normalverteilter GG und bekanntem σ2:[
x− z(1− α/2) · σ√n
; x + z(1− α/2) · σ√n
](b) Angenommen die Varianz σ2 sei unbekannt. Aus der Stichprobe sei jedoch die Varianz
s2 = 90 g2 bekannt. Bestimmen Sie ein 95% Konfidenzintervall für die Varianz σ2 desdurchschnittlichen Gewichts.Hinweis: KI für σ2 bei normalverteilter GG:[
(n− 1) · s2
χ2(1− α2
; n− 1);
(n− 1) · s2
χ2(α2
; n− 1)
]
Hinweis: Die Lösung befindet sich in der Datei Zufallsvariable.r
Wirtschafts- und Sozialstatistik, Universität Trier Seite 27
Einführung in R Melanie Knobelspies
4 Stichproben in R
Für das Ziehen von Stichproben gibt es in R die Funktion sample(). Hierbei wird aus dem Vektor xeine Stichprobe der Größe n gezogen. Mit replace kann bestimmt werden, ob das Modell mit oderohne Zurücklegen zugrunde liegt.
sample(x, size, replace = FALSE, prob = NULL)
> #Simulation von 50 Würfelwürfen>> x <- 1:6>> stichprobe <- sample(x,size=50,replace=T) #Modell mit ZL>> table(stichprobe)stichprobe1 2 3 4 5 69 9 6 7 9 10>
Mit der Option prob können den einzelnen Elemeneten von x unterschiedliche Wahrscheinlichkeitenzugeordnet werden. Wird hier nichts angegeben, hat jedes Element von x dieselbe Wahrscheinlichkeit.
Beispiel
Eine Urne enthält 4 Kugeln die 50g wiegen und 6 Kugeln, die 100g wiegen. Aus dieser Urne soll nuneine Stichprobe (Modell mit Zurücklegen) des Umfangs n = 3 gezogen werden.
sample(x=c(50,100),size=3,replace=TRUE,prob=c(0.4,0.6))[1] 100 50 50
Natürlich geht auch hier wieder die Kurzschreibweise.
sample(c(50,100),3,TRUE,c(0.4,0.6))
Beachte: Mit Hilfe der probOption können Sie keine validen Ziehungen mit unterschiedlichen Auswahl-wahrscheinlichkeiten erzeugen. Dazu dient das Paket sampling.
Wirtschafts- und Sozialstatistik, Universität Trier Seite 28
Einführung in R Melanie Knobelspies
5 Kontroll–Strukturen
Kontroll–Strukturen werden benötigt, wenn man häufiger die gleiche Anweisungsfolge bei eventuellunterschiedlichen Parameterkonstellationen ausführen will (vgl. SCHLITTGEN, 2004, S. 307). In R sinddas bedingte Anweisungen und Schleifen.
5.1 Bedingte Anweisungen
if (Bedingung){Ausführen falls Bedingung wahr}
else{Ausführen falls Bedingung falsch}
• Beachte: Die Bedingung in dieser Form darf nicht vektorwertig sein, bzw. wird dann nur das ersteElement des Vektors ausgewertet.
• Die Bedingung kann ein komplexer logischer Ausdruck sein, der entsprechend auch und und oderVerknüpfungen enthält.
• Daneben existiert noch eine Kurzform für die vektorwertige Auswertung von Bedingungen.
ifelse(Bedingung, Ja, Nein)
• Dieser Befehl hilft insbesondere bei Kodierung von Variablen.
5.2 Schleifen
for(i in M) {Ausdruck} Wiederholung des Ausdrucks für jedes i ∈ M
while (Bedingung) Wiederholung so lange ein bestimmtes Kriterium erfüllt ist
repeat{Ausdruck} Im Gegensatz zur while–Schleife, kennt die repeat–Schleifekein Abbruchkriterium, sondern kann nur mit break beendetwerden.
break Sofortiges Verlassen der Schleife
next Sprung in den nächsten Iterationsschritt
Wirtschafts- und Sozialstatistik, Universität Trier Seite 29
Einführung in R Melanie Knobelspies
5.3 Schleifen vermeiden
• Schleifen mit vielen Durchläufen, insbesondere auch ineinander geschachtelte Schleifen könnensehr langsam sein.
• Wenn möglich: Verwendung alternativer Befehle, die eine Operation auf alle Elemente eines Ob-jekts (Liste, Vektor, Matrix, Data.frame) anwenden.
• Hierbei stehen die Befehle apply( ),lapply( ),sapply( ) und tapply( ) zur Ver-fügung.
apply Spalten- und zeilenweises Anwenden einer Funktion auf Matrizen und Ar-rays. Der Aufruf geschieht über apply( X, margin, FUN,...),wobei das Argument margin für die beizubehaltende Dimensionsnummer (1für Zeilen, 2 für Spalten) steht und FUN für die Funktion, die auf jede Zeilebzw. Spalte der Datenmaterix X angewendet werden soll.
lapply Spalten- und zeilenweises Anwenden einer Funktion auf Listen und Vektoren.Als Ergebnis wird eine Liste zurückgeliefert.
sapply Spalten- und zeilenweises Anwenden einer Funktion auf Listen und Vektoren.Im Gegensatz zu lapply( ) wird hier jedoch versucht, die Ergebnisse alsVektor auszugeben.
mapply Multivariates sapply
tapply Anwendung einer Funktion auf Datensätze, welche bezüglich einer Variablengruppiert vorliegen. Die Funktion wird für jede Gruppe separat angewandt.
• Für die schnelle Berechnung von Zeilen– und Spaltensummen, sowie von Zeilen– und Spal-tenmittelwerten, stehen die Funktionen rowSums( ), colSums( ), rowMeans( ) undcolMeans( ) zur Verfügung.
• Auch der Befehl replicate(n,Ausdruck) kann für Wiederholungen verwendet werden.Der mitgegebene Ausdruck wird hierbei n−mal wiederholt.
• Wenn immer möglich: Vektor–Befehle verwenden.
Wirtschafts- und Sozialstatistik, Universität Trier Seite 30
Einführung in R Melanie Knobelspies
Beispiele:
> A <- matrix(c(1:10,rep(5,10)),ncol=2)> A
[,1] [,2][1,] 1 5[2,] 2 5[3,] 3 5[4,] 4 5[5,] 5 5[6,] 6 5[7,] 7 5[8,] 8 5[9,] 9 5[10,] 10 5
> apply(A,1,sum)[1] 6 7 8 9 10 11 12 13 14 15
> apply(A,2,sum)[1] 55 50>
> lapply(1:3,sqrt)[[1]][1] 1
[[2]][1] 1.414214
[[3]][1] 1.732051
> sapply(1:3,sqrt)[1] 1.000000 1.414214 1.732051>
> a <- 1:10> Index <- c(1,1,1,1,1,2,2,2,2,3)> tapply(a,Index,sum)1 2 315 30 10
Wirtschafts- und Sozialstatistik, Universität Trier Seite 31
Einführung in R Melanie Knobelspies
5.4 Exkurs: Eigene Funktionen schreiben
Eine Funktionsdefinition geschieht mittels function( ) und hat die Form
Funktionsname <- function(Argumente){Befehlsfolge
}
• Beim Aufruf der Funktion werden die Argumente als Objekte an die Befehlsfolge der Funktionweitergereicht.
• Alles in den geschweiften Klammern wird beim Aufruf der Funktion ausgeführt.
• Das in der letzten Zeile erzeugte Objekt wird nach dem Aufruf zurück gegeben.
• Mit return( ) kann der Wert an einer anderen Stelle zurück gegeben werden.
• Beispiel: Funktion für die Standardabweichung:
> stdabw <- function(x){+ anzahl <- length(x)+ summe <- sum(x)+ mittel <- summe/anzahl+ saq <- sum((x-mittel)^2)+ abw <- (sqrt(saq/anzahl-1))+ return(abw)+ }>> a <- c(3,6,7,10,13,14,18)>> stdabw(a)[1] 4.718613>
• Mehrere Ergebnisse können in einer Liste mit list( ) zusammengefasst werden.
• print( ) bzw. cat( ) eignen sich zur Ausgabe von Informationen oder Objekten in Textformauf die Konsole oder in Textdateien.
• Es besteht auch die Möglichkeit die Argumente einer Funktion mit einer Standardbelegung zuversehen.
• Vorzeitiges Beenden einer Funktion geschieht mit dem Befehl stop("Fehlermeldung").
• Mit der Funktion missing( ) lässt sich überprüfen, ob alle benötigten Argumente einer Funk-tion angegeben sind.
• Eine Abfrage der Zeit (d.h. wie lang die Funktion für die Berechnung braucht) erhält man überden Befehl system.time(Funktion)[3].
Wirtschafts- und Sozialstatistik, Universität Trier Seite 32
Einführung in R Melanie Knobelspies
Aufgaben
1. Gummibärchen gibt es in 5 verschiedenen Farben mit folgenden Wahrscheinlichkeiten:
Farbe rot gelb grün orange weißWahrscheinlichkeit 0,3 0,3 0,15 0,15 0,1
Eine kleine 100g Tüte enthält ca. 60 Gummibärchen. Simulieren Sie eine solche Gummibärchen-tüte und zählen Sie die Anzahl Gummibärchen pro Farbe.
2. Laden Sie aus der library car den Datensatz Prestige. Untersuchen Sie die Verteilung der Vari-ablen income.Nehmen Sie an, dass es sich bei diesem Datensatz um eine Grundgesamtheit handelt. Ziehen Sieeine Zufallsstichprobe des Umfangs n = 50 der Variablen income, und schauen Sie sich dieVerteilung des Einkommens dieser Stichprobe an.Wiederholen Sie den Vorgang r-mal (variieren Sie r mit 50, 100, 200, 500) und ermitteln Siejeweils die Mittelwerte dieser r Stichproben. Schauen Sie sich die Verteilung der Mittelwerte an.Welche Verteilung vermuten Sie?
3. Schreiben Sie eine Funktion für das geometrische Mittel.Hinweis:
g =n∏
i=1
(xi)1n = exp
(1
n
n∑i=1
log(xi)
)
4. Schreiben Sie eine Funktion zur Berechnung der Dichte einer Normalverteilung an einer be-liebigen Stelle x. Bauen Sie in die Funktion anhand einer if–else–Bedingung eine Kontrolle ein,welche darauf achtet, dass der Wert x in der Funktion angegeben wird.Hinweis: Die Dichte der Normalverteilung an der Stelle x ∈ R ist gegeben durch:
f(x) =1√
2πσ2exp
(−(x− µ)2
2σ2
)5. Schreiben Sie eine Funktion zur Berechnung eines t−Tests für zwei unverbundene Stichproben
(Annahme: NV, Varianz unbekannt aber identisch).
Testwert =X1 −X2√
S2 · ( 1n1
+ 1n2
)mit S2 =
(n1 − 1)S21 + (n2 − 1)S2
2
n1 + n2 − 2
6. Schreiben Sie eine Funktion für ein Würfelexperiment. Ein Würfel soll n = 10-mal geworfenwerden und die Funktion soll folgendes in Form einer Liste ausgeben:
• Die geworfenen Zahlen.
• Eine Häufigkeitstabelle der geworfenen Zahlen.
• Wie oft die Augenzahl 5 geworfen wurde.
Hinweis: Die Lösung befindet sich in der Datei Funktionen.r
Wirtschafts- und Sozialstatistik, Universität Trier Seite 33
Einführung in R Melanie Knobelspies
6 Graphiken in R
R unterscheidet zwischen sogenannten High Level Graphiken und Low Level Graphiken. High Lev-el Graphiken öffnen ein eigenes Graphikausgabefenster und erlauben eine vollständige Graphik mitAchsen und Beschriftungen. Mit Low Level Graphiken hingegen können zusätzliche Punkte, Linien,Beschriftungen oder ähnliches zu einer schon bestehenden Graphik hinzugefügt werden. Low LevelGraphiken dienen somit zur Modifizierung und Erweiterung von High Level Graphiken (siehe hierzuauch Kapitel 8 in LIGGES, 2006).
6.1 High Level Graphiken
Der plot Befehl
Die wichtigste High Level Graphik ist die plot( ) Funktion. Je nach mitgegebenen Argumentenliefert diese Funktion andere Graphikausgaben. In der einfachsten Form plot(x) wird ein Indexplotdes Vektors x erstellt. Mit dem Befehl plot(x,y) werden die Werte von x gegen die Werte vony abgetragen. Hierbei erfolgt eine automatische Achsenskalierung, so dass der gesamte Wertebereichbeider Variablen abgedeckt ist.
Durch das Argument type kann die Darstellungsform festgelegt werden (vgl. DOLIC, 2004, S. 78).
• type="p" erzeugt Punkte (Voreinstellung);
• type="l" erzeugt eine durchgezogene Linie;
• type="h" erzeugt vertikale Linien;
• type="s" erzeugt eine Treppenfunktion;
• type="b" erzeugt eine Linie mit Punkten bei den Werten;
• type="c" erzeugt eine Linie mit Lücken bei den Werten;
• type="o" erzeugt eine durchgezogene Linie mit Punkten bei den Werten;
• type="n" erzeugt lediglich ein leeres Koordinatensystem.
Wirtschafts- und Sozialstatistik, Universität Trier Seite 34
Einführung in R Melanie Knobelspies
Neben dem Argument type für die Darstellungsform, existieren noch einige weitere Argumente, dieder plot( ) Funktion mitgegeben werden können. Die am häufigsten benutzen Argumente könnender nachfolgenden Tabelle entnommen werden.
Argument Bedeutung
log Logarithmische Darstellung der Achsen:log="x" : Die X–Achse wird logarithmisch dargestellt.log="y" : Die Y –Achse wird logarithmisch dargestellt.log="xy" : Beide Achsen werden logarithmisch dargestellt.
xlim Skalierung der X–Achsexlim=c(1,10) : Die X–Achse erhält einen Wertebereich von 1 bis 10.ylim=c(1,10) : Die Y –Achse erhält einen Wertebereich von 1 bis 10.Beachte: Punkte und Linien, die außerhalb dieses Bereiches liegen, werden ohneWarnung ignoriert.
pch plotting character: Legt das Symbol für die eingezeichneten Punkte fest. Zulässigsind hier Buchstaben oder eine Zahl zwischen 1 und 25, wobei jede Zahl für einbestimmtes Zeichen steht.
col Legt die Farbe der Graphik fest.
lty Legt das Linienmuster fest.Hierbei können die Zahlen 0 bis 6 eingegeben werden, wobei 0 für eine unsichtbareLinie steht.
lwd Legt die Linienbreite fest.
cex Legt die Größe der Zeichen fest.
main Hiermit kann der Titel der Graphik bestimmt werden. Dieser erscheint dann in ver-größerter Schrift am oberen Rand der Graphik.
sub Mit diesem Befehl kann ein Untertitel festgelegt werden, der am unteren Rand derGraphik erscheint.
xlab Beschriftung der X–Achsen.ylab Beschriftung der Y –Achsen.
Wirtschafts- und Sozialstatistik, Universität Trier Seite 35
Einführung in R Melanie Knobelspies
Argument Bedeutung
axes Der Befehl axes=FALSE unterdrückt das Zeichnen der Achsen.
las Ausrichtung der Achsenskalenbeschriftung.las=0 : Text steht waagrecht zur jeweiligen Achse.las=1 : Text steht waagrecht.las=2 : Text steht senkrecht zur jeweiligen Achse.las=3 : Text steht senkrecht.
tcl Länge der Tickmarks.
adj Ausrichtung von geplottetem Text.
pch–Symbole
Linientypen
Wirtschafts- und Sozialstatistik, Universität Trier Seite 36
Einführung in R Melanie Knobelspies
Möchte man für mehrere Graphiken dieselben Argumente verwenden, so empfiehlt es sich über dieFunktion par( ) die Voreinstellung in den einzelnen Graphikfunktionen zu überschreiben. Diese Ein-stellungen werden für alle nachfolgenden Graphiken beibehalten bis sie explizit mit par( ) wiedergeändert werden, oder ein neues Graphikfenster aufgerufen wird.Hierbei können sämtliche Argumente verwendet werden, die im Kontext der plot Funktion eingeführtwurden. Darüber hinaus existieren noch einige weitere Argumente. Einen Überblick hierzu findet manin der R–Hilfe unter ?par bzw. par().
Seiten–Layout Funktionen
Möchte man das Seitenlayout ändern (z.B. breitere Ränder, oder mehrere Graphiken in einem Fenster)so wird hierfür auch die Funktion par verwendet.
Argument Bedeutung
mgp=c(x1,x2,x3) Legt den Abstand der Achsenbeschriftung (x1), derAchsenskalenbeschriftung (x2) und der Achsenlinie (x3)in relativen Einheiten der Schriftgröße im Plotrand fest.
mfrow=c(z,s) Teilt das Graphikfenster in z × s einzelne Graphikbe-reiche. Somit erhält man einen Mehrfach–Plotrahmen. DasGraphikfenster wird dann zeilenweise mit den Graphikengefüllt.
mfcol=c(z,s) Analog zu mfrow=c(z,s), mit dem Unterschied, dassdie Seite spaltenweise mit Graphiken gefüllt wird.
oma=c(u,l,o,r) Spezifiziert die maximale Textzeilenzahl für den unteren(u), linken (l), oberen (o) und rechten (r) äußeren Seiten-rand eines Mehrfach–Plotrahmens. Diese können dann mitmtext (siehe Low–Level Graphiken) beschriftet werden.
mar=c(u,l,o,r) Bestimmt die Breite der Seitenränder (unten, links, obenrechts) eines einzelnen Plotrahmens.
pty Setzt den aktuell gültigen Plotrahmen fest. pty=m erzeugteinen maximalen (meist rechteckigen) Plotrahmen (Vorein-stellung) und pty=s einen quadratischen.
Neben par(mfrow=c(z,s)) existieren noch 2 weitere Funktionen, die es ermöglichen mehrerePlots in einem Fenster zu platzieren.
1. layout(matrix, width, heights)Diese Funktion arbeitet so ähnlich wie mfrow, ist aber flexibler in der Einteilung. matrix gibtdie Einteilung des Fensters an. widths und heights stehen für die Teilungsverhältnisse derSpalten bzw. Zeilen.
2. split.screen( )Diese Funktion ist am einfachsten zu bedienen. Der Bildschirm wird hier in zwei Unterfensteraufgeteilt. Mit screen(i) kann gezielt ein Unterfenster aktiviert werden und erase.screen()macht die zuletzt gezeichnete Graphik wieder rückgängig.
Wirtschafts- und Sozialstatistik, Universität Trier Seite 37
Einführung in R Melanie Knobelspies
Der hist Befehl
• hist(x,prob=FALSE,breaks,plot=TRUE)
• x ist der Vektor, welcher als Histogramm dargestellt werden soll.
• Das Argument prob bestimmt, ob absolute ( prob=FALSE) oder relative ( prob=TRUE) Häu-figkeiten verwendet werden sollen.
• Mit dem Argument breaks können die Klassengrenzen bestimmt werden.
• Mit dem Argument plot kann bestimmt werden, ob das Histogramm graphisch dargestellt wer-den soll oder ob nur eine tabellarische Darstellung erfolgen soll.
x <- rnorm(100)hist(x, main="histogramm von 100 SNV ZV")
histogramm von 100 SNV ZV
x
Fre
quen
cy
−3 −2 −1 0 1 2
05
1015
2025
Weiterhin bietet R auch die Möglichkeit eine Kerndichteschätzung durchzuführen und diese in das beste-hende Histogramm einzuzeichnen.
> nv <- rnorm(1000)> lines(density(nv,bw=0.4),col=7,> lwd=3,lty=2)> hist(nv,freq=F,breaks=50,> col="lightskyblue")> curve(dnorm,from=-3,to=3,add=TRUE,lwd=3)
Histogram of nv
nv
Den
sity
−3 −2 −1 0 1 2 3
0.0
0.1
0.2
0.3
0.4
Wirtschafts- und Sozialstatistik, Universität Trier Seite 38
Einführung in R Melanie Knobelspies
Der barplot Befehl
Die Funktion barplot erlaubt das Zeichnen von Balkendiagrammen.
> barplot(1:6)
Möchte man die Häufigkeiten von verschiedenen Kategorien darstellen, so müssen die Daten erst ineiner Häufigkeitstabelle tabelliert werden.
> y <-c(1,2,4,5,4,6,3,4,5,6,2,3,1,2,4,5,6,4,3,2,1,6,5,3,2,3,4,2,5)>> barplot(table(y)) # barplot(y) liefert kein sinnvolles Ergebnis
Der boxplot Befehl
Ein Box–and–Whisker–Plot erhält man mit dem Befehl boxplot. Wird bei dieser Funktion das Ar-gument plot auf FALSE gesetzt, so erhält man (wie bei der hist Funktion) anstelle der Graphikeine Übersicht der wichtigsten Statistiken (Quartilswerte, Median, Minima und Maxima, Anzahl derBeobachtungen, . . . )
> set.seed(1)> h <-c(rnorm(100,50,10),> rnorm(10,40,5),100)> boxplot(h,col="lightblue")> text(1.3,28,"Unterer Whisker")> text(1.3,44,"1.Quartil")> text(1.3,56,"3.Quartil")> text(1.3,74,"Oberer Whisker")> text(1.3,50,"Median")> text(1.3,100,"Ausreißer")
●
4060
8010
0
Unterer Whisker
1.Quartil
3.Quartil
Oberer Whisker
Median
Ausreißer
Wirtschafts- und Sozialstatistik, Universität Trier Seite 39
Einführung in R Melanie Knobelspies
Werden mehrere Vektoren der boxplot Funktion mitgegeben, so werden die Boxplots parallel ge-zeichnet. Die verschiedenen Daten in den Vektoren können somit gut miteinander verglichen werden.
>boxplot(rnorm(100),rnorm(100),rnorm(100),rnorm(100))
●
●
●
1 2 3 4
−2
−1
01
23
Der qqnorm Befehl
Mit der Funktion qqnorm werden die Quantile der empirischen Verteilung gegen die die Quantile dertheoretischen Normalverteilung geplottet. Anhand der Abweichungen von der 1. Winkelhalbierenden,die mit dem Befehl qqline nachträglich eingezeichnet werden kann, erkennt man die Abweichungender empirischen Verteilungen. Möchte man beispielsweise 50 exponentialverteilte Zufallsvariablen aufNormalverteiltheit prüfen, so lautet der Befehl:
> y<-rexp(100,0.1)> qqnorm(y,main="Exp.verteilte ZV")> qqline(y,col="red",lwd=2)
●
●
●
●
● ●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
−2 −1 0 1 2
010
2030
40
Exp.verteilte ZV
Theoretical Quantiles
Sam
ple
Qua
ntile
s
Wirtschafts- und Sozialstatistik, Universität Trier Seite 40
Einführung in R Melanie Knobelspies
Weitere High Level Graphiken
Funktion Beschreibung
contour Höhenlinien–Plot
coplot Conditioning–Plot
curve Funktionen zeichnen
dotchart Dotplots
image 3 dimensionale Bilder
mosaicplot Mosaikplots
pairs Streudiagramm Matrix
persp perspektivische Fläche
pie Kreisdiagramm
Beispiel für eine Scatterplot–3D–Graphik (entnommen aus LIGGES, 2006, S. 154).
> library(scatterplot3d)> data(trees)> s3d <- scatterplot3d(trees,type="h",angle=55,scale.y=0.7,pch=16)> my.lm <- with(trees,lm(Volume~Girth+Height))> s3d$plane3d(my.lm, lty.box="solid")
8 10 12 14 16 18 20 22
1020
3040
5060
7080
6065
7075
8085
90
Girth
Hei
ghtVol
ume
●
●
●
●
●●
●
●●
●
●
●●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
Wirtschafts- und Sozialstatistik, Universität Trier Seite 41
Einführung in R Melanie Knobelspies
6.2 Low Level Graphiken
Die nachfolgende Tabelle enthält die wichtigsten Funktionen, die zu einer bestehenden Graphik nachträg-lich hinzugefügt werden können. Die einzelnen Funktionen können hierbei wieder durch zahlreicheArgumente erweitert werden. Nähere Informationen findet man in der R–Hilfe.
Funktion Beschreibung
grid() Fügt ein Gitternetz hinzu.
points(x,y) Zeichnet die Punkte (X,Y ) in ein bestehendes Koordi-natensystem ein.
text(x,y,text) Schreibt einen Text in ein bestehendes Koordinatensystemhinein.
lines(x,y) Zeichnet einen Polygonzug durch die Punkte der Vektorenx und y.
ploygon(x,y,col) Zeichnet ebenfalls einen Polygonzug durch die Punkte derVektoren x und y. Zusätzlich wird die umschlossene Flächemit der gewünschten Farbe oder einer Schraffur (siehe?polygon) ausgefüllt.
abline(a,b) Zeichnet eine Gerade mit Y -Abschnitt a und Steigung b inein bestehendes Koordinatensystem ein.
abline(h=a) Zeichnet eine horizontale Linie auf der Höhe von a in einbestehendes Koordinatensystem ein. abline(v=a) einevertikale Linie.
segments(x1,y1,x2,y2) Zieht eine Linie von den Punkten mit den Koordinaten(X1, Y 1) zu (X2, Y 2).
arrows(x1,y1,x2,y2) Dieser Befehl hat die gleiche Wirkung wie segment, nurwird an jedem Endpunkt X2, Y 2 eine Pfeilspitze gezeich-net.
axis(side,at,labels) Zeichnet Achsen und markiert sie bei at mit den labels.
mtext(text,side) Schreibt einen Text an den Rand (side=1:unten,side=2:links, side=3:oben, side=4:rechts)derGraphik.
title(main,sub,... ) Fügt nachträglich einen Titel (in größeren Buchstaben) derGraphik hinzu.
box( ) Umrahmt den Plotbereich.
legend(x,y,text) Fügt der bestehenden Graphik eine Legende hinzu.
rug( ) Fügt ein ergänzendes Stabdiagramm der Graphik hinzu.
Wirtschafts- und Sozialstatistik, Universität Trier Seite 42
Einführung in R Melanie Knobelspies
6.3 Mathematische Beschriftung
Mathematische Symbole und mathematische Beschriftungen können in R mit dem Befehl expressionerzeugt werden.Die Eingabe einer Formel erfolgt hierbei in LATEX ähnlicher Notation. Die Formel derDichtefunktion einer standardnormalverteilten Zufallsvariablen
f(X) =1
σ√
2π· e−
√(x−µ)22σ2
erzeugt man mit:
> plot(1:10,typ="n",axes=F,ylab="",xlab="")> text(3,5,adj=0,cex=2,+ expression(f(X) == frac(1,sigma * sqrt(2*pi)) ~~+ e^{frac(-(X-mu)^2,2*sigma^2)})+ )>
6.4 Interaktion mit Plots
Mit dem Befehl identify() können durch ein Klick mit der linken Maustaste Beobachtungen iden-tifiziert werden. Vor allem bei Vorhandensein von Ausreißern in einem Datensatz kann diese Funktionsehr nützlich sein. Im Graphikfenster erscheint dann die Indexnummer des betrachteten Objektes. Miteinem Klick der mittleren Maustaste wird die Funktion identify() beendet.
> X <- c(2,5,8,10,13,16,30)> plot(X)> identify(X)
●
●
●
●
●
●
●
1 2 3 4 5 6 7
510
1520
2530
Index
X
1
23
4
5
6
7
Wirtschafts- und Sozialstatistik, Universität Trier Seite 43
Einführung in R Melanie Knobelspies
6.5 Trellis–Graphiken
Trellis Graphiken sind eine Verallgemeinerung der Idee von Co–Plots, welche durch das Laden desPaketes lattice zur Verfügung stehen. Lattice basiert auf dem Graphiksystem Grid (siehe Murrell 2001),kann jedoch als eigenständiges Paket behandelt werden. Eine umfangreiche Dokumentation findet manauch unter http://cm.bell-labs.com/cm/ms/departments/sia/project/trellis/index.html.
Gegenüber den konventionellen Graphiken, bei denen Element für Element nacheinander gezeichnetwird, wird ein Trellis Objekt erst generiert und bearbeitet, bevor es gezeichnet wird (vgl. LIGGES,2006, S. 166). Häufig benutzte Elemente stehen als panel-Funktion (siehe Abschnitt ....) zur Verfügungund können miteinander kombiniert werden. Darüber hinaus weisen Lattice Graphiken gegenüber denkonventionellen Graphiken noch weitere Vorteile auf:
• Mehrere Graphiken gleichen Typs können in einem Raster direkt nebeneinander dargestellt wer-den, wobei in jedem Raster nur eine Teilmenge der Daten zu sehen ist⇒ Die Daten werden dabeiz. Bsp. über kategoriale Variablen aufgeteilt.
• Die Unterscheidung von Variablen nach Gruppen erfolgt standardmäßig durch unterschiedlicheFarben oder Symbole.
• Funktionen von Grid können auf Lattice Outputs angewendet werden (bei den traditionellenGraphiken fehlt diese Schnittstelle).
• Trellis Graphiken bieten weit umfangreichere Möglichkeiten als traditionelle Graphiken und sindoptisch eher an Präsentationsgraphiken orientiert.
>library(lattice)>data(Titanic)>> barplot(apply(Titanic,1,sum)) # Konventionelle Graphik> barchart(apply(Titanic,1,sum)) # Lattice Graphik>> barplot(Titanic)Fehler in barplot.default(Titanic) : ’height’ must be a vector or a matrix>> barchart(Titanic) #Der barchart Befehl kann sowohl auf Rohdaten,> # als auch auf Tabellen angewandt werden.
1st 2nd 3rd Crew
020
040
060
080
0
apply(Titanic, 1, sum)
1st
2nd
3rd
Crew
300 400 500 600 700 800 900
Freq
1st
2nd
3rd
Crew
0 200 400 600 800
MaleChild
FemaleChild
1st
2nd
3rd
Crew
MaleAdult
0 200 400 600 800
FemaleAdult
Wirtschafts- und Sozialstatistik, Universität Trier Seite 44
Einführung in R Melanie Knobelspies
Die folgende Tabelle enthält die wichtigsten Trellis High-Level und Low-Level Graphikfunktionen,sowie Funktionen zur Kontrolle des Trellis Device:
Funktion Beschreibungbarchart Balkendiagrammbwplot Boxplotcloud 3D Punktewolkecontourplot Contourplotdensityplot Dichteplotdotplot Punkteplothistogramm Histogrammlevelplot Levelplotpiechart Kuchendiagrammqq QQ–Plotsplom Scatterplot Matrixwireframe 3D Oberflächexyplot Scatterplotlarrows Pfeilellines Linienlpoints Punktelsegments mehrere Linien gleichzeitigltext Textpanel... bereits vordefinierte Funktion zum
Hinzufügen komplexerer Elementelset Parameter des Device einstellenprint Trellis Objekt zeichnentrelis.device Trellis Devicetrellis.par.get Parameter des Device abfragentrellis.par.set Parameter des Device einstellen
Exkurs: RGL–Graphiken
Das rgl Paket bietet die Möglichkeit Graphiken im 3 dimensionalen Raum darzustellen, wobei eineinteraktive Navigation vom Benutzer möglich ist. Die Graphik kann im 3 dimensionalen Raum beliebiggedreht und gezoomt werden. Verschiedene Lichtquellen und (Teil–)Transparenz sorgen dafür, dass beivielen Datenpunkten die Graphik übersichtlich bleibt und die Strukturen im Raum noch erkannt werdenkönnen.
Ein Beispiel hierzu findet man in der Datei RGL.r
Wirtschafts- und Sozialstatistik, Universität Trier Seite 45
Einführung in R Melanie Knobelspies
Statistische Analyse eines Datensatzes
R stellt eine Menge von Datensätzen in den Paketen zur Verfügung. Eine Liste aller Datensätze, die inden geladenen Libraries vorhanden sind, erhält man durch data( ). Im folgenden wird das Paket carverwendet.
• Laden Sie das Paket car.
• Lassen Sie sich mit help(car) einen Überblick über die Daten und Funktionen in diesem Paketgeben.
• Nehmen Sie den Datensatz in den Suchpfad und lassen Sie sich die Namen der darin enthaltenenVariablen ausgeben. Schauen Sie sich daraufhin die Attribute der Variablen an und lassen sie sichdann eine allgemeine Übersicht über den Datensatz geben.
• Schauen Sie sich nun die Zusammenfassung der Variablen gesondert für jede Ausprägung derVariablen type an (benutzen Sie hierfür den by Befehl).
• Stellen Sie die Variable income graphisch anhand eines Histogramms dar und zeichnen Sie in diebestehende Graphik eine Kerndichteschätzung ein.
• Überprüfen Sie die Variable type auf fehlende Werte. Eliminieren Sie daraufhin alle Beobachtun-gen mit fehlenden Werten in der Variable type.
• Überlegen Sie sich weitere graphische Methoden (univariat sowie bivatiat), die für diesen Daten-satz geeignet sind.
• Berechnen Sie die Korrelationsmatrix.
• Führen Sie eine lineare Einfachregression durch. Verwenden Sie dabei Prestige als abhängige undeducation als unabhängige Variable. Hinweis: lm(y~x).
• Bilden Sie für die Variable education die folgenden vier verschiedene Einkommensgruppen:(−∞; 8] (8; 10] (10; 12] (12;∞].Benutzen Sie hierbei den cut( ) Befehl.
• Lassen Sie sich anhand des Befehls subset(Prestige,type=="wc") die Teilmenge desDatensatzes ausgeben.
• Verwenden Sie den Befehl subset(Prestige,education %in% c(1,4)).Erläutern Sie kurz, welche Funktion der %in% Befehl hat.
• Eine Aufteilung des Datensatzes gemäß der Ausprägung einer Variablen erreicht man mit demsplit( ) Befehl. Als Ergebnis erhält man eine Liste, wobei die einzelnen Teile wieder durchdas $–Zeichen angesprochen werden können.
Wirtschafts- und Sozialstatistik, Universität Trier Seite 46
Einführung in R Melanie Knobelspies
Lösungsvorschlag
Hinweis: Der gesamte R–Code befindet sich auch in der Datei data.frame.r
data()
library(car)help(car)attach(Prestige)Prestige[1:5,]attach(Prestige)
Die ersten 5 Zeilen können mit eckigen Klammern abgegriffen werden.
> Prestige[1:5,]education income women prestige census type
GOV.ADMINISTRATORS 13.11 12351 11.16 68.8 1113 profGENERAL.MANAGERS 12.26 25879 4.02 69.1 1130 profACCOUNTANTS 12.77 9271 15.70 63.4 1171 profPURCHASING.OFFICERS 11.42 8865 9.11 56.8 1175 profCHEMISTS 14.62 8403 11.68 73.5 2111 prof>
Die Namen und Attribute erhält man mit names(Prestige) und attributes(Prestige)
> names(Prestige)[1] "education" "income" "women" "prestige" "census" "type">> attributes(Prestige)$names[1] "education" "income" "women" "prestige" "census" "type"
$class[1] "data.frame"
$row.names[1] "GOV.ADMINISTRATORS" "GENERAL.MANAGERS" "ACCOUNTANTS"
[4] "PURCHASING.OFFICERS" "CHEMISTS" "PHYSICISTS" ...
...
Wirtschafts- und Sozialstatistik, Universität Trier Seite 47
Einführung in R Melanie Knobelspies
Eine Zusammenfassung aller Variablen im data.frame erhält man durch summary(Prestige).
summary(Prestige)#> summary(Prestige)
education income women prestige census typeMin. : 6.380 Min. : 611 Min. : 0.000 Min. :14.80 Min. :1113 bc :441st Qu.: 8.445 1st Qu.: 4106 1st Qu.: 3.592 1st Qu.:35.23 1st Qu.:3120 prof:31Median :10.540 Median : 5930 Median :13.600 Median :43.60 Median :5135 wc :23Mean :10.738 Mean : 6798 Mean :28.979 Mean :46.83 Mean :5402 NA’s: 43rd Qu.:12.648 3rd Qu.: 8187 3rd Qu.:52.203 3rd Qu.:59.27 3rd Qu.:8312Max. :15.970 Max. :25879 Max. :97.510 Max. :87.20 Max. :9517
Um eine Zusammenfassung der Variablen getrennt für jede Kategorie der Variable type zu erhalten,benötigt man den Befehl: by(Prestige,type,summary)
> by(Prestige,type,summary)type: bc
education income women prestige census typeMin. : 6.380 Min. :1656 Min. : 0.000 Min. :17.30 Min. :3135 bc :441st Qu.: 7.570 1st Qu.:3837 1st Qu.: 0.945 1st Qu.:27.10 1st Qu.:7579 prof: 0Median : 8.350 Median :5216 Median : 4.725 Median :35.90 Median :8424 wc : 0Mean : 8.359 Mean :5374 Mean :18.971 Mean :35.53 Mean :79453rd Qu.: 8.922 3rd Qu.:6730 3rd Qu.:30.400 3rd Qu.:42.60 3rd Qu.:8780Max. :10.930 Max. :8895 Max. :90.670 Max. :54.90 Max. :9517
---------------------------------------------------------------------------------------------type: prof
education income women prestige census typeMin. :11.09 Min. : 4614 Min. : 0.580 Min. :53.80 Min. :1113 bc : 01st Qu.:12.94 1st Qu.: 6698 1st Qu.: 4.725 1st Qu.:61.00 1st Qu.:2142 prof:31Median :14.44 Median : 8865 Median :11.680 Median :68.40 Median :2331 wc : 0Mean :14.08 Mean :10559 Mean :25.512 Mean :67.85 Mean :25743rd Qu.:15.15 3rd Qu.:12416 3rd Qu.:40.845 3rd Qu.:72.95 3rd Qu.:2922Max. :15.97 Max. :25879 Max. :96.120 Max. :87.20 Max. :9111
---------------------------------------------------------------------------------------------type: wc
education income women prestige census typeMin. : 9.17 Min. :2448 Min. : 3.16 Min. :26.50 Min. :3156 bc : 01st Qu.:10.57 1st Qu.:3450 1st Qu.:20.46 1st Qu.:35.90 1st Qu.:4138 prof: 0Median :11.13 Median :4741 Median :56.10 Median :41.50 Median :4173 wc :23Mean :11.02 Mean :5052 Mean :52.83 Mean :42.24 Mean :43413rd Qu.:11.46 3rd Qu.:6626 3rd Qu.:79.61 3rd Qu.:47.50 3rd Qu.:4664Max. :12.79 Max. :8780 Max. :97.51 Max. :67.50 Max. :5191
Wirtschafts- und Sozialstatistik, Universität Trier Seite 48
Einführung in R Melanie Knobelspies
Histogramme erhält man mit dem hist Befehl.
par(mfrow=c(1,2))hist(income)hist(income,col="red",prob=TRUE,breaks=10,main="Histogramm des Einkommens")lines(density(income),lwd=2,col="green")
Histogram of income
income
Fre
quen
cy
0 5000 10000 15000 20000 25000 30000
010
2030
4050
Histogramm des Einkommens
income
Den
sity
0 5000 10000 15000 20000 25000
0.00
000
0.00
004
0.00
008
0.00
012
Abfrage auf fehlende Werte:
is.na(Prestige)Prestige <- Prestige[!is.na(type),]
Weitere Graphiken:
par(mfrow=c(2,2))boxplot(income,ylab="Einkommen",
col="lightblue")qq.plot(income)qq.plot(income,
labels=row.names(Prestige))plot(income,prestige)
Wirtschafts- und Sozialstatistik, Universität Trier Seite 49
Einführung in R Melanie Knobelspies
Quantifizierung des Zusammenhangs durch die Befehle cov() und cor()
> cov(income,prestige)[1] 52223.08> cor(income,prestige)[1] 0.7149057>>> cor(cbind(prestige,income,education,women))
prestige income education womenprestige 1.0000000 0.7149057 0.85017689 -0.11833419income 0.7149057 1.0000000 0.57758023 -0.44105927education 0.8501769 0.5775802 1.00000000 0.06185286women -0.1183342 -0.4410593 0.06185286 1.00000000>
Graphisch lässt sich das ganze anhand von Scatterplot Matrizen darstellen. Hierfür gibt es in R ver-schiedene Möglichkeiten, von denen einige im folgenden vorgestellt werden.
scatterplot(income,prestige)
●● ●● ●
0 5000 10000 15000 20000 25000
2040
6080
income
pres
tige
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
scatterplot(income~prestige|type)
●
●
●
●
●
20 30 40 50 60 70 80
5000
1000
015
000
2000
025
000
prestige
inco
me
●
●
● ●
●
●
●
●● ●
●
●
●
● ●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
type
bcprofwc
Wirtschafts- und Sozialstatistik, Universität Trier Seite 50
Einführung in R Melanie Knobelspies
pairs(Prestige)
education
5000 20000
●●
●
●
●
●● ●
●●
●●
●●●●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●●●
●●●●
●
●
●●
●●●
●
●
●●
●
●●●
● ●
●●●●●●
●
●●●
●●●
●
●
●
●
●
●●
●
●●
●●
●
●
●●●
●
●
●
●●
●
●
●
●●●
●●
●●
●●●●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●●
●● ●●
●
●
●
●●
●●●
●
●
●●
●
●●●
●●
●●● ●● ●
●
●●●
●● ●
●
●
●
●
●
●●
●
●●
●●●
●
●●●
●
●
●
20 40 60 80
●●
●
●
●
●●●●●
●●
●● ●●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●● ●●
●
●
●
●
●●●
● ●●●
●
●
●●
●●●
●
●
●●
●
●●●
● ●
●● ●●●●
●
●●
●● ● ●
●
●
●
●
●
●●
●
●●
●●
●
●
●●●
●
●
●
●●●
●
●
●●●●●
●●
●●●●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●●●●●●●
●
●
●●
●●●
●
●
●●
●
●●●
●●
●●●●●●
●
●●●●●●
●
●
●
●
●
●●
●
●●
●●●
●
●●●●
●
●
1.0 2.0 3.0
68
1216
●●●
●
●
●●●●●
●●
●●●●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●●●●●●●
●
●
●●
●●●
●
●
●●
●
●●●
●●
●●●●●●
●
●●●●●●
●
●
●
●
●
●●
●
●●
●●●
●
●●●●
●
●
5000
2000
0
●
●
●● ●
●
●
●
●●
●●
●●●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●●●
●●●
●●
●●●
●●●
●
●●
●●
●●●
● ●
●●
●
●●●●
●
●●●
●
●●
●●●●●●
●●
●
●●
●
●●
●
●● ●●
●
●
●
●●●
●
●
income ●
●
●●●
●
●
●
●●
●●
● ●●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●●●
●●●
● ●
●● ●
● ●●
●
●●
●●
●●●
●●
●●
●
●●●●
●
●●●
●
● ●
●●●● ●●
●●
●
●●
●
●●●
●●●●
●
●
●
●●●
●
●
●
●
●● ●
●
●
●
●●
●●
● ● ●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●●
●●●
●●●
● ●
●●●
● ●●●
●●
●●
●●●● ●
●●
●
●●●●
●
●● ●
●
●●
●●● ●● ●
●●
●
●●
●
●●●
●●●
●
●
●
●
●●●
●
●
●
●
●● ●
●
●
●
●●
●●●●●●
●
●
●
●
●
●●
●
●
●
●●●
●
●●●
●●●●●●●●
●●●●●●●
●●
●●
●●●
●●
●●
●
●●●●
●
●●●
●
●●
●●●●●●
●●
●
●●
●
●●●
●●●●
●
●
●
●●●●
●
●
●
●●●
●
●
●
●●
●●●●●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●●●●●●●●
●●●●●●●
●●
●●
●●●
●●
●●
●
●●●●
●
●●●
●
●●
●●●●●●
●●
●
●●
●
●●●
●●●●
●
●
●
●●●●
●
●●
●● ●
●
●
●●●●●
●
●●●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●●
● ●
●
●●
●
●● ●
●
●
●●
●
●●
●●●●●●
●
●
●
● ●● ● ●●●● ●●● ●●●●●
●
●
●●
●●● ●
●
●●●●●
●
●●
●
●
●
●
●
●
●
●
●● ●
●
●●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●●
●●
●
●●
●
●●●
●
●
●●
●
●●
●●●●●●
●
●
●
●●● ●●●●●● ●● ●●●
●●
●
●
women
●●
●● ●
●
●
●●●●●
●
●●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●●
● ●
●
●●
●
●●●
●
●
● ●
●
●●
●●● ●●
●
●
●
●
● ●● ● ●●●●● ●● ●●●
●●
●
●
●●
●● ●
●
●
●●●●●●
●●●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●●
●●
●
●●
●
●● ●
●
●
●●
●
●●
●●●●●●
●
●
●
●●●●●●●●●●●●●●●●
●
●
040
80
●●
●●●●
●
●●●●●●
●●●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●●
●●
●
●●
●
●●●
●
●
●●
●
●●
●●●●●●
●
●
●
●●●●●●●●●●● ●●●●●
●
●
2040
6080
●●●
●
●●
●●
●●
●●●
●
●
●
●
● ●
●
●
●●
●
●●●
●
● ●●
● ●
●●
●●
●
● ●●● ●●
●
●
●●● ●
●●
●●●
●
●
●
●
●
●●● ●
●●
●
●
●
●●
●●
●●
●
●●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●●
●●
● ●●●
●●
●●
●●
●●●
●
●
●
●
● ●
●
●
●●
●
● ●●
●
● ●●
●●
●●
●●
●
●●● ●●●
●
●
●●●●
●●
●●●
●
●
●
●
●
●●●
●
●●
●
●
●
●●
●●
●●
●
●●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●●
●●
●●●
●
●●
●●●●●●
●
●
●
●
●
●●
●
●
●●
●
●● ●
●
●● ●
●●
●●
●●
●
● ●●● ● ●
●
●
● ●●●
●●
● ●●
●
●
●
●
●
●●●
●
●●
●
●
●
●●
●●
●●
●
●●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●●
●●
prestige●●●●
●●●●●●●●●
●
●
●
●
●●
●
●
●●
●
●●●
●
●●●
●●
●●
●●●
●●●●●●
●
●
●●●●
●●
●●●
●
●
●
●
●
●●●
●
●●
●
●
●
●●
●●
●●●
●●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●●
●●
●●●●
●●●●●●●●●
●
●
●
●
●●
●
●
●●
●
●●●
●
●● ●
● ●
●●
●●●
●●●●●●
●
●
●●●●
●●
●●●
●
●
●
●
●
●●●●
●●
●
●
●
●●
●●
●●●
●●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●●
●●
●●●●
● ●●●●●●● ●●●● ●● ●● ●● ●●●●●● ● ●●● ●
●●●●●● ●●● ●●●●●●
● ●●● ●●●
● ●●● ●●●●
●●
●●●●●● ●●●●●●● ●● ● ●● ● ●●●● ●●● ●●●●● ●●
● ●●●
● ●● ●●●●●●●●● ●● ●● ●● ●●● ●●●● ●●●●
●●●●●●●● ●●●●●●●
●●●● ●●●
●●●● ●●●●
●●
●●●● ●● ●●●●●●●●● ●●● ●●●●●● ●● ●●●●●●●
●● ●●
●● ●●●●●●● ●●●● ●●● ● ●●●●● ●●●● ●●●
●●● ●●● ● ●● ● ●● ●● ●
●● ●● ● ●●
●● ●●● ●●●
●●
●●● ●● ●●●●● ●● ●● ●●●●●●●●●●●●●● ●●● ● ●
●●●●
●●●●●●●●● ● ●● ●●● ● ●● ●●●●●● ●●●●●
●● ●●●●● ●●●●● ●●●
●●●● ●●●
● ●●● ●●●●
●●
●● ●● ●● ●●● ●● ● ●●● ● ●● ● ●●●●● ●● ●●●●● ●●
census
2000
6000
●●●●
●●●●●●●●●●●●●●●●●●●●●●●● ●● ●● ●
●●●●●●●●●●●●●●●
●●●● ●●●
●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●
6 8 12 16
1.0
2.0
3.0
●●●● ● ●●●●●●● ●●●● ●● ●● ●● ● ●●●●
●
● ●
●
●
●●●●●●● ●●● ●●●●●●● ●●
●
●●●
● ●●● ●●●● ●●●●●●●● ●●●●●●● ●● ● ●● ● ●●●● ●●●
●
●●●● ●●
● ●●●● ●● ●●●●●●●●● ●● ●● ●● ● ●● ●●
●
● ●
●
●
●●●●●●●●● ●●●●●●● ●●●
●
●●●
●●●● ●●●●● ●●●●● ●● ●●●●●●●●● ●●● ●●●●●● ●●
●
●●●●●●
0 40 80
●● ●●●● ●●●●●●● ●●●● ●●● ● ●●●●● ●
●
●●
●
●
● ●●● ●●● ● ●● ● ●● ●● ●●● ●
●
● ●●
●● ●●● ●●●●● ●●● ●● ●●●●● ●● ●● ●●●●●●●●●●●●
●
● ●●● ● ●
●●●● ●●●●●●●●● ● ●● ●●● ● ●● ● ●●●●
●
●●
●
●
●●● ●●●●● ●●●●● ●●● ●●●
●
●●●
● ●●● ●●●●● ●●● ●● ●● ●●● ●● ● ●●● ● ●● ● ●●●●● ●●
●
●●●● ●●
2000 6000
●●●● ●●●●●●●●●●●●●●●●●●●●●●●
●
●●
●
●
● ●●●●●●●●●●●●●●● ●●●
●
●●●
●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●
●●●●●●
type
scatterplot.matrix(cbind(prestige,income,education,women),diagonal="boxplot")
prestige
0 10000 20000
● ●●
●
●●
●●
●●
●●
●
●
●
●
●
● ●
●
●
●
●
●
● ●●
●
●●●
●●●
●●
●
●●
●●
●●●●
●
●
●●
●●
●
●
●
●●●
●
●
●
●
●
●●●●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●●
●
●
●●●
●
●●
●●
●●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●●●
●
●●●
● ●●
●●
●
●●
● ●
●● ●●
●
●
●●
● ●
●
●
●
●●●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
0 20 60 100
2040
6080
●●●
●
●●
●●●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●● ●
●
●● ●
●●●
●●
●
●●
● ●
●● ● ●
●
●
● ●
●●
●
●
●
● ●●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
010
000
2000
0
●
●
●● ●
●
●
●
●●
●●
● ● ●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●●
●●
●●
●●● ●
●●●
● ●●
●
●●
●●
●
●●
●● ●
●●
●
●
●●● ●●
●
●● ●
●
●●
●●● ●● ●
●●
●
●●
●
●●●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
income
●
●
●● ●
●
●
●
●●
●●
● ●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●●●
●●●
●●
●●●
●●●
●
●●
●●●
●●●
● ●
●●
●
●
●●●●●
●
●●●
●
●●
●●●●●●
●●
●
●●
●
●●
●
●●●
●
●
●
●
●●●
●
●
●
●
●●●
●
●
●
●●
●●
● ●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●●
●●
●●● ●
●● ●
● ●●
●
●●
●●
●
●●●
●●
●●
●
●
●●●●●
●
●●●
●
●●
●●●● ●●
●●
●
●●
●
●●●
●●●
●
●
●
●
●●●
●
●
●
●●
●
●
●●
●
●●
●●
●● ●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●● ●●
●
●
●
●
●
●●
● ●●●
●
●
●●
●
●●●
●
●
●●
●
●
●●●
●
● ●
●● ●●●●
●
●●
●●
● ●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●●
●
●
●
●●
●
●
●●
●
●●
●●
●●●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●
●
●●
●●●●
●
●
●●
●
●●●
●
●
●●
●
●
●●●●
● ●
●●●●●●
●
●●●
●●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●●
●
●
education
68
1014
●
●●
●
●
●●
●
●●
●●
●●● ●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●●●●
●
●
●
●
●
●●
● ●●●
●
●
●●
●
●●●
●
●
●●
●
●
●●●
●
●●
●●● ●● ●
●
●●●
●● ●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
20 40 60 80
020
6010
0
●●
●● ●
●
●
●●●●●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
● ●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●●● ●
●
●
●
●
●
● ●● ● ●●●●● ●● ●●
●●●
●
●
●●
●●●
●
●
●●●●●
●
●
●●
●
●
●
●
●
●
●
●● ●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●●●
●
●
●
●
●
● ●● ●● ●●●● ●● ●●
●●●
●
●
6 8 10 14
●●
●● ●
●
●
●●●●●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
● ●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●●●
●
●
●
●
●
● ●● ● ●●●● ●●● ●●
●●
●
●
●
women
Lineare Einfachregression:
> Reg <- lm(prestige~education)> summary(Reg)
Call:lm(formula = prestige ~ education)
Residuals:Min 1Q Median 3Q Max
-26.0397 -6.5228 0.6611 6.7430 18.1636
Coefficients:Estimate Std. Error t value Pr(>|t|)
(Intercept) -10.732 3.677 -2.919 0.00434 **education 5.361 0.332 16.148 < 2e-16 ***---Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1
Residual standard error: 9.103 on 100 degrees of freedomMultiple R-Squared: 0.7228, Adjusted R-squared: 0.72F-statistic: 260.8 on 1 and 100 DF, p-value: < 2.2e-16
Wirtschafts- und Sozialstatistik, Universität Trier Seite 51
Einführung in R Melanie Knobelspies
Graphische Darstellung der linearen Einfachregression:
plot(prestige~education,ylab="Prestige",xlab="Einkommen", main="Streudiagramm",col="blue",lwd=2)
abline(Reg,col="red",lty=2)
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●●
● ●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
6 8 10 12 14 16
2040
6080
Streudiagramm
Einkommen
Pre
stig
e
Nun werden alle Objekte gelöscht und der Datensatz Prestige neu geladen. Daraufhin wird die Variableeducation in vier Klassen eingeteilt.
#---------rm(list=ls(all=TRUE))attach(Prestige)#----------> education<- cut(education,c(-Inf,8,10,12,Inf))> education <- unclass(education)>> education
[1] 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4[25] 4 4 4 2 4 4 4 3 4 3 3 3 3 3 3 2 4 3 2 3 3 3 3 3 3[50] 2 3 3 2 2 3 3 3 2 3 1 2 3 2 1 1 1 1 2 2[70] 1 1 1 1 1 1 3 2 2 1 2 2 2 3 1 2 3 1 2 2 2 1 1 1 2[95] 1 4 2 1 1 2 2 2
attr(,"levels")[1] "(-Inf,8]" "(8,10]" "(10,12]" "(12, Inf]">> Prestige$education <- education
Aufteilung des Datensatzes mit subset und split
subset(Prestige,type=="wc")
subset(Prestige,education %in% c(1,4))
Teilung <- split(Prestige,education)Teilung$"1"Teilung$"3"mode(Teilung)
Wirtschafts- und Sozialstatistik, Universität Trier Seite 52
Einführung in R Melanie Knobelspies
LiteraturBehr, A. (2005): Einführung in die Statistik mit R. Vahlen.
Dalgaard, P. (2002): Introductory Statistics with R. Springer.
Dolic, D. (2004): Statistik mit R. Oldenbourg.
Eichner, G. (2005): Einführung in die Statistik mit R. Mathemathisches Institut der Justus-Liebig-Universität Gießen, www.uni-giessen.de/~gcb7.
Fox, J. (2002): An R and S–Plus Companion to Applied Regression. Sage Publications.
Ligges, U. (2006): Programmieren mit R. Springer, 2 Auflage.
Paradis, E. (2002): R for Beginners. Istitut des Sciences de l‘Évolution, Université Montpellier II,http://cran.r-project.org/doc/contrib/Paradis-rdebuts_en.pdf.
Sachs, L. und Hedderich, J. (2006): Angewandte Statistik, Methodensammlung mit R. Springer, 11Auflage.
Schlittgen, R. (2004): Statistische Auswertungen mit R. Oldenbourg.
Wirtschafts- und Sozialstatistik, Universität Trier Seite 53