- Объяснить что такое матрицы и какие бывают их основные разновидности
- Выполнить базовые операции с матрицами с использованием функций R
- Применить в среде R методы линейной алгебры для решения простейших задач
\[\begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1c} \\ a_{21} & a_{22} & \cdots & a_{2c} \\ \vdots & \vdots & \ddots & \vdots \\ a_{r1} & a_{r2} & \cdots & a_{rc} \end{pmatrix} \]
Размер (порядок) матрицы \(r \times c\)
\[ \textbf {a} = \begin{pmatrix} 1 & 2 & 3 \end{pmatrix} \] Вектор-строка (Row matrix)
\[ \textbf {b} = \begin{pmatrix} 1 \\ 4 \\ 7 \\ 10 \end{pmatrix} \] Вектор-столбец (column matrix)
\[ \textbf {C} = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ 10 & 11 & 12 \end{pmatrix} \]
\[ \textbf {D} = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{pmatrix} \]
Прямоугольные матрицы (rectangular matrices)
В таком виде обычно представляются исходные данные при многомерном анализе.
В такой матрице столбцы - признаки (p), а строки - объекты (n).
Лучше, когда n > p, то есть когда объектов больше, чем признаков.
Это наиболее “операбельные” матрицы
\[ \textbf {E} = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{pmatrix} \]
Диагональные матрицы (diagonal matrix)
\[ \textbf {F} = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 5 & 0 & 0 \\ 0 & 0 & 9 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \]
Треугольные матрицы (triangular matrices) \[ \textbf {H} = \begin{pmatrix} 1 & 2 & 3 & 4 \\ 0 & 5 & 6 & 7 \\ 0 & 0 & 9 & 10 \\ 0 & 0 & 0 & 1 \end{pmatrix} \]
или
\[ \textbf {H} = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 3 & 5 & 0 & 0 \\ 4 & 7 & 9 & 0 \\ 5 & 8 & 10 & 11 \end{pmatrix} \]
Единичная матрица (identity matrix)
\[ \textbf {I} = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \]
Единичная матрица (обозначение \(\textbf{I}\)) занимают особое место в матричной алгебре.
Она выполняет ту же роль, которую выполняет единица в обычной алгебре.
Изначально результаты исследования имеют вид исходной матрицы (обычно прямоугольной)
\[ \textbf{Y} = [n_{objects} \times p_{descriptors}] \]
Информация из этой матрицы конденсируется в двух других матрицах
Q анализ
\[ \textbf{A}_{nn} = [n_{objects} \times n_{objects}] \]
R анализ
\[ \textbf{A}_{pp} = [p_{descriptors} \times p_{descriptors}] \]
Это симметричные квадратные матрицы
\[ \textbf{A}_{pp} = \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1p} \\ a_{21} & a_{22} & \cdots & a_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ a_{p1} & a_{p2} & \cdots & a_{pp} \end{pmatrix} \]
В этой матрице \(a_{ij} = a_{ji}\)
Большинство многомерных методов имеет дело именно с такими матрицами
Для квадратных матриц могут быть найдены (но не обязательно существуют) некоторые важные для линейной алгебры показатели: определитель, инверсия, собственные значения и собственные векторы
Создайте с помощью R следующие матрицы
## [,1] [,2] [,3] ## [1,] 1 5 9 ## [2,] 2 6 10 ## [3,] 3 7 11 ## [4,] 4 8 12
## [,1] [,2] [,3] [,4] [,5] ## [1,] 1 0 0 0 0 ## [2,] 0 2 0 0 0 ## [3,] 0 0 3 0 0 ## [4,] 0 0 0 4 0 ## [5,] 0 0 0 0 5
A <- matrix(1:12, ncol = 3) A
## [,1] [,2] [,3] ## [1,] 1 5 9 ## [2,] 2 6 10 ## [3,] 3 7 11 ## [4,] 4 8 12
Транспонированная матрица \(\textbf{B} = \textbf{A}'\) синонимичная запись \(\textbf{B} = \textbf{A}^{T}\)
B <- t(A) B
## [,1] [,2] [,3] [,4] ## [1,] 1 2 3 4 ## [2,] 5 6 7 8 ## [3,] 9 10 11 12
A + 4
## [,1] [,2] [,3] ## [1,] 5 9 13 ## [2,] 6 10 14 ## [3,] 7 11 15 ## [4,] 8 12 16
A + A
## [,1] [,2] [,3] ## [1,] 2 10 18 ## [2,] 4 12 20 ## [3,] 6 14 22 ## [4,] 8 16 24
Но! Нельзя складывать матрицы разных размеров
A + B
Умножение на число
A * 4
## [,1] [,2] [,3] ## [1,] 4 20 36 ## [2,] 8 24 40 ## [3,] 12 28 44 ## [4,] 16 32 48
Простое умножение матрицы на вектор возможно только если число элементов в векторе равно числу строк в матрице
A * c(10, 11, 12, 13)
## [,1] [,2] [,3] ## [1,] 10 50 90 ## [2,] 22 66 110 ## [3,] 36 84 132 ## [4,] 52 104 156
Все элементы первой строки матрицы умножаются на первый элемент вектора, все элементы второй строки на второй элемент вектора и т.д.
Мы уже привыкли, что в языке R все основано на векторных операциях.
Вектор – это последовательность чисел: \((x_1, x_2, ..., x_n)\).
Примеры векторов
seq(1, 10, 2)
## [1] 1 3 5 7 9
rnorm(10, 0, 1)
## [1] 0.384 0.191 -0.771 -1.629 1.795 1.065 0.997 -0.398 -1.408 ## [10] 1.108
НО! Почему одно число тоже вектор?
runif(1)
## [1] 0.624
У матричных объектов есть геометрическая интерпретация.
Пусть у нас есть одно единственное число, например, “10”.
Его можно представить, как точку на числовой оси.
Но! Это же самое число можно представить в виде вектора, направленного отрезка, идущего от точки “0” к точке “10”
Геометрической интерпретацией вектора является направленный отрезок в n-мерном пространстве с началом в точке \((0, 0 .... 0)\).
Если в векторе всего два числа, то это направленный отрезок на плоскости.
Пример: vec = (1, 5)
По теореме Пифагора
\[ R = \sqrt{b_1^2 + b_2^2} \]
Пусть есть вектор: \(\textbf{b} = b_1, b_2, \dots, b_n\)
Длина вектора, или норма вектора
\[ ||\textbf{b}|| = \sqrt{b_1^2 + b_2^2 + \dots + b_n^2} \]
Длина вектора
Vec <- 1:5 sqrt(sum(Vec^2))
## [1] 7.42
norm(t(Vec), type = "F") #Аналогчное решение
## [1] 7.42
Допустимо только для векторов одинаковой размерности
\[ \textbf{a} \cdot \textbf{b} = \begin{pmatrix} a_1 \\ a_3 \\ a_4 \\ a_5 \\ a_6 \\ a_7 \end{pmatrix} \times \begin{pmatrix} b_1 & b_3 & b_4 & b_5 & b_6 & b_7 \end{pmatrix} = a_1b_1 + a_2b_2 + ... + a_7b_7 = x \]
Это базовая операция для истинного матричного умножения.
Результат этой операции - число (скаляр)
В доме есть следующие электроприборы.
Электроприбор | Количество | Мощность (Вт) |
---|---|---|
Чайник | 2 шт | 1200 |
Обогреватели | 3 шт. | 1300 |
Осушитель | 1 шт. | 1100 |
Стиральная машина | 1 шт. | 1500 |
Фен | 2 шт. | 800 |
Вопрос: Какова будет суммарная мощность всех электроприборов, если их включить одновременно?
a <- c(2, 3, 1, 1, 2) b <- c(1200, 1300, 1100, 1500, 800) a %*% b
## [,1] ## [1,] 10500
Скалярное произведение равно произведению длин векторов на \(cos\) угла между ними
\[ \textbf{a} \cdot \textbf{b} = ||\textbf{a}|| \times ||\textbf{b}|| \times \cos(\alpha) \]
Пусть у нас есть два вектора: \(\textbf{a} = 1, 5\) и \(\textbf{b} = 0.25, 4\)
Если угол между векторами равен 90 градусов, то такие векторы называются ортогональными.
У таких векторов скалярное произведение \(\textbf{a} \cdot \textbf{b} = 0\)
Выясните, являются ли ортогональными следующие векторы?
a <- c(0, 1) b <- c(1, 0) c <- c(1, 1) d <- c(1, -1)
Аналитическое решение
(a) %*% (b) #Ортогональны
## [,1] ## [1,] 0
(c) %*% (a) #Неортогональны
## [,1] ## [1,] 1
(c) %*% (b) #Неортогональны
## [,1] ## [1,] 1
(d) %*% (c) #Ортогональны
## [,1] ## [1,] 0
(c) %*% (a) #неортогональны
## [,1] ## [1,] 1
(b) %*% (d) #неортогональны
## [,1] ## [1,] 1
Геометрическое решение
Пусть, векторы отражают признаки объектов.
Что характеризует угол между векторами?
## Object1 Object2 ## Tr1 0.5 0.5 ## Tr2 0.0 3.0
norm(t(Dat[ ,1 ]), type = "F") #Длина вектора Tr1
## [1] 0.707
norm(t(Dat[ , 2]), type = "F") #Длина вектора Tr2
## [1] 3
Если
\[ \textbf{a} \cdot \textbf{b} = ||\textbf{a}|| \times ||\textbf{b}|| \times \cos(\alpha) \]
то
\[ \cos(\alpha) = \frac{\textbf{a} \cdot \textbf{b}} {||\textbf{a}|| \times ||\textbf{b}||} \]
cos_a <- (Dat[, 1] %*% Dat[, 2])/(norm(t(Dat[, 1]), type = "F") * norm(t(Dat[, 2]), type = "F")) cos_a
## [,1] ## [1,] 0.707
Угол между векторами - мера сонаправленности векторов…
\[ \cos(\alpha) = \frac{\textbf{a} \cdot \textbf{b}}{||\textbf{a}|| \times ||\textbf{b}||} = ? \]
vec_a <- c(1, 5) vec_b <- c(0.25, 4) cos_alpha <- vec_a %*% vec_b / (norm(t(vec_a), type = "F") * norm(t(vec_b), type = "F")) cos_alpha
## [,1] ## [1,] 0.991
\[ \cos(\alpha) = \frac{\textbf{a} \cdot \textbf{b}}{||\textbf{a}|| \times ||\textbf{b}||} = \frac{a_x \cdot b_x+a_y \cdot b_y}{\sqrt {a_x^2 + a_y^2} \times \sqrt {b_x^2 + b_y^2}} \]
Если вектор трехмерный
\[ \cos(\alpha) = \frac{\textbf{a} \cdot \textbf{b}}{||\textbf{a}|| \times ||\textbf{b}||} = \frac{a_x \cdot b_x + a_y \cdot b_y + a_z \cdot b_z } {\sqrt {a_x^2 + a_y^2 + a_z^2} \times \sqrt {b_x^2 + b_y^2 + b_z^2}} \]
Если вектор n-мерный
\[ \cos(\alpha) = \frac{\textbf{a} \cdot \textbf{b}}{||\textbf{a}|| \times ||\textbf{b}||} = \frac{\Sigma{(a_i\cdot b_i)}} {\sqrt {\Sigma{a_i^2}} \times \sqrt {\Sigma{b_i^2}}} \] Ничего не напоминает?
За точку отсчета взято начало координат, т.е. точка с координатами \(0, 0, \dots, 0\), тогда
\[ \cos(\alpha) = \frac{\textbf{a} \cdot \textbf{b}}{||\textbf{a}|| \times ||\textbf{b}||} = \frac{\Sigma{((a_i-0)\cdot (b_i - 0))}} {\sqrt {\Sigma{(a_i-0)^2}} \times \sqrt {\Sigma{(b_i-0)^2}}} \] Ничего не напоминает?
\[ r_{x,y} = \frac{\sum(x_i-\bar{x})(y_i-\bar{y})} {\sqrt{\sum(x_i-\bar{x})^2}\sqrt{\sum(y_i-\bar{y})^2}} = \frac{cov_{x,y}} {\sigma_x \sigma_y} \]
Ключевая разница - это наличие вот этих элементов в формуле: \(x_i-\bar{x}\) и \(y_i-\bar{y}\)
Как называется действие, которое описывается такими формулами?
\[ r_{x,y} = \frac{\sum(x_i-\bar{x})(y_i-\bar{y})} {\sqrt{\sum(x_i-\bar{x})^2}\sqrt{\sum(y_i-\bar{y})^2}} = \frac{cov_{x,y}} {\sigma_x \sigma_y} \]
Ключевая разница - это наличие вот этих элементов в формуле: \(x_i-\bar{x}\) и \(y_i-\bar{y}\)
Как называется действие, которое описывается такими формулами?
Это центрирование! Перевод начала координат в точку с координатами равными средним значениям векторов. Такая точка называется центроидом.
vectors <- data.frame(a = c(1, 5), b = c(0.25, 4), c = c(-3, 0)) vectors
## a b c ## 1 1 0.25 -3 ## 2 5 4.00 0
with(vectors, a %*% b/(norm(t(a), type = "F") * norm(t(b), type = "F")) )
## [,1] ## [1,] 0.991
with(vectors, a %*% c/(norm(t(a), type = "F") * norm(t(c), type = "F")) )
## [,1] ## [1,] -0.196
with(vectors, b %*% c/(norm(t(b), type = "F") * norm(t(c), type = "F")) )
## [,1] ## [1,] -0.0624
Пусть есть два вектора в 100-мерном пространстве
set.seed(12345) vec_1 <- rnorm(100, 10, 1) vec_2 <- -10*vec_1 + 10 + rnorm(100, 0, 10)
Коэффициент корреляции
cor(vec_1, vec_2)
## [1] -0.708
Косинус угла в 100-мерном пространстве
# Центрированные векторы vec_1_c <- as.vector(scale(vec_1, center = T, scale = F)) vec_2_c <- as.vector(scale(vec_2, center = T, scale = F)) cos_alpha <- (vec_1_c %*% vec_2_c)/(norm(t(vec_1_c), type = "F")*norm(t(vec_2_c), type = "F")) cos_alpha
## [,1] ## [1,] -0.708
Для многомерных методов важны взаимоотношения векторов, а не их истинные длины.
Для приведения векторов к соизмеримости проводят их нормализацию.
\[ \textbf{c} = \frac{\textbf{b}} {||\textbf{b}||} \]
Найдите нормализованный вектор для следующего вектора и определите его длину
Vec <- 1:5 Vec
## [1] 1 2 3 4 5
normalized_Vec <- Vec/norm(t(Vec), type = "F") normalized_Vec
## [1] 0.135 0.270 0.405 0.539 0.674
Длина нормализованного вектора
norm(t(normalized_Vec), type = "F")
## [1] 1
Исходные данные
## Object1 Object2 ## Tr1 0.5 0.5 ## Tr2 0.0 3.0
Нормализованные данные
## Object1 Object2 ## Tr1 0.707 0.707 ## Tr2 0.000 1.000
Характер взаимосвязи между нормализованными векторами такой же, как и у исходных векторов.
После нормализации, можно пренебречь разницами длин векторов.
\[ \mathbf{A} \times \mathbf{a} \]
Умножать можно только в том случае, если число столбцов в матрице равно количеству чисел в векторе.
Пусть, есть матрица \(\mathbf{A}\)
## [,1] [,2] [,3] ## [1,] 1 5 9 ## [2,] 2 6 10 ## [3,] 3 7 11 ## [4,] 4 8 12
A %*% c(10, 10, 10)
## [,1] ## [1,] 150 ## [2,] 180 ## [3,] 210 ## [4,] 240
Но! если поменять местами множители, то будет ошибка
c(10, 10, 10) %*% A
## Error in c(10, 10, 10) %*% A: неподобные аргументы
\[ \mathbf{a} \times \mathbf{A} \]
Умножать можно только в том случае, если количество чисел в векторе равно количеству строк в матрице.
c(10, 10, 10, 10) %*% A
## [,1] [,2] [,3] ## [1,] 100 260 420
Но! если поменять местами множители, то будет ошибка
A %*% c(10, 10, 10, 10)
## Error in A %*% c(10, 10, 10, 10): неподобные аргументы
Умножать можно только в том случае, если число колонок в первой матрице равно числу строк второй матрицы: \(\mathbf{A} \times \mathbf{B}\)
Пусть, есть матрица \(\mathbf{A}\)
## [,1] [,2] [,3] ## [1,] 1 5 9 ## [2,] 2 6 10 ## [3,] 3 7 11 ## [4,] 4 8 12
и матрица \(\mathbf{B}\)
## [,1] [,2] [,3] [,4] ## [1,] 1 2 3 4 ## [2,] 5 6 7 8 ## [3,] 9 10 11 12
A %*% B
## [,1] [,2] [,3] [,4] ## [1,] 107 122 137 152 ## [2,] 122 140 158 176 ## [3,] 137 158 179 200 ## [4,] 152 176 200 224
НО! Нельзя произвести такое умножение
A %*% A
## Error in A %*% A: неподобные аргументы
\[ \begin{pmatrix} A & B \\ C & D \\ \end{pmatrix} \times \begin{pmatrix} E & F \\ G & H\\ \end{pmatrix} = \begin{pmatrix} (A \cdot E + B \cdot G) & (A \cdot F + B \cdot H ) \\ (C \cdot E + D \cdot G) & (C \cdot F + D \cdot H) \\ \end{pmatrix} \]
Вектор это направленный n-мерный отрезок.
y = c(2,2,3,3,2,2,3,4,5,6,6,5,4,3,2) x = c(2,3,4,5,6,7,7,7,6,5,4,3,2,2,2)
Матрица - это система векторов
cbind((x), (y))
## [,1] [,2] ## [1,] 2 2 ## [2,] 3 2 ## [3,] 4 3 ## [4,] 5 3 ## [5,] 6 2 ## [6,] 7 2 ## [7,] 7 3 ## [8,] 7 4 ## [9,] 6 5 ## [10,] 5 6 ## [11,] 4 6 ## [12,] 3 5 ## [13,] 2 4 ## [14,] 2 3 ## [15,] 2 2
Два сцепленных 15-мерных вектора
и/или
15 сцепленных двумерных векторов.
Интерпретация матрицы, вариант 1
Matr <- as.data.frame(t(cbind((x), (y)))) Matr
## V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 ## 1 2 3 4 5 6 7 7 7 6 5 4 3 2 2 2 ## 2 2 2 3 3 2 2 3 4 5 6 6 5 4 3 2
Два вектора в 15-ти мерном пространстве
Изобразить на плоскости невозможно!
Интерпретация матрицы, вариант 2
Image <- cbind((x), (y)) Image
## [,1] [,2] ## [1,] 2 2 ## [2,] 3 2 ## [3,] 4 3 ## [4,] 5 3 ## [5,] 6 2 ## [6,] 7 2 ## [7,] 7 3 ## [8,] 7 4 ## [9,] 6 5 ## [10,] 5 6 ## [11,] 4 6 ## [12,] 3 5 ## [13,] 2 4 ## [14,] 2 3 ## [15,] 2 2
15 векторов в двумерном пространстве
Интерпретация матрицы, вариант 2
Аналогичное изображение
qplot(Image[,1], Image[,2] ) + geom_polygon(fill = "red") + coord_fixed()
Вращающая матрица \[ \textbf{Rot} = \begin{pmatrix} \cos\phi & -\sin \phi \\ \sin\phi & \cos\phi \end{pmatrix} \]
Поворот изображения на заданный угол
\[ \textbf{Y}_{rot} = \textbf{Rot} \times \textbf{Y} \]
phi <- 30 # Угол в градусах, # на который надо повернуть объект angle <- phi*pi/180 # Угол в радианах # Вращающая матрица Rot <- matrix(c(cos(angle), sin(angle), -sin(angle), cos(angle)), nrow = 2) # Перобразованние исходной матрицы # с помощью вращающей матрицы Image_trans <- t((Rot) %*% t(Image)) qplot(Image_trans[,1], Image_trans[,2] ) + geom_polygon(fill = "red") + coord_fixed()
Масштабирующая матрица \[ \textbf{Scale} = \begin{pmatrix} a & 0 \\ 0 & b \end{pmatrix} \]
\[ \textbf{Y}_{scaled} = \textbf{Scale} \times \textbf{Y} \]
Scale <- matrix(c(1, 0, 0, 2), nrow = 2) Image_trans2 <- t((Scale) %*% t(Image_trans)) qplot(Image_trans2[,1], Image_trans2[,2] ) + geom_polygon(fill = "red") + coord_fixed()
Во многих методах многомерной статистики применяется матрица ковариации.
Ковариация (согласованное отклонение от среднего):
\[ cov(X, Y) = \frac{1}{n - 1}\sum{(x_i - \bar{x})(y_i - \bar{y})} \]
\[ \textbf{S} = \frac{1}{n - 1} \textbf{Y}_{centered}'\textbf{Y}_{centered} \]
где \(\textbf{Y}_{centered}\) - центрированная матрица исходных значений
Центрирование - перемещение начала координат в точку с координатами, равными средним значениям (центроид)
То же самое, что ковариационная матрица, но только на основе стандартизованных исходных значений
\[ \textbf{R} = \frac{1}{n - 1} \textbf{Y}_{stand}'\textbf{Y}_{stand} \]
Исходная матрица
M <- matrix(c(1,2,3,4,5,5,2,1,2,5,2,1,3,5,4,6,8,4,0,2), ncol = 4) M
## [,1] [,2] [,3] [,4] ## [1,] 1 5 2 6 ## [2,] 2 2 1 8 ## [3,] 3 1 3 4 ## [4,] 4 2 5 0 ## [5,] 5 5 4 2
Матрица центрированных значений
Cent_M <- scale(M, center = TRUE, scale = FALSE) Cent_M
## [,1] [,2] [,3] [,4] ## [1,] -2 2 -1 2 ## [2,] -1 -1 -2 4 ## [3,] 0 -2 0 0 ## [4,] 1 -1 2 -4 ## [5,] 2 2 1 -2 ## attr(,"scaled:center") ## [1] 3 3 3 4
Вычислите ковариационную матрицу с помощью методов линейной алгебры и сравните ее с матрицей, полученной с помощью функции cov()
# Вычисление вручную Cov_M <- (t(Cent_M) %*% Cent_M)/(nrow(M) - 1) Cov_M
## [,1] [,2] [,3] [,4] ## [1,] 2.5 0.0 2.0 -4 ## [2,] 0.0 3.5 0.0 0 ## [3,] 2.0 0.0 2.5 -5 ## [4,] -4.0 0.0 -5.0 10
cov(M) # Стандартная функция R
## [,1] [,2] [,3] [,4] ## [1,] 2.5 0.0 2.0 -4 ## [2,] 0.0 3.5 0.0 0 ## [3,] 2.0 0.0 2.5 -5 ## [4,] -4.0 0.0 -5.0 10
По главной диагонали ковариационной матрицы лежат квадраты стандартных отклонений каждого из векторов (колонок, признаков) исходной матрицы
diag(Cov_M)
## [1] 2.5 3.5 2.5 10.0
Сравним
apply(M, 2, FUN = function(x)sd(x)^2)
## [1] 2.5 3.5 2.5 10.0
Для вычисления матрицы корреляций необходимо стандартизировать значения в исходной матрице
Stand_M <- scale(M, center = TRUE, scale = TRUE) Stand_M
## [,1] [,2] [,3] [,4] ## [1,] -1.265 1.069 -0.632 0.632 ## [2,] -0.632 -0.535 -1.265 1.265 ## [3,] 0.000 -1.069 0.000 0.000 ## [4,] 0.632 -0.535 1.265 -1.265 ## [5,] 1.265 1.069 0.632 -0.632 ## attr(,"scaled:center") ## [1] 3 3 3 4 ## attr(,"scaled:scale") ## [1] 1.58 1.87 1.58 3.16
# Вычисление вручную Cor_M <- (t(Stand_M) %*% Stand_M)/(nrow(M) - 1) Cor_M
## [,1] [,2] [,3] [,4] ## [1,] 1.0 0 0.8 -0.8 ## [2,] 0.0 1 0.0 0.0 ## [3,] 0.8 0 1.0 -1.0 ## [4,] -0.8 0 -1.0 1.0
cor(M) # Стандартная функция R
## [,1] [,2] [,3] [,4] ## [1,] 1.0 0 0.8 -0.8 ## [2,] 0.0 1 0.0 0.0 ## [3,] 0.8 0 1.0 -1.0 ## [4,] -0.8 0 -1.0 1.0
В ковариационной матрице содержится вся информация о варьировании признаков и о их взаимосвязи
Свойства этой матрицы позволяют раскладывать изменчивость на отдельные составляющие (про это у нас будет специальная лекция).
В линейной алгебре нет процедуры деления. Вместо нее используют обращение матриц.
\[ \textbf{X}^{-1}\textbf{X} = \textbf{I} \]
Обратить можно только такую матрицу, у которой определитель не равен нулю \[|\textbf{X}| \ne 0\]
Матрицы, у которых определитель \(|\textbf{X}| = 0\) называются сингулярными матрицами они не могут быть инвертированы.
Важно!: Только квадратные матрицы имеют обратную матрицу.
Для квадратных матриц справедливо \(\textbf{X} \textbf{X}^{-1} = \textbf{X}^{-1} \textbf{X}\)
Важное свойство: Если квадратная матрица состоит из ортогональных векторов (ортогональная матрица), то \(\textbf{X}' = \textbf{X}^{-1}\)
Создадим матрицу
## [,1] [,2] [,3] ## [1,] 1 2 3 ## [2,] 4 5 6 ## [3,] 7 8 10
Ее определитель
det(X)
## [1] -3
Обратная матрица
solve(X)
## [,1] [,2] [,3] ## [1,] -0.667 -1.33 1 ## [2,] -0.667 3.67 -2 ## [3,] 1.000 -2.00 1
По определению \(\textbf{X}^{-1}\textbf{X} = \textbf{I}\)
round(solve(X) %*% X )
## [,1] [,2] [,3] ## [1,] 1 0 0 ## [2,] 0 1 0 ## [3,] 0 0 1