Criando Matrizes no R - TC

TC School / Quant & Investimentos

Criando Matrizes no R

09/08/2021 às 14:49

TC School

Continuando a nossa série de textos de introdução ao R, hoje falaremos de um conceito complementar ao conceito de vetores: Matrizes. 

Matrizes são fundamentais para entendermos a matemática por trás de estruturas com linhas e colunas. Assim, para apresentar para vocês como manipular matrizes no R, dividi este texto nos seguintes tópicos:

  • O que são matrizes?
  • Como criar uma matriz no R
  • Transformando vetores em matrizes com o cbind() e o rbind()
  • Visualizando graficamente matrizes com o plot()
  • Construindo uma matriz de correlação no R
  • Conclusão

matrizes R

Bons estudos!

O que são matrizes?

Chamamos de matriz um conjunto de números dispostos em uma tabela e distribuídos em “m” linhas e “n” colunas. Também podemos chamar matrizes de vetores bidimensionais.

Como criar uma Matriz no R

Podemos criar matrizes no R utilizando a função matrix() e os argumentos “nrow” e “ncol”. Vamos primeiro criar uma matriz 2×2:

matriz <- matrix(c(1, 2,3,4), nrow = 2, ncol = 2)

Por padrão, o conjunto de números será impresso nas colunas, então o “1” e o “2” ficarão na primeira coluna, e o “3” e o “4” ficarão na segunda coluna.

O argumento “nrow” denota o número de linhas da matriz e o argumento “ncol” o número de colunas.

Podemos inverter esta ordem usando mais um argumento, o “byrow = TRUE”. Com ele os números do conjunto serão impressos primeiro nas linhas ficando assim:

matriz <- matrix(c(1, 2,3,4), nrow = 2, ncol = 2, byrow = TRUE)

Criando uma matriz 3×3 no R:

Para fixar, vamos criar uma matriz um pouco maior, com três linhas e três colunas. Dessa vez, vamos passar o vetor dentro da função matrix() e utilizar o argumento “data”. Este argumento faz a função assumir o vetor como fonte dos dados para construir a matriz.

Criando o novo vetor: 

vetor_novo <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)

Criando a matriz com a função matrix() e o argumento “data”:

matriz <- matrix(data = vetor_novo, nrow = 3, ncol = 3)

> matriz

      [,1]   [,2]   [,3]

[1,]    1     4     7

[2,]    2     5     8

[3,]    3     6     9

Nosso vetor virou uma matriz com três linhas e três colunas, com seus elementos ordenados por coluna.

Quais tipos de dados podemos colocar em uma matriz?

Assim como vetores, só devemos colocar em matrizes o mesmo tipo de dados, então, nada de colocar um conjunto de caracteres na mesma matriz de um conjunto de números. Não significa que não poderíamos fazer isso, mas, se fizermos, os dados sofrem coerção para o tipo de dado superior na hierarquia. 

No caso de números e caracteres, todos os números seriam transformados por coerção em caracteres:

> vetor_tc <- c(1,2,3,4,5,6,7,8,”TC”)

> matriz <- matrix(data = vetor_tc, nrow = 3, ncol = 3)

> matriz

     [,1]   [,2]   [,3]

[1,]  “1”   “4”   “7” 

[2,]  “2”   “5”   “8” 

[3,]  “3”   “6”   “TC”

Note que por conta de apenas um caractere no vetor (no caso o “TC”) todos outros oito números viraram também caracteres.

Interligando vetores e matrizes

Lembram que aprendemos a criar vetores de preços no artigo passado? 

Agora, vamos criar dois vetores de preços (reais) de duas ações diferentes, Petrobras (PETR4) e 3R Petroleum (RRRP3):

> PETR4 <- c(27.81,26.91, 26.41, 26.85, 26.28)

> PETR4

[1]  27.81  26.91  26.41  26.85  26.28

>RRRP3 <- c(39.25,38.71, 40.62, 40.98, 39.85)

> RRRP3

[1]  39.25  38.71  40.62  40.98  39.85

Transformando vetores em matrizes com o cbind() e o rbind()

Com as funções cbind() e rbind() podemos transformar nossos vetores em uma matriz.

A função cbind() transforma os vetores em colunas de uma nova matriz:

> cbind(PETR4, RRRP3)

     PETR4   RRRP3

[1,]   27.81   39.25

[2,]   26.91   38.71

[3,]   26.41   40.62

[4,]   26.85   40.98

[5,]   26.28   39.85

Já a função rbind() transforma os vetores em linhas de uma nova matriz:

> rbind(PETR4, RRRP3)

                [,1]       [,2]       [,3]       [,4]       [,5]

PETR4  27.81   26.91   26.41   26.85   26.28

RRRP3  39.25   38.71   40.62   40.98   39.85

Operações Matemáticas com Matrizes no R

As operações matemáticas com matrizes seguem a mesma linha das operações com vetores, com apenas algumas particularidades.

Adição

Podemos somar apenas matrizes com o mesmo número de linhas e de colunas.

Vamos para um exemplo de uma soma de duas matrizes 3×3:

> matriz

     [,1]   [,2]   [,3]

[1,]    1     4     7

[2,]    2     5     8

[3,]    3     6     9

> matriz_2

     [,1]   [,2]   [,3]

[1,]   11    44     7

[2,]   22    55     8

[3,]   33    66    10

> matriz + matriz_2

     [,1]   [,2]   [,3]

[1,]   12    48    14

[2,]   24    60    16

[3,]   36    72    19

Note que apenas elementos da mesma linha e mesma coluna são somados.

Subtração

Também só podemos subtrair matrizes com o mesmo número de linhas e colunas, vamos subtrair as matrizes do exemplo acima:

> matriz

     [,1]   [,2]   [,3]

[1,]    1     4     7

[2,]    2     5     8

[3,]    3     6     9

> matriz_2

     [,1]   [,2]   [,3]

[1,]   11    44     7

[2,]   22    55     8

[3,]   33    66    10

> matriz – matriz_2

       [,1]   [,2]   [,3]

[1,]   -10   -40     0

[2,]   -20   -50     0

[3,]   -30   -60     -1

Multiplicação de Matrizes

A multiplicação de matrizes é a operação mais peculiar. Para funcionar, temos que ter (pelo menos) uma matriz com o número de colunas igual ao número de linhas da segunda matriz. Por exemplo, podemos multiplicar uma matriz 3×2 por uma 2×3. Matrizes com mesmo número de linhas e colunas também são normalmente multiplicadas, a multiplicação de uma matriz por um número escalar também funciona.

Exemplo 1 – Multiplicando uma matriz 2×3 com uma 3×2:

> matriz1

      [,1]   [,2]

[1,]    1     5

[2,]    2     6

[3,]    3     1

> matriz2

       [,1]   [,2]   [,3]

[1,]    3      4      6

[2,]    2      4      9

Para multiplicar, usaremos um operador diferente, o “%*%”:

> m1 %*% m2

       [,1]   [,2]   [,3]

[1,]   13     24     51

[2,]   18     32     66

[3,]   11     16     27

Feito!

Agora, vamos para o exemplo 2, multiplicando uma matriz por apenas um número escalar.

Exemplo 2 – matriz1 * 10

> matriz1

       [,1]   [,2]

[1,]    1      5

[2,]    2      6

[3,]    3      1

> m1 * 10

       [,1]   [,2]

[1,]   10     50

[2,]   20     60

[3,]   30     10

Note que todos os elementos da matriz foram multiplicados por 10.

Transpondo Matrizes no R

A matriz transposta de uma matriz A é aquela que possui os mesmos elementos de A, só que com linhas e colunas invertidas. Se a matriz A for 3×2, ela será 2×3.

Vamos ao exemplo:

> A

       [,1]   [,2]

[1,]    3      4

[2,]    2      6

[3,]    4      9

Para transpor, basta usar a função t():

> t(A)

       [,1]   [,2]   [,3]

[1,]    3      2      4

[2,]    4      6      9

Note que os elementos que estavam ordenados nas colunas foram para as linhas. 

Visualizando graficamente matrizes com o plot()

Assim como os vetores, também podemos visualizar o gráfico dessa matriz com a ajuda da função plot(). 

Antes, vamos atribuir a matriz a uma variável:

> matriz <- cbind(PETR4, RRRP3)

plot(matriz)

plot

Agora que sabemos como transformar vetores em matrizes, podemos construir uma matriz de correlação para investigar se duas ou mais variáveis têm correlação.

Construindo uma matriz de correlação no R:

  1. Para este exemplo vamos criar três novos vetores:

PETR4 <- c(27.81,26.91, 26.41, 26.85, 26.28)

VALE3 <- c(115.57, 108.76, 108.93, 112.64, 112.52)

BBDC4 <- C(24.67, 24.25, 24.40, 24.52, 23.55)

  1. Vamos juntá-las com o cbind() e armazená-las na variável matriz:

matriz <- cbind(VALE3, PETR4, BBDC4)

    VALE3   PETR4   BBDC4

[1,]  115.57     27.81     24.67

[2,]  108.76     26.91     24.25

[3,]  108.93     26.41     24.40

[4,]  112.64     26.85     24.52

[5,]  112.52     26.28     23.55

  1. Vamos investigar a correlação com a função cor():

> cor(matriz)

                 VALE3         PETR4         BBDC4

VALE3  1.0000000    0.6230215    0.1787640

PETR4  0.6230215    1.0000000    0.7035499

BBDC4  0.1787640    0.7035499    1.0000000

Com a ajuda da matriz de correlação podemos observar todos os coeficientes de correlação que as variáveis possuem entre si. Por coincidência, todas têm uma correlação positiva entre si.

Escolhendo o método do coeficiente de correlação:

Lembrando que podemos também especificar qual método desejamos usar para calcular o coeficiente de correlação especificando com o argumento method:

> cor(matriz, method = “kendall”)

            VALE3     PETR4     BBDC4

VALE3    1.0       0.2       0.6

PETR4    0.2       1.0       0.6

BBDC4    0.6       0.6       1.0

> cor(matriz, method = “spearman”)

               VALE3   PETR4   BBDC4

VALE3    1.0      0.3      0.7

PETR4    0.3      1.0      0.7

BBDC4    0.7      0.7      1.0

> cor(matriz, method = “pearson”)

               VALE3       PETR4       BBDC4

VALE3  1.0000000    0.6230215    0.1787640

PETR4  0.6230215    1.0000000    0.7035499

BBDC4  0.1787640    0.7035499    1.0000000

Ao digitar apenas cor(…) será calculado o coeficiente de correlação de Pearson.

Conclusão

Matrizes também são a base para as mais diversas aplicações financeiras no R, e mais para frente, recorreremos ao uso de matrizes para, por exemplo, aplicar modelos de regressão. Neste artigo, nosso objetivo foi apenas apresentar o conceito de matrizes e algumas de suas aplicações básicas.

Já que sabemos o que são matrizes, no próximo artigo estudaremos como construir o nosso primeiro data frame, que são similares as matrizes, mas aceitam tipos de dados diferentes em suas linhas e colunas. 

 Quant & Investimentos: Aprenda com o TC!

Baixe nosso aplicativo grátis! No TC você acompanha as principais notícias e cotações do mercado em tempo real, além de ter acesso a canais exclusivos para interagir com os melhores profissionais.

Lucca Carlini
Lucca Carlini
Estudante de Economia na UFPE

TC School

A sua escola como investidor.

Disclaimer: Este material é produzido e distribuído somente com os propósitos de informar e educar, e representa o estado do mercado na data da publicação, sendo que as informações estão sujeitas a mudanças sem aviso prévio. Este material não constitui declaração de fato ou recomendação de investimento ou para comprar, reter ou vender quaisquer títulos ou valores mobiliários. O usuário não deve utilizar as informações disponibilizadas como substitutas de suas habilidades, julgamento e experiência ao tomar decisões de investimento ou negócio. Essas informações não devem ser interpretadas como análise ou recomendação de investimentos e não há garantia de que o conteúdo apresentado será uma estratégia efetiva para os seus investimentos e, tampouco, que as informações poderão ser aplicadas em quaisquer condições de mercados. Investidores não devem substituir esses materiais por serviços de aconselhamento, acompanhamento ou recomendação de profissionais certificados e habilitados para tal função. Antes de investir, por favor considere cuidadosamente a sua tolerância ou a sua habilidade para riscos. A administradora não conduz auditoria nem assume qualquer responsabilidade de diligência (due diligence) ou de verificação independente de qualquer informação disponibilizada neste espaço. Administradora: TradersNews Informação & Educação Ltda. Todos os direitos reservados.

TradersClub

O app essencial para investidores do mercado financeiro brasileiro.

Uma comunidade com milhares de investidores, ferramentas e serviços que vão ajudar você a investir melhor!

TradersClub