Sei sulla pagina 1di 9

17/09/2018 RPubs - Aula 1: Álgebra Matricial em R

Álgebra Matricial em R
Adelmo Filho ( adelmo.aguiar.filho@gmail.com )
29 de setembro de 2016

Matrizes
Matrizes, são tabelas retangulares de números, expressões matemáticas ou símbolos, cujo elementos são arranjados em
n nlinhas e p p colunas. A matrix M abaixo, por exemplo, organiza cada elemento a ij aij em 2 linhas e 3 colunas.

a 11 a 12 a 13
A=( )
a 21 a 22 a 23
A=(a11a12a13a21a22a23)

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)

https://rpubs.com/adelmofilho/AlgebraMatricial 1/9
17/09/2018 RPubs - Aula 1: Álgebra Matricial em R

## [,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

Operações matriciais
Para ilustar as operações entre matrizes usaremos as seguintes matrizes para fins de cálculo.

2 5 5 8
M6 = ( ) M7 = ( )
3 6 3 2

2 6 0 ⎛ 1 0.5 0.3 ⎞
M8 = ( ) M 9 = ⎜ 0.5 1 0.9 ⎟
4 2 1 ⎝ 0.3 0.9 1 ⎠
M6=(2536)M7=(5832)M8=(260421)M9=(10.50.30.510.90.30.91)

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)

https://rpubs.com/adelmofilho/AlgebraMatricial 2/9
17/09/2018 RPubs - Aula 1: Álgebra Matricial em R

Soma e subtração
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.

a b e f a+e b+f
( )+( )=( )
c d g h c+g d+h
(abcd)+(efgh)=(a+eb+fc+gd+h)

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

Multiplicação por escalar


Uma matriz de dimensionalidade qualquer quando multiplicada por um escalar k, tal que k ∈ R k∈R, resulta em uma matriz de
mesmas dimensões cujos elementos são o produto do escalar k k por cada um dos elementos da matriz original.

a b k⋅a k⋅b
k⋅( )=( )
c d k⋅c k⋅d
k⋅(abcd)=(k⋅ak⋅bk⋅ck⋅d)

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

https://rpubs.com/adelmofilho/AlgebraMatricial 3/9
17/09/2018 RPubs - Aula 1: Álgebra Matricial em R

Multiplicação elemento a elemento


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.

a b e f a⋅e b⋅f
( )∘( )=( )
c d g h c⋅g d⋅h
(abcd)∘(efgh)=(a⋅eb⋅fc⋅gd⋅h)

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

Multiplicação matricial
A multiplicação entre uma matriz (n x m) por uma matriz (m x p), em que m, n, p ∈ N+ m,n,p∈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.

a b e f a⋅e+b⋅g a⋅f+b⋅h
( )⋅( )=( )
c d g h c⋅e+d⋅g c⋅f+d⋅h
(abcd)⋅(efgh)=(a⋅e+b⋅ga⋅f+b⋅hc⋅e+d⋅gc⋅f+d⋅h)

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

Transposta de uma matriz


A transposta de uma matriz A nxm Anxm é uma matriz M = A T
mxn M=AmxnT, em que os elementos em coluna correspondem
aos elementos em linha da matriz original.

https://rpubs.com/adelmofilho/AlgebraMatricial 4/9
17/09/2018 RPubs - Aula 1: Álgebra Matricial em R
T
a b a c
( ) =( )
c d b d
(abcd)T=(acbd)

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

Determinante de uma matriz


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:

a b
det ( )=a⋅d−c⋅b
c d
det(abcd)=a⋅d−c⋅b

Para uma matriz de ordem 3 ou superior, o determinante pode ser estimado pela seguinte equação:

n
det(A) = ∑ (−1) i+j . a ij . det(A −i−j )
j=1
det(A)=∑j=1n(−1)i+j.aij.det(A−i−j)

Em que A −i−j 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 n2 determinantes originados da matriz A.

Em R, o determinante de uma matriz é calculado pela função det()

det(M7)

## [1] -14

Inversa de uma matriz


A inversa de uma matriz quadrada qualquer cujo determinante seja não nulo, A n,n An,n, é uma matriz de mesmas dimensões
que atenda a seguinte condição:

A −1 ⋅ A = I
https://rpubs.com/adelmofilho/AlgebraMatricial 5/9
17/09/2018 RPubs - Aula 1: Álgebra Matricial em R
A−1⋅A=I

Onde, I I é a matriz identidade de mesma dimensão que a matriz A 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

Traço de uma matriz


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:

a b
tr ( )=a+d
c d
tr(abcd)=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

Eigendecomposição de uma matriz


A decomposição própria (decomposição espectral) consiste em escrever uma matriz A diagonalizável qualquer em termos de
seus auto-vetores (vv) e auto-valores (λ λ). 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:

https://rpubs.com/adelmofilho/AlgebraMatricial 6/9
17/09/2018 RPubs - Aula 1: Álgebra Matricial em R

A = v−1 ⋅ λ ⋅ v
A=v−1⋅λ⋅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.

Matrizes na análise estatística


É 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

https://rpubs.com/adelmofilho/AlgebraMatricial 7/9
17/09/2018 RPubs - Aula 1: Álgebra Matricial em R

height weight

72 164

Covariância
A covariância de duas variáveis, X e Y, é definida por:

1 n 1 n n
cov(X, Y ) = [∑ x i yi − (∑ x i ) (∑ yi )]
n i=1 n i=1 i=1
cov(X,Y)=1n[∑i=1nxiyi−1n(∑i=1nxi)(∑i=1nyi)]

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

Correlação
A correlação constitui a padronização da correlação pelo produto do desvio padrão das variáveis X e Y.

cov(X, Y )
ρ X,Y =
σX σY
ρX,Y=cov(X,Y)σXσ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

Distâncias
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.

https://rpubs.com/adelmofilho/AlgebraMatricial 8/9
17/09/2018 RPubs - Aula 1: Álgebra Matricial em R

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

Exercícios
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 .

https://rpubs.com/adelmofilho/AlgebraMatricial 9/9

Potrebbero piacerti anche