Exploration von Verteilungen
In diesem Kapitel geben wir Ihnen einen Überblick zur grafischen Exploration von Verteilungen.
Script
# Einfaches Stamm-Blatt-Diagramm
stem(bsp01$IQ)
Console
The decimal point is 1 digit(s) to the right of the |
5 | 8
6 | 7
7 | 33556689999
8 | 1223334455666678
9 | 00122344455556788889
10 | 0000111111223344445555566
11 | 01113346666688889
12 | 113479
13 | 38
14 |
15 | 1
Script
# Laden des Package aplpack: Das Package muss vorher installiert sein.
library(aplpack)
stem.leaf.backback(IQ_maenner, IQ_frauen, m=1)
Console
1 | 2: represents 12, leaf unit: 1
IQ_maenner IQ_frauen
____________________________________________________
1 8| 5 |
| 6 |7 1
4 996| 7 |33556899 9
8 6632| 8 |123344556678 21
21 9886555432210| 9 |0445788 (7)
(9) 665544431| 10 |0000111112234555 30
12 888311| 11 |01346666689 14
6 431| 12 |179 3
3 83| 13 |
| 14 |
____________________________________________________
HI: 151
n: 42 58
____________________________________________________
Script
# Ein einfaches Balkendiagramm für die
# Häufigkeitsverteilung des Geschlechts.
barplot(table(bsp01$sex))
Script
# Farbdefinition für Web-Grafiken
my_blue <- rgb(11,83,148, maxColorValue=255)
my_blue2 <- rgb(207,226,234, maxColorValue=255)
my_red <- rgb(166,77,121, maxColorValue=255)
my_red2 <- rgb(234,209,220, maxColorValue=255)
my_green <- rgb(39,78,19, maxColorValue=255)
# Balkendiagramm mit der Definition einiger Argumente
barplot(
# das table-Objekt als Grundlage für das Diagramm
table(bsp01$sex),
# main bezeichnet den Titel
main="Geschlechterverteilung",
# xlab bezeichnet die x-Achse
xlab="Geschlecht"
# ylab bezeichnet die y-Achse
ylab="absolute Häufigkeit",
# names.arg definiert die Bezeichnungen der jeweiligen Gruppen
names.arg=c("Frauen", "Männer"),
# ylim gibt die Länge der y-Achse vom Minimum bis zum Maximum an
ylim=c(0,60),
# space Einheiten zwischen den Balken
space=0,
# width Einheiten der Balkenbreite im
# zugrundeliegenden Koordinatensystem
width=1,
# col Farbgebung: bei zwei Balken, zwei Farbwerte
col=c(my_red, my_blue)
)
Script
# Erstellung zweidimensionaler Balkendiagramme
attach(pedersen)
barplot(table(sex, desired),beside=TRUE, horiz=T,
xlab="Wie viele Sexualpartner wünschen Sie sich in den
nächsten 30 Jahren?", ylab="Häufigkeit der Antworten", cex.names=.5)
Script
# Anzeige der Dimensionen und Kategorien des Datensatzes Titanic
library(datasets)
dimnames(Titanic)
Console
$Class
[1] "1st" "2nd" "3rd" "Crew"
$Sex
[1] "Male" "Female"
$Age
[1] "Child" "Adult"
$Survived
[1] "No" "Yes"
Script
# Auswahl der Teiltabellen für das Geschlecht (2) und das Überleben (4)
margin.table(Titanic, c(2,4))
Console
Survived
Sex No Yes
Male 1364 367
Female 126 344
Script
# Zweidimensionales Häufigkeitsdiagramm mit absoluter Häufigkeit
barplot(sex_surv,
ylab="absolute Häufigkeit", xlab="Überleben", beside=T,
names.arg=c("Nein", "Ja"), main="Absolute Häufigkeit",
col=c(my_blue, my_red))
# Erstellung einer Legende
legend("topright", legend=c("Männer", "Frauen"), fill=c(my_blue, my_red))
Script
# Punktdiagramm mit Hilfslinien
dotchart(as.table(sort(state.x77[,1])[40:50]),xlab="Anzahl der Einwohner x 1000",
main="Bevölkerungsreichste US-Bundesstaaten 1977")
Script
# Einfaches Histogramm
hist(x=bsp01$IQ, main="Histogramm für Häufigkeiten", ylab="Häufigkeit", xlab="IQ")
Script
# Histogramm mit unterschiedlicher Intervallbreite
# Definition der Intervallgrenzen
br <- c(50,65,75,80,85,90,95,100,105,110,115,120,130,160)
# Zeichnung des Histogramms und Speicherung der Histogrammparameter in h
h <- hist(bsp01$IQ,
#Angabe der Intervallgrenzen definiert in br
breaks=br, freq=T, cex.main=.8, ylab="Häufigkeit",
main="Histogramm mit ungleichen Intervallen\nund Häufigkeitswerten"
)
# Code für die Datenbeschriftung
B <- NULL
for (i in 1:13) B[i] <- mean(c(br[i],br[i+1]))
text(B, h$count, labels=as.character(h$count), pos=1, cex=.5, offset=.2)
Script
# Einfaches Boxplot
boxplot(Stress~AZ, ylab="Stresserleben", xlab="Arbeitszufriedenheit",
names=c("sehr gering", "gering", "mittel", "hoch", "sehr hoch"))
Script
# Boxplots mit Kerben für verschiedene Gruppen
boxplot(Stress~AZ, ylab="Stresserleben", xlab="Arbeitszufriedenheit",
names=c("(1) sehr gering", "(2) gering", "(3) mittel", "(4) hoch",
"(5) sehr hoch"), notch=TRUE, cex.axis=.9)
Script
# Violinplot
library(vioplot)
vioplot(IQ_maenner, IQ_frauen, col=my_blue,
names=c("Männer", "Frauen")
)
Script
# Streudiagramm für Körpergröße und IQ
plot(x=height, y=IQ, xlab="Körpergröße in cm", ylab="IQ-Punkte")
Plot
Script
# Berechnung der Koeffizienten der linearen Regression
lm(formula=fussball$tore~fussball$spiele)
Console
Call:
lm(formula = fussball$tore ~ fussball$spiele)
Coefficients:
(Intercept) fussball$spiele
2.1280 0.4774
Script
# Zeichnung des Streudiagram
plot(fussball$spiele, fussball$tore,
ylab="Anzahl geschossener Tore", xlab="Anzahl
gespielter Spiele")
# Hinzufügen der Regressionsgerade in das
# Streudiagamm
abline(lm(fussball$tore~fussball$spiele))
Script
#Zeichnen der Loess-Kurve mit normalverteilter
# Gewichtungsfunktion (diese Gewichtung
# wird standardmäßig mit der
# Funktion scatter.smooth genutzt) mit einem Anteil
# einbezogener Daten von 70% (span=.7)
scatter.smooth(
bsp02$income, bsp02$life_expectancy,
ylab="Lebenserwartung in Jahren",
xlab="Durchschnittliches pro Kopf Jahreseinkommen in
USD", span=.7
)
Script
#Transformation mit dem natürlichen Logarithmus
log_income <- log(bsp02$income)
scatter.smooth(
log_income, bsp02$life_expectancy, span=(2/3),
xaxt="n", ylab="Lebenserwartung in Jahren",
xlab="Durchschnittliches pro Kopf Jahreseinkommen in
USD")
# x-Achse in Originaleinheiten
axis(1, at = 5:11, labels = round(exp(5:11)))
Script
# Zufallsrauschen
plot(jitter(bsp01$AZ),jitter(bsp01$LZ),
ylab="Lebenszufriedenheit", xlab="Arbeitszufriedenheit")
Script
# Sonnenblumendiagramm
sunflowerplot(bsp01$AZ,bsp01$LZ, ylab="Lebenszufriedenheit",
xlab="Arbeitszufriedenheit")
# die Legende haben wir nachträglich hinzugefügt
text(1,2, " 1 Wert", cex=.7, pos=4); text(1,1, " 4 Werte", cex=.7, pos=4)
text(2,4, " 3 Werte", cex=.7, pos=4); text(2,3, " 11 Werte", cex=.7, pos=4)
text(2,2, " 5 Werte", cex=.7, pos=4)
Script
# Streudiagramm-Matrix mit Loess-Kurven
pairs(bsp01[,3:6], panel=panel.smooth, col.smooth="black", span=c(2/3), lwd=2)
Script
# Dreidimensionales Streudiagramm für Stress, Lebens- und Arbeitszufriedenheit
library(scatterplot3d)
scatterplot3d(jitter(bsp01$Stress),jitter(bsp01$LZ),jitter(bsp01$AZ),
xlab="Stresserleben",
ylab="Lebenszufriedenheit",
zlab="Arbeitszufriedenheit",
type="h")
Script
# Bubbleplot mit dem Paket: googleVis
bubble<- gvisBubbleChart(
data=jitter_bsp, idvar="no", xvar="AZ", yvar="LZ",
colorvar="Stress",sizevar="Stress",
options=list(width=500, height=500,
hAxis='{minValue:0, maxValue:5,
title:"Arbeitszufriedenheit"}',
vAxis='{minValue:0, maxValue:5,
title: "Lebenszufriedenheit"}',
sizeAxis='{minSize:1, maxSize:9}',
legend='{position:"none"}',
bubble='{stroke:"black", textStyle:{color:"none"}}',
colorAxis='{colors:["grey", "grey"], legend:
{position:"none"}}')
)
plot(bubble)
Script
# Streudiagramm für Drittvariable mit Symbolen
plot(jitter(bsp01$Stress),jitter(bsp01$AZ),
# Dritte Variable als Symbol
pch=bsp01$LZ,
# x-Achse nur für die bessere Sichtbarkeit der Legende verändert
xlim=c(3,11),
cex.main=.8,
xlab="Stresserleben",
ylab="Arbeitszufriedenheit")
# Hinzufügen der Legende
legend("topright", pch=1:5, legend=c("LZ=1","LZ=2","LZ=3","LZ=4","LZ=5"))