R Code [zeigen / verbergen]
matrix(c(3, 5, 6,
3, 8, 1), byrow = TRUE, nrow = 2)
[,1] [,2] [,3]
[1,] 3 5 6
[2,] 3 8 1
Letzte Änderung am 28. September 2023 um 16:30:14
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.
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.
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} \]
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.
<- tibble(statistic = c(84, 82, 81, 89, 73),
points_tbl programing = c(85, 82, 72, 77, 63),
math = c(97, 92, 93, 91, 88))
%>% cov() points_tbl
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.
%>% cor() points_tbl
statistic programing math
statistic 1.0000000 0.7216633 0.5029173
programing 0.7216633 1.0000000 0.8098994
math 0.5029173 0.8098994 1.0000000
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} \]
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 5.8 springen um dir einmal an einem weiteren Beispiel die Matrixmultiplikation anzuschauen.
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.
<- matrix(c(2, 3, 6, 7), ncol = 2)
A A
[,1] [,2]
[1,] 2 6
[2,] 3 7
<- matrix(c(0, 5, 4, 1), ncol = 2)
B B
[,1] [,2]
[1,] 0 4
[2,] 5 1
+ B A
[,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.
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\).
<- matrix(c(3, 2, 4, 6), byrow = TRUE, ncol = 2)
A 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.
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.
<- matrix(c(4, 3, 2,
A 1, 0, 3), byrow = 2, ncol = 3)
A
[,1] [,2] [,3]
[1,] 4 3 2
[2,] 1 0 3
<- c(2, 0, 1)
B B
[1] 2 0 1
%*% B A
[,1]
[1,] 10
[2,] 5
Am Ende kommt das Ergebnis raus, was wir auch erwartet haben.