Statistik

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.

R
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
Ausgabe
[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.

R
factorial(5)        # 5!
choose(49, 6)       # Binomialkoeffizient "49 über 6"
Ausgabe
[1] 120
[1] 13983816

K2 · Häufigkeiten, Grafik, Lage & Streuung

Häufigkeiten & Grafik: table zählt, barplot/pie stellen dar, hist bildet Klassen.

R
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
Ausgabe
allergie
 0  1
26  9
allergie
        0         1
0.7428571 0.2571429

Lage & Streuung:

R
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
Ausgabe
[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.

R
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
Ausgabe
[1] 56 35
[1] 23 68
X-squared
0.8378525

Korrelation & Regression:

R
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
Ausgabe
(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.

R
# 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)
Ausgabe
[1] 0.1666667
[1] 0.1657

K5 · Diskrete Verteilungen

Schema: d… = Wahrscheinlichkeitsfunktion P(X=k), p… = Verteilungsfunktion P(X≤k), q… = Quantil, r… = Zufallszahlen.

R
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
Ausgabe
[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

R
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
Ausgabe
[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.

R
# 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
Ausgabe
[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.

R
# 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
Ausgabe
[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äfixBedeutungBeispiel
dDichte / W-Funktion f(x)dbinom, dnorm
pVerteilungsfunktion F(x)=P(X≤x)pnorm, ppois
qQuantil (Inverse von F)qnorm, qt
rZufallszahlenrbinom, rnorm

Suffixe: binom, pois, geom, hyper, unif, exp, norm, t, chisq, f. Für obere Schwänze lower.tail = FALSE.