Matrizes, são tabelas retangulares de números, expressões matemáticas ou símbolos, cujo elementos são arranjados em \(n\) linhas e \(p\) colunas. A matrix M abaixo, por exemplo, organiza cada elemento \(a_{ij}\) em 2 linhas e 3 colunas.
\[A = \begin{pmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\end{pmatrix}\]
Em R, a matriz é uma estrutura de dados homogênea (deve conter mesmo tipo de dados, e.i. numérico, caracteres, lógico) de duas dimensões. Sua sintaxe básica é realizada por meio da função matrix()
, tendo como argumentos os elementos que compõem a matriz, na forma de um vetor, e o número de linhas e colunas.
M = matrix(data = 1:9, nrow = 3, ncol = 3)
print(M)
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
Por default os elementos são organizados por coluna na matriz, caso se deseje que estes sejam organizados por linha usa-se o argumento byrow = TRUE
.
M2 = matrix(data = 1:9, nrow = 3, ncol = 3, byrow = TRUE)
print(M2)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
A função matrix()
, na realidade, organiza as dimensões de um vetor qualquer. Na prática, não é necessário informar o número de linhas e de colunas se o vetor de dados é informado, contudo, tal prática falicita a leitura do código.
V3 = c(12, 23, 34, 45, 56, 67)
M3 = matrix(data = V3, nrow = 3)
print(M3)
## [,1] [,2]
## [1,] 12 45
## [2,] 23 56
## [3,] 34 67
Para criar uma matriz contendo um único valor, e.g. matriz nula, informa-se este valor no argumento data
em conjunto com o número de linhas e colunas.
M4 = matrix(data = 0, nrow = 3, ncol = 5)
print(M4)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0 0 0 0 0
## [2,] 0 0 0 0 0
## [3,] 0 0 0 0 0
Caso seja de interesse alocar uma matriz vazia, basta informar os argumentos ncol
e nrow
. Esta será completada com o valor lógico NA
(do inglês, not avaliable).
M5 = matrix(nrow = 4, ncol = 5)
print(M5)
## [,1] [,2] [,3] [,4] [,5]
## [1,] NA NA NA NA NA
## [2,] NA NA NA NA NA
## [3,] NA NA NA NA NA
## [4,] NA NA NA NA NA
Para ilustar as operações entre matrizes usaremos as seguintes matrizes para fins de cálculo.
\[\begin{matrix} M_{6} = \begin{pmatrix} 2 & 5\\ 3 & 6 \end{pmatrix} & & M_{7} = \begin{pmatrix} 5 & 8\\ 3 & 2 \end{pmatrix}\\ & & \\ M_{8} = \begin{pmatrix} 2 & 6 & 0\\ 4 & 2 & 1 \end{pmatrix}& & M_{9} = \begin{pmatrix} 1 & 0.5 & 0.3\\ 0.5 & 1 & 0.9\\ 0.3 & 0.9 & 1 \end{pmatrix} \end{matrix}\]
M6 = matrix(c(2, 3, 5, 6), nrow = 2)
M7 = matrix(c(5, 3, 8, 2), nrow = 2)
M8 = matrix(c(2, 4, 6, 2, 0,1), nrow = 2, ncol = 3)
M9 = matrix(c(1, 0.5, 0.3, 0.5, 1, 0.9, 0.3, 0.9, 1), nrow = 3, ncol = 3)
Dada duas matrizes de mesma dimensionalidade, a matriz resultante da soma / substração destas matrizes corresponde à matriz cujos elementos são a soma / subtração dos elementos das matrizes originais.
\[\begin{pmatrix} a & b\\ c & d \end{pmatrix} + \begin{pmatrix} e & f\\ g & h \end{pmatrix} = \begin{pmatrix} a+e & b+f\\ c+g & d+h \end{pmatrix}\]
Em R, para a soma e substração de matrizes usa-se a mesma sintaxe que na operação entre escalares.
M_soma = M7 + M6
print(M_soma)
## [,1] [,2]
## [1,] 7 13
## [2,] 6 8
M_subt = M7 - M6
print(M_subt)
## [,1] [,2]
## [1,] 3 3
## [2,] 0 -4
Uma matriz de dimensionalidade qualquer quando multiplicada por um escalar k, tal que \(k \in \mathbb{R}\), resulta em uma matriz de mesmas dimensões cujos elementos são o produto do escalar \(k\) por cada um dos elementos da matriz original.
\[k\cdot \begin{pmatrix} a & b\\ c & d \end{pmatrix} = \begin{pmatrix} k\cdot a & k\cdot b\\ k\cdot c & k\cdot d \end{pmatrix}\]
Em R, utiliza-se a mesma sintaxe que na multiplicação entre escalares.
M_prod_escalar = 42 * M9
print(M_prod_escalar)
## [,1] [,2] [,3]
## [1,] 42.0 21.0 12.6
## [2,] 21.0 42.0 37.8
## [3,] 12.6 37.8 42.0
Os elementos da matriz resultante de uma multiplicação elemento a elemento entre duas matrizes de mesmas dimensões correspondem ao produto dos elementos equivalentes entre as matrizes originais.
\[\begin{pmatrix} a & b\\ c & d \end{pmatrix} \circ \begin{pmatrix} e & f\\ g & h \end{pmatrix} = \begin{pmatrix} a\cdot e & b\cdot f\\ c\cdot g & d\cdot h \end{pmatrix}\]
Em R, a multiplicação elemento a elemento é realizada por meio do operador *
desde que as matrizes tenham as mesmas dimensões.
M_prod_elemento = M6 * M7
print(M_prod_elemento)
## [,1] [,2]
## [1,] 10 40
## [2,] 9 12
A multiplicação entre uma matriz (n x m) por uma matriz (m x p), em que \(m, n, p \in \mathbb{\mathbb{N}^{+}}\), resulta em uma matriz de dimensões (n x p), cujos elementos são a somatória do produto entre os elementos em linha da matriz que pré-multiplica pelos elementos em coluna da matriz que pós-multiplica.
\[\begin{pmatrix} a & b\\ c & d \end{pmatrix} \cdot \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}\]
Em R, a multiplicação matricial clássica é desenvolvida pelo uso do operador %*%
, respeitando a equidade entre o número de colunas da matriz que pré-multiplica e o número de linhas da matriz que pós-multiplica.
M_prod = M6 %*% M8
print(M_prod)
## [,1] [,2] [,3]
## [1,] 24 22 5
## [2,] 30 30 6
A transposta de uma matriz \(A_{n x m}\) é uma matriz \(M = A^{T}_{m x n}\), em que os elementos em coluna correspondem aos elementos em linha da matriz original.
\[\begin{pmatrix} a & b\\ c & d \end{pmatrix} ^ {T} = \begin{pmatrix} a & c\\ b & d \end{pmatrix}\]
Em R, a transposta de uma matriz é determinada pela pela função t()
.
M_transp = t(M8)
print(M_transp)
## [,1] [,2]
## [1,] 2 4
## [2,] 6 2
## [3,] 0 1
O determinante de uma matriz é uma função matricial que converte uma matriz quadrada em um escalar. Para uma matriz quadrada de ordem 2, o determinante é definido como:
\[det\begin{pmatrix} a & b\\ c & d \end{pmatrix} = a\cdot d - c\cdot b\]
Para uma matriz de ordem 3 ou superior, o determinante pode ser estimado pela seguinte equação:
\[det(A) = \sum^n_{j = 1} (-1)^{i+j} . a_{i j} . det(A_{-i -j})\]
Em que \(A_{-i -j}\) corresponde à matriz A excluindo-se a linha i e a coluna j. Por esta equação uma matriz de ordem n > 2 tem seu cálculo simplificado à soma de \(n^2\) determinantes originados da matriz A.
Em R, o determinante de uma matriz é calculado pela função det()
det(M7)
## [1] -14
A inversa de uma matriz quadrada qualquer cujo determinante seja não nulo, \(A_{n,n}\), é uma matriz de mesmas dimensões que atenda a seguinte condição:
\[A^{-1} \cdot A = I\]
Onde, \(I\) é a matriz identidade de mesma dimensão que a matriz \(A\).
A inversa de uma matriz é estimada pela função solve()
, mesma função utilizada para resolução de sistemas de equações em R.
M_inversa = solve(M6)
print(M_inversa)
## [,1] [,2]
## [1,] -2 1.6666667
## [2,] 1 -0.6666667
Facilmente, verifica-se a condição de existência da matriz inversa:
solve(M6)%*%M6
## [,1] [,2]
## [1,] 1 0
## [2,] 0 1
O traço de uma matriz é determinado extraindo os elementos da diagonal da matriz quadrada e então efetuando a soma dos seus elementos. Assim, para uma matriz quadrada de ordem 2, o traço é determinado por:
\[tr\begin{pmatrix} a & b\\ c & d \end{pmatrix} = a + d\]
Em R, a obtenção do traço passa pela extração dos elementos da diagonal da matrix, por meio da função diag()
, e a soma destes elementos pela função sum()
.
sum(diag(M6))
## [1] 8
A decomposição própria (decomposição espectral) consiste em escrever uma matriz A diagonalizável qualquer em termos de seus auto-vetores (\(v\)) e auto-valores (\(\lambda\)). Na estatística, tal decomposição é base da técnica de componentes principais, na qual os auto-vetores correspondem às direções de maior variabilidade (componentes principais) e os auto-valores são uma medida da explicação da variabilidade dos dados originais fornecida pelas componentes principais. Desta forma, chega-se a seguinte expressão:
\[A = v^{-1}\cdot \lambda\cdot v\]
Em R, a obtenção da matriz de auto-valores e auto-vetores é realizada por meio da função eigen()
.
eigen(M7)
## $values
## [1] 8.623475 -1.623475
##
## $vectors
## [,1] [,2]
## [1,] 0.9109185 -0.7702626
## [2,] 0.4125863 0.6377269
No objeto $values
se encontram os autovalores da matrix original, enquanto o objeto $vectors
apresenta os autovetores, em coluna, na matriz resultante.
É ponto em comum, entre diversas técnicas estatísticas, o uso de matrizes de correlação, covariância e de distâncias. Estas são matrizes quadradas e simétricas, cujos elementos correspondem à propriedade que dá nome à matriz entre duas variáveis (covariância e correlação) ou entre duas observações (distância) de um conjunto de dados.
Para exemplificar estas matrizes, nas próximas seções, utilizaremos o banco de dados nativo do R: women
. Este conjunto de dados contém a altura média e peso médio das mulheres de 15 estados americanos.
knitr::kable(x = women, align = 'c')
height | weight |
---|---|
58 | 115 |
59 | 117 |
60 | 120 |
61 | 123 |
62 | 126 |
63 | 129 |
64 | 132 |
65 | 135 |
66 | 139 |
67 | 142 |
68 | 146 |
69 | 150 |
70 | 154 |
71 | 159 |
72 | 164 |
A covariância de duas variáveis, X e Y, é definida por:
\[cov(X, Y)= \frac{1}{n} \left [ \sum_{i=1}^{n} x_{i}y_{i} - \frac{1}{n} \left ( \sum_{i=1}^{n} x_i \right ) \left ( \sum_{i=1}^{n} y_i \right ) \right ]\]
Para gerar a matriz de covariâncias no R, utilizamos a função cov()
:
cov(women)
## height weight
## height 20 69.0000
## weight 69 240.2095
A correlação constitui a padronização da correlação pelo produto do desvio padrão das variáveis X e Y.
\[\rho_{X,Y}={\mathrm{cov}(X,Y) \over \sigma_X \sigma_Y}\]
A geração da matriz de correlação em R se dá pela função cor()
:
cov(women)
## height weight
## height 20 69.0000
## weight 69 240.2095
Uma matriz de distâncias apresenta a métrica de distâncias (e.g. distância euclidiana) entre duas observações. No R, a função dist()
utiliza como default a distância euclidiana e retorna apenas a diagonal inferior da matriz de distância, visto a simetria da matriz.
dist(women[1:5, ]) # Matriz de distância das 5 primeiras observações
## 1 2 3 4
## 2 2.236068
## 3 5.385165 3.162278
## 4 8.544004 6.324555 3.162278
## 5 11.704700 9.486833 6.324555 3.162278
1. Em R, defina uma matriz de dimensão 2 x 2 e outra de dimensões 6 x 2.
2. Calcule o determinante da primeira matriz e de sua transposta.
3. Qual a matriz resultante do produto da primeira matriz pela transposta da segunda?
4. Calcule a razão entre o determinante pelo traço da primeira matriz.
5. Calcule a matriz de variância, covariância e de distâncias a partir do dataset cars
.