R-Referenz
Etwa die Hälfte der Klausurpunkte wird in R gelöst. Hier findest du je Verfahren den passenden Befehl, die erwartete Ausgabe und was sie bedeutet — geordnet nach Kapitel.
K1 · Grundlagen, Vektoren & R-Basics
Vektoren erzeugen, indizieren und elementweise rechnen.
x <- c(4, 8, 15, 16, 23, 42) # numerischer Vektor
length(x) # Anzahl Elemente
x[2] # zweites Element
x[x > 15] # logische Auswahl
seq(0, 1, by = 0.25) # Folge
rep(c(0, 1), times = 3) # Wiederholung [1] 6
[1] 8
[1] 16 23 42
[1] 0.00 0.25 0.50 0.75 1.00
[1] 0 1 0 1 0 1 Mathematische Kontrollen (1. Übungsblatt): factorial(5),
choose(49, 6), exp, log,
sqrt.
factorial(5) # 5!
choose(49, 6) # Binomialkoeffizient "49 über 6" [1] 120
[1] 13983816 K2 · Häufigkeiten, Grafik, Lage & Streuung
Häufigkeiten & Grafik: table zählt,
barplot/pie stellen dar, hist bildet
Klassen.
allergie <- c(rep(0, 26), rep(1, 9))
table(allergie) # absolute Häufigkeiten
prop.table(table(allergie)) # relative Häufigkeiten
barplot(table(allergie)) # Säulendiagramm
pie(table(allergie)) # Kreisdiagramm
hist(gewicht, breaks = seq(50, 110, 15)) # Histogramm mit Klassen allergie
0 1
26 9
allergie
0 1
0.7428571 0.2571429 Lage & Streuung:
x <- rep(c(6, 8, 9, 10, 11), c(1, 4, 5, 8, 2))
mean(x) # arithmetisches Mittel
median(x) # Median
quantile(x, 0.25) # unteres Quartil
fivenum(x) # Fünf-Punkte-Zusammenfassung
var(x) # STICHPROBENvarianz (Teiler n-1)
sd(x) # Standardabweichung
IQR(x) # Interquartilsabstand
boxplot(x) # Box-Plot [1] 9.25
[1] 9.5
25%
8.75
[1] 6.0 8.5 9.5 10.0 11.0
[1] 1.460526
[1] 1.208522
[1] 1.25 ⚠ var/sd in R teilen durch
n−1 (Stichprobenvarianz). Die empirische Varianz (Teiler n)
erhältst du mit var(x) * (n-1)/n.
K3 · Zusammenhang: Kontingenz, Korrelation, Regression
Kontingenz: matrix, Randsummen,
chisq.test.
tafel <- matrix(c(16, 40, 7, 28), nrow = 2, byrow = TRUE)
rowSums(tafel); colSums(tafel) # Randhäufigkeiten
prop.table(tafel, margin = 1) # bedingte rel. Häufigk. je Zeile
chisq.test(tafel, correct = FALSE)$statistic # Chi-Quadrat-Koeffizient [1] 56 35
[1] 23 68
X-squared
0.8378525 Korrelation & Regression:
cor(x, y) # Pearson
cor(x, y, method = "spearman") # Spearman
cor(x, y, method = "kendall") # Kendall
modell <- lm(y ~ x) # Kleinste-Quadrate-Regression
coef(modell) # b0 (Intercept), b1
summary(modell)$r.squared # Bestimmtheitsmaß
abline(modell) # Gerade ins Streudiagramm (Intercept) x
6.1553 -0.4498
[1] 0.448 K4 · Wahrscheinlichkeit & Kombinatorik
Laplace-Wahrscheinlichkeiten und Bayes rechnet man direkt; Kombinatorik mit
choose/factorial. Simulation mit sample.
# Bayes: P(krank | positiv)
praev <- 0.01; sens <- 0.99; fpr <- 0.05
p_pos <- sens*praev + fpr*(1-praev)
sens*praev / p_pos
# Simulation: 10000 Würfe, relative Häufigkeit "Sechs"
mean(sample(1:6, 10000, replace = TRUE) == 6) [1] 0.1666667
[1] 0.1657 K5 · Diskrete Verteilungen
Schema: d… = Wahrscheinlichkeitsfunktion P(X=k),
p… = Verteilungsfunktion P(X≤k), q… = Quantil,
r… = Zufallszahlen.
dbinom(2, size = 20, prob = 0.2) # P(X = 2), Binomial
pbinom(2, size = 20, prob = 0.2) # P(X <= 2)
dpois(0, lambda = 3) # Poisson P(X = 0)
ppois(2, lambda = 3) # Poisson P(X <= 2)
dgeom(4, prob = 0.1) # geometrisch: 4 Misserfolge, dann Erfolg [1] 0.1369334
[1] 0.2060847
[1] 0.04978707
[1] 0.4231901
[1] 0.06561 ⚠ dgeom(k, p) zählt die Misserfolge
$k = x-1$ vor dem ersten Erfolg. Für „die x-te Person" also
dgeom(x - 1, p).
K6 · Stetige Verteilungen
pnorm(75, mean = 90, sd = 10) # P(X < 75)
pnorm(1.96) # Phi(1.96), Standardnormal
qnorm(0.975) # z-Quantil
dexp(0, rate = 0.01) # Exponential-Dichte bei 0
pexp(100, rate = 0.01, lower.tail = FALSE) # P(X > 100) = e^-1
qt(0.975, df = 14) # t-Quantil [1] 0.0668072
[1] 0.9750021
[1] 1.959964
[1] 0.01
[1] 0.3678794
[1] 2.144787 K7 · Schätzen & Konfidenzintervalle
Zufallsstichproben mit sample; Konfidenzintervall direkt aus
Quantil und Standardfehler oder über t.test.
# KI für mu, sigma bekannt: xbar +/- z * sigma/sqrt(n)
xbar <- 169.5; sigma <- 10; n <- 20
xbar + c(-1, 1) * qnorm(0.975) * sigma/sqrt(n)
# KI aus Daten (sigma unbekannt) -> t.test liefert es mit:
t.test(daten)$conf.int [1] 165.1174 173.8826 K8 · Hypothesentests
t.test für den t-Test, binom.test für Anteile;
den Gauß-Test (σ bekannt) rechnet man direkt mit pnorm.
# Einstichproben-t-Test, zweiseitig
t.test(daten, mu = 102) # liefert t, df, p-Wert, KI
# manuell: t-Statistik und p-Wert
t <- (104 - 102) / (5/sqrt(15))
2 * (1 - pt(abs(t), df = 14)) # zweiseitiger p-Wert
# Gauß-Test (sigma bekannt): p-Wert einseitig
pnorm((190 - 200) / (15/sqrt(10))) # Kaffee-Beispiel
# exakter Binomialtest
binom.test(8, 10, p = 0.5)$p.value [1] 0.1436321
[1] 0.01750749
[1] 0.109375 Verteilungs-Funktionen auf einen Blick
Für jede Verteilung gibt es vier Funktionen mit demselben Suffix:
| Präfix | Bedeutung | Beispiel |
|---|---|---|
d | Dichte / W-Funktion f(x) | dbinom, dnorm |
p | Verteilungsfunktion F(x)=P(X≤x) | pnorm, ppois |
q | Quantil (Inverse von F) | qnorm, qt |
r | Zufallszahlen | rbinom, rnorm |
Suffixe: binom, pois, geom,
hyper, unif, exp, norm,
t, chisq, f. Für obere Schwänze
lower.tail = FALSE.