7  Berechnungen mit Matrizen

Letzte Änderung am 28. September 2023 um 16:30:14

7.1 Grundlagen Matrizen

Du findest dann hinter diesem Link auch Mathehilfe zu Vektor, Matrizen und Co.. Du kannst auf der Seite mal stöbern, ob du da was findest was dir hilft.

Wir nutzen Matrizen vor allem wenn es um zwei Dinge in der Statistik geht.

  1. Korrelationsmtarix oder die verwandte Varianz/Covarianzmatrix. In beiden steht die Streuung der Variablen in den Daten untereinander.
  2. Modellmatrix, wenn wir ein Modell aufbauen und verstehen wollen wie sich die Variablen in \(x\) auf das Outcome \(y\) auswirken.

Allgemein gesprochen bestehen Matrizen aus \(m\) Zeilen und \(n\) Spalten, weshalb sie auch (\(m\),\(n\))-Matrizen genannt werden. Die Dimension einer einzelnen Matrix mit \(m\) Zeilen und \(n\) Spalten ist \(m \times n\). Hier musst du nochmal aufpassen, das \(n\) steht hier nicht für die Anzahl an Beobachtungen. Ja, es kann übereinstimmen, aber hier ist es einfach nur die Zahl für die Dimension der Matrix.

Wichtig ist, dass wir uns hier auf Teilaspekte der Matrixrechnung konzentrieren. Es gibt natürlich noch viel mehr, aber hier schauen wir uns das Basiswissen an, was du dann in den Statistikteilen benötigst oder aber als Grundlage für andere Fächer.

Wir schreiben also für die Matrix \(A\) die Matrix wie folgt auf.

\[ \begin{aligned} A = \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots &\vdots & \ddots &\vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{pmatrix} \end{aligned} \] Neben der Darstellung mit den runden Klammern, gibt es auch noch die Darstellung mit den eckigen Klammern. Beide Arten sind im Prinzip nutzbar. Es macht keinen großen Unterschied von der mathematischen Seite. Wir wollen hier aber die runden Klammern nutzen um nicht später uns in R zu verwirren.

\[ A = \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \end{bmatrix} \] Im Prinzip haben wir damit eine Matrix zusammen. Schauen wir noch schnell, wie wir eine Matrix in R aufbauen. Wir nutzen die Option byrow = TRUE um der Funktion matrix() mitzuteilen, dass wir die Matrix zeilenweise auffüllen wollen. Einzelne Werte in einer Matrix können wir mit den eckigen Klammern [] ansprechen. Daher für die Mathematik die runden Klammern.

matrix(c(3, 5, 6,
         3, 8, 1), byrow = TRUE, nrow = 2)
     [,1] [,2] [,3]
[1,]    3    5    6
[2,]    3    8    1

Schauen wir uns nun verschiedene Matrizen an, die in dem mathematischen Maße besonders sind, dass diese Matrizen einen eigenen Namen erhalten haben.

7.2 Einheitsmatrix

Die Einheitsmatrix \(A_E\) besteht nur aus 0’en auf der Nebendiagonalen und 1’sen auf der Diagonalen. Damit ist die Matrix der Standard in vielen statistischen Verfahren, wenn wir keine besondere Varianzstruktur annehmen.

\[ A_E = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} \]

7.3 Diagonalmatrix

Die Diagnoalmatrix \(A_D\) besteht nur aus 0’en auf der Nebendiagonalen und beliebigen Werten auf der Diagonalen. Häufig sind die Werte in der Statistik auf der Diagonalen die Varianzen. Wenn die Variablen nicht miteinander korrelieren, dann sind die Nebendiagonalen 0.

\[ A_D=\begin{pmatrix} 4 & 0 & 0 \\ 0 & 8 & 0 \\ 0 & 0 & 3 \end{pmatrix} \]

Eine klassische Varian/Covarianzmatrix würde wie folgt aussehen. Wir bauen uns einen Datensatz mit den Noten von 5 Schülern über die Fächer Statistik, Informatik und Mathematik. Die Funktion cov() gibt uns die Varianz/Covarianzmatrix wieder.

points_tbl <- tibble(statistic = c(84, 82, 81, 89, 73),
                     programing = c(85, 82, 72, 77, 63),
                     math = c(97, 92, 93, 91, 88)) 
points_tbl %>% cov()
           statistic programing  math
statistic      33.70      36.45  9.55
programing     36.45      75.70 23.05
math            9.55      23.05 10.70

Wie wir auch schnell überprüfen können, sind auf der Diagonalen die Varianzen von den jeweiligen Fächern zu finden. In der Nebendiagonalen finden sich die Covarianzen. Also die Varianzen für das gemeinsame Variieren zwischen den Fächern und den fünf Schülern.

points_tbl %>% 
  summarise(var(statistic), var(programing), var(math))
# A tibble: 1 × 3
  `var(statistic)` `var(programing)` `var(math)`
             <dbl>             <dbl>       <dbl>
1             33.7              75.7        10.7

Wir können uns dann auch die passende Korrelationmatrix mit der Funktion cor() ausgeben lassen. wir skalieren dadurch die Varianz/Covarianzmatrix auf eine Diagonalen mit nur 1’sen und der Korrelation in den Nebendiagonalen. Die Korrelationsmatrix ist an der Diagonalen gespiegelt.

points_tbl %>% cor()
           statistic programing      math
statistic  1.0000000  0.7216633 0.5029173
programing 0.7216633  1.0000000 0.8098994
math       0.5029173  0.8098994 1.0000000

7.4 Stochastische Matrix

Eine stochastische Matrix \(A_S\) enthält nur Zahlen zwischen 0 und 1. Damit besteht eine stochastische Matrix aus Wahrscheinlichkeiten. Die Wahrscheinlichkeiten addieren sich entweder über die Zeilen oder über die Spalten zu 1 auf. In selten Fällem kann es auch sein, dass sich die Zeilen und Spalten auf 1 aufaddieren.

\[ A_S=\begin{pmatrix} 0.25 & 0.5 & 0.25 \\ 0.25 & 0.25 & 0.5 \\ 0.5 & 0.25 & 0.25 \end{pmatrix} \]

7.5 Vom linearen Gleichungssystem zur Matrix

Eine Stärke von Matrizen in der Statistik ist, dass wir mit der Matrix auch Gleichungssysteme darstellen können. Damit können wir in der linearen Regression auch komplexere Modelle sauber darstellen. Im Folgenden siehst du drei Gleichungen.

\[ \begin{aligned} –2x_1 + 4x_2 + 1x_3 &= 0 \\ 1x_1 + 2x_2 + 0x_3 &= 15 \\ 5x_1 + 3x_2 + 1x_3 &= 88 \end{aligned} \]

Diese drei Gleichungen können wir auch in drei Matrizen übersetzen. Wir brauchen einmal eine Matrix in der die Zahlen stehen, die vor dem \(x_1\) bis \(x_3\) stehen würden. Dann ein Vektor mit den Abkürzungen nach den Zahlen, also \(x_1\), \(x_2\) und \(x_3\). Abschließend noch der Vektor mit den Ergebnissen. Wie du sehen kannst, multiplizieren wir die erste Matrix mit dem ersten Vektor und erhalten den Ergebnisvektor.

\[ \begin{pmatrix} -2 & 4& 1 \\ 1 & 2 & 0 \\ 5 & 3 & 1 \end{pmatrix} \cdot \begin{pmatrix} x_1 \\ x_2 \\ x_3 \end{pmatrix} = \begin{pmatrix} 0 \\ 15 \\ 88 \end{pmatrix} \] Du kannst in den Abschnitt Kapitel 7.8 springen um dir einmal an einem weiteren Beispiel die Matrixmultiplikation anzuschauen.

7.6 Zwei Matrizen addieren

Wenn wir zwei Matrizen \(A\) und \(B\) haben, die die gleiche Dimension haben, dann können wir die beiden Matrizen einfach addieren.

\[ A=\begin{pmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{pmatrix}; \qquad B=\begin{pmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{pmatrix} \] Im Folgenden sehen wir einmal die Addition der beiden Matrizen.

\[ A \pm B = \begin{pmatrix} a_{11}\pm b_{11} & a_{12}\pm b_{12} \\ a_{21}\pm b_{21} & a_{22}\pm b_{22} \end{pmatrix} \]

In R geht es ebenfalls einfach die beiden Matrizen zu addieren.

A <- matrix(c(2, 3, 6, 7), ncol = 2)
A
     [,1] [,2]
[1,]    2    6
[2,]    3    7
B <- matrix(c(0, 5, 4, 1), ncol = 2)
B
     [,1] [,2]
[1,]    0    4
[2,]    5    1
A + B
     [,1] [,2]
[1,]    2   10
[2,]    8    8

Wir nutzen die Addition relativ selten. Häufiger werden wir eine Matrix mit einer Zahl oder einem Vektor multiplizieren.

7.7 Eine Matrix mit einer Zahl multiplizieren

Wenn wir eine eine Matrix \(A\) mit einer Zahl \(r\) oder auch Skalar genannt multiplizieren dann multiplizieren wir jeden einzelnen Wert der Matrix mit dieser Zahl.

\[ r \cdot \underbrace{ \begin{pmatrix} 3 & 2 \\ 4 & 6 \end{pmatrix}}_{A} = \begin{pmatrix} 3 \cdot r & 2 \cdot r \\ 4 \cdot r & 6 \cdot r \end{pmatrix} \]

Auch hier lässt sich der Zusammenhang einfach in R nachvollziehen. Wir bauen uns wieder die Matrix \(A\) und multiplizieren die Matrix \(A\) mit dem Skalar \(r = 4\).

A <- matrix(c(3, 2, 4, 6), byrow = TRUE,  ncol = 2)
A
     [,1] [,2]
[1,]    3    2
[2,]    4    6
4 * A
     [,1] [,2]
[1,]   12    8
[2,]   16   24

Neben der Multiplikation mit einer Zahl brauchen wir häufiger die Multiplikation einer Matrix mit einem Vektor.

7.8 Eine Matrix mit einem Vektor multiplizieren

Wenn wir eine Matrix mit einem Vektor multiplizieren wollen, dann müssen die Matrix und der Vektor zueinander passen. In unseren Fällen, wie wir häufig betrachten muss die Matrix die Anzahl an Spalten haben die der Länge des Vektors enspricht. In unseren Beispiel haben wir drei Spalten und somit muss der Vektor auch eine Länge von drei Einträgen haben.

\[ \begin{pmatrix} 4 & 3 & 2 \\ 1 & 0 & 3 \end{pmatrix} \cdot \begin{pmatrix} 2 \\ 0 \\ 1 \end{pmatrix} = \begin{pmatrix} 4 \cdot 2+ 3 \cdot 0 +2 \cdot 1 \\ 1 \cdot 2+ 0 \cdot 0 +3 \cdot 1 \end{pmatrix} = \begin{pmatrix} 10 \\ 5 \end{pmatrix} \]

Wii können das Beispiel auch wieder in R nachvollziehen. In R gibt es keine Funktion mit Namen vector. Die Funktion c() erschafft einen Vektor. Wenn wir Matrizen oder Vektoren miteinander multipizieren wollen und anschließend aufaddieren, dann müssen wir den Operator %*% nutzen.

A <- matrix(c(4, 3, 2,
              1, 0, 3), byrow = 2, ncol = 3)
A
     [,1] [,2] [,3]
[1,]    4    3    2
[2,]    1    0    3
B <- c(2, 0, 1)
B
[1] 2 0 1
A %*% B
     [,1]
[1,]   10
[2,]    5

Am Ende kommt das Ergebnis raus, was wir auch erwartet haben.