<- matrix(1:9, 3, 3)
A <- matrix(1, 3, 1) iota
6 Matrizen (III)
6.1 Spezielle Matrizen
6.1.1 Einsen-Matrix
Eine
Beispiel: Sei
Dann ist
t(iota) %*% A
[,1] [,2] [,3]
[1,] 6 15 24
der Zeilenvektor der Spaltensummen und
%*% iota A
[,1]
[1,] 12
[2,] 15
[3,] 18
der Spaltenvektor der Zeilensummen.
Manchmal begegnet man in ökonometrischen Texten dem Ausdruck
In R ist es sehr einfach, Einsenmatrizen zu erzeugen, z.B.
<- matrix(1, nrow=2, ncol=4)
J J
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] 1 1 1 1
6.1.2 Nullen-Matrix
Eine
6.1.3 Permutationsmatrizen
Ordnet man die Spalten (oder Zeilen) einer Einheitsmatrix in einer anderen Reihenfolge an, dann erhält man eine Permutationsmatrix. Permutationsmatrizen heißen so, weil sie die Elemente eines Vektors permutieren (d.h. in eine andere Reihenfolge bringen). Das folgende Beispiel zeigt das für eine
6.1.4 Diagonalmatrizen
Eine Matrix, bei der alle Nichtdiagonalelemente Null sind, nennt man Diagonalmatrix. Beispielsweise sind Einheitsmatrizen Diagonalmatrizen. Die Funktion diag
, die wir schon zum Erzeugen von Einheitsmatrizen kennen gelernt haben, dient auch zum Erzeugen von allgemeinen Diagonalmatrizen. Wenn das Argument ein Vektor der Länge
Beispiel:
<- c(1,3,5,7,9)
v diag(v)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 0 0 0 0
[2,] 0 3 0 0 0
[3,] 0 0 5 0 0
[4,] 0 0 0 7 0
[5,] 0 0 0 0 9
6.1.5 Dreiecksmatrizen
In einer oberen Dreiecksmatrix sind alle Elemente unterhalb der Diagonale Null. In einer unteren Dreiecksmatrix sind die Elemente über der Diagonalen Null. Bei Dreiecksmatrizen ist die Determinante das Produkt aller Diagonalelemente. Wenn
Beispiel:
<- diag(c(1,3,5,7))
A det(A)
[1] 105
6.1.6 Orthogonale Matrizen
Eine
Wählt man zwei beliebige unterschiedliche Spalten (oder Zeilen) einer orthogonalen Matrizen, dann ist deren inneres Produkt 0, d.h. sie sind rechtwinklig (orthogonal) zueinander. Das innere Produkt einer Spalte mit sich selber ist 1. Die Spalten haben also die Norm 1. Die
Bei der numerischen Überprüfung auf Orthogonalität müssen mögliche Rundungsfehler berücksichtigt werden.
Beispiel:
Die 35-Grad-Rotationsmatrix
<- matrix(c(cos((35/180)*pi),sin((35/180)*pi),-sin((35/180)*pi),cos((35/180)*pi)),2,2) M
ist orthogonal. Wenn man jedoch mit der all
-Funktion nachprüft, ob
all(t(M) %*% M == diag(2))
[1] FALSE
Das liegt an Rundungsfehlern. Das Tükische ist, dass R dennoch die Einheitsmatrix ausgibt, wenn man die zugehörige Transponierte von links an die 35-Grad-Rotationsmatrix multipliziert.
t(M) %*% M
[,1] [,2]
[1,] 1.000000e+00 -4.032299e-19
[2,] -4.032299e-19 1.000000e+00
Das liegt daran, dass R standardmäßig nur 6 Nachkommastellen ausgibt. Erst wenn man die Anzahl der auszugebenden Nachkommastellen auf (z.B) 16 Stellen erhöht, sieht man die Rundungsfehler.
options(digits=16)
t(M) %*% M
[,1] [,2]
[1,] 9.999999999999999e-01 -4.032298572641752e-19
[2,] -4.032298572641752e-19 9.999999999999999e-01
options(digits=6)
Die Rundungsfehler sind zwar extrem klein, aber die Ergebnismatrix ist offenbar nicht exakt gleich der Einheitsmatrix. Durch Runden auf (z.B.) 12 Stellen nach dem Komma ergibt sich aber das richtige Ergebnis,
all(round(t(M) %*% M, 12) == diag(2))
[1] TRUE
6.1.7 Idempotente Matrizen
Wenn für eine quadratische
6.2 Partitionierte Matrizen
In der Ökonometrie gibt es Situationen, in denen Matrizen in einzelne Blöcke unterteilt werden. Man spricht dann von partitionierten Matrizen. Das sieht z.B. so aus:
Partitionierte Matrizen bieten eine elegante Möglichkeit, komplexe Daten strukturiert zu bearbeiten.
Für viele Matrixoperationen können die Blöcke so ähnlich behandelt werden wie normale Matrixelemente. Beispielsweise gilt für die Transponierte
6.3 Tensoren
In der Machine-Learning-Literatur spielen Vektoren und Matrizen eine extrem wichtige Rolle. Im Bereich des Machine-Learnings wird jedoch meistens eine bequeme Verallgemeinerung von Matrizen, Vektoren und Skalaren benutzt, nämlich Tensoren. Ein Tensor der Dimension 0 (auch 0-Tensor oder 0D-Tensor) ist ein Skalar. Ein 1-Tensor oder 1D-Tensor ist ein Vektor. Ein 2-Tensor oder 2D-Tensor ist eine Matrix. Man kann Tensoren nun für noch höhere Dimensionen definieren. Bei einem 3D-Tensor sind die Daten nicht nur in Form eines Rechtecks angeordnet (wie bei einer Matrix), sondern man hat noch eine weitere Dimension. Die Daten liegen quasi in Würfelform vor, die das folgende Bild skizziert, in dem die Daten eines 3D-Tensors der Dimensionen
Hier liegen quasi drei Matrizen geschichtet hintereinander. Die ersten beiden Indizes geben die Position innerhalb der Matrizen an, der dritte Index gibt an, um welche Schicht es sich handelt.
Tensoren können analog auch für noch höhere Dimensionen definiert werden, sind dann aber nicht mehr anschaulich darstellbar. Für Tensoren lässt sich die Matrixmultiplikation verallgemeinern, aber darauf gehen wir in diesem Kurs nicht ein.
Noch ein Hinweis zum Begriff “Dimension”: Eine Matrix ist ein 2D-Tensor, weil sie aus Zeilen und Spalten besteht. Sind die Daten in Würfelform angeordnet, handelt es sich um einen 3D-Tensor mit Zeilen, Spalten und Schichten. Der Begriff “Dimension” bezeichnet also die Struktur eines Tensors. In diesem Kurs verwenden wir den Begriff “Dimension” jedoch, um die Länge eines Vektors oder die Zeilen- und Spaltenzahl einer Matrix zu bezeichnen.