R Matrixalgebra

Aus Metheval - Tipps+Tools - Wiki
Wechseln zu: Navigation, Suche

Viele Statistik-Bücher geben eine Einführung in Matrixalgebra. Die folgenden Rechen-Beispiele (aber nicht der R-Code) entstammen Tatsuoka (1988), Kapitel 2.

Diese Seite dient als "Schnelle Referenz", d.h. die wichtigsten Funktionsnamen und Parameter sind aufgeführt, aber nicht näher erklärt. Dafür gibt es Rs help()-Funktion.

Matrix erstellen

A <- matrix(c(3, -1, 2, -5, 0, 4), nrow=2, ncol=3, byrow=TRUE,
            dimnames=list(c("row1","row2"), c("col1","col2","col3")))

Prüfe, ob es sich bei Objekt um Matrix handelt

is.matrix(A)

Transponierte einer Matrix

B <- t(A)

Determinante einer Matrix

det(A)

Inverse einer Matrix

A <- matrix(c(4, 5, 2, 1, -7, 7, -5, -4, 3), nrow=3)
solve(A)
A %*% solve(A) # Einheitsmatrix (bis auf Rundungsfehler)

Spur einer Matrix

sum(diag(A))

Addition von Matrizen

B <- matrix(c(5, -4, -4, 7, 1, 3), nrow=2, ncol=3, byrow=TRUE,
            dimnames=list(c("r1","r2"), c("c1","c2","c3")))
A+B

## Ungültig, weil nicht gleiche Dimensionalität:
A+matrix(1:9, nrow=3, ncol=3, byrow=TRUE)

Multiplikation

A <- matrix(c(2, -3, 1, -1, 4,  0), nrow=2, ncol=3, byrow=TRUE)
B <- matrix(c(3,  1, 4,  2, 5, -3), nrow=3, ncol=2, byrow=TRUE)

## Mit Skalar:
(A+4)/2

## Fehler, weil das elementweise Multiplikation bedeuten würde
A*B

## Richtig (dimnames sind recht interessant):
A %*% B
B %*% A

Kunststückchen

## The addition-operator vector (rows or cols are summed up)
A %*% matrix(c(1,1,1), nrow=3, ncol=1)
matrix(c(1,1), nrow=1, ncol=2) %*% A

## SSCP-Matrix-Berechnung (Sum of Squares and Cross Products)
X <- matrix(c(30,25,28,32,22, 15,10,12,14,13), ncol=2)
Xquer <- matrix(c(rep(mean(X[,1]), times=5), rep(mean(X[,2]), times=5)), ncol=2)
x <- X - Xquer
t(x) %*% x # returns the SSCP matrix (but easier computation below)
t(X) %*% X - t(Xquer) %*% Xquer # returns the SSCP matrix (but easier below)
EINS <- matrix(rep(1, times=5), ncol=1)
t(X) %*% X - t(t(EINS) %*% X) %*% (t(EINS) %*% X) / 5 # returns SSCP, easy 1
colsums <- matrix(c(sum(X[,1]), sum(X[,2])), nrow=1)
t(X) %*% X - t(colsums) %*% (colsums) / 5 # returns SSCP, easy 2

## Exercise, Tatsuoka p. 23, 6. ff.
A <- matrix(c(3,1, 2,0, -1,2), nrow=3, ncol=2, byrow=TRUE)
C <- matrix(c(2,3,-1, 1,-2,1), nrow=2, ncol=3, byrow=TRUE)
D <- matrix(c(2,0, 0,3), nrow=2, ncol=2, byrow=TRUE)
E <- matrix(c(5,0,0, 0,5,0, 0,0,5), nrow=3, ncol=3, byrow=TRUE)
D %*% C # !
A %*% D # !
E %*% A # same as 5 * A