Statistik

R-Kurs · Kapitel 6 · Matrizen und Tabellen in R

Matrizen & Tabellen in R

Matrizen anlegen

matrix() füllt eine Matrix — mit byrow = TRUE zeilenweise. dim, t() (transponieren), rowSums/colSums helfen beim Rechnen.

R
m <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, byrow = TRUE)
m
dim(m)          # Zeilen, Spalten
rowSums(m)      # Zeilensummen
colSums(m)      # Spaltensummen
Ausgabe
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[1] 2 3
[1]  6 15
[1] 5 7 9

Zugriff auf Elemente

m[i, j] liest Zeile i, Spalte j. Eine ganze Zeile/Spalte erhält man, indem man den anderen Index leer lässt:

R
m[2, 3]     # 2. Zeile, 3. Spalte
m[1, ]      # ganze 1. Zeile
m[, 2]      # ganze 2. Spalte
Ausgabe
[1] 6
[1] 1 2 3
[1] 2 5
Mini-Aufgabe

Lege die Matrix (10203040)\begin{pmatrix}10&20\\30&40\end{pmatrix} an, lies das Element in der 2. Zeile/1. Spalte und bestimme die Spaltensummen.

Lösung zeigen
R
A <- matrix(c(10, 20, 30, 40), nrow = 2, byrow = TRUE)
A[2, 1]
colSums(A)
Ausgabe
[1] 30
[1] 40 60

Kontingenztafeln

Aus zwei kategorialen Merkmalen erzeugt table(a, b) die Kontingenztafel; addmargins ergänzt Randsummen, prop.table(..., margin = 1) die bedingten relativen Häufigkeiten je Zeile.

R
tafel <- matrix(c(30, 70, 570, 330), nrow = 2, byrow = TRUE)
addmargins(tafel)              # mit Randsummen
prop.table(tafel, margin = 1)  # bedingt je Zeile
chisq.test(tafel, correct = FALSE)$statistic  # Chi-Quadrat
Ausgabe
     [,1] [,2]  Sum
[1,]   30   70  100
[2,]  570  330  900
Sum  600  400 1000
    [,1]  [,2]
[1,] 0.300 0.700
[2,] 0.633 0.367
X-squared
41.66667
Mini-Aufgabe

Erzeuge aus x <- c("a","b","a","a","b") und y <- c("j","j","n","j","n") eine Kontingenztafel mit table().

Lösung zeigen
R
x <- c("a","b","a","a","b")
y <- c("j","j","n","j","n")
table(x, y)
Ausgabe
   y
x   j n
a 2 1
b 1 1

Abruf-Quiz

Frage 1 / 2

Wie liest m[2, 3] eine Matrix?