LIVRO GRATUITO: ESTATÍSTICA PARA CIÊNCIA DE DADOS COM LINGUAGEM R

Objetos

R é uma linguagem orientada a objetos, e isso significa, entre outras coisas, que toda variável é um objeto. Além disso, é possível acessar métodos e atributos de objetos.

Estes objetos são armazenados em memória, e podem ser listados e removidos. Isto é importante, pois é comum termos muitos objetos consumindo a memória do sistema, especialmente quando trabalhando na própria máquina local, de forma que o sistema pode apresentar lentidão.

Nestas situações, fazer uma limpeza dos objetos na memória pode ser muito útil para melhorar o desempenho do sistema e permitir a carga de novos dados na memória para análise.

Caso esteja usando o RStudio, é possível visualizar e remover os objetos através das opções dos painéis de visualização da sessão de trabalho (workspace), ou ainda através do respectivo menu.

Além disso, há funções nativas da linguagem R para lidar com os objetos em memória.

>ls()

 >objects()

As funções ls() e objects() permitem listar os objetos em memória.

>rm(x)

A função rm() permite remover da memória um objeto específico e assim liberar recursos do sistema. Neste exemplo a variável “x” foi removida, e caso seja referenciada após a remoção, resultará num erro, pois a variável não está mais armazenada na memória do sistema.

Vetores

Vetores são objetos unidimensionais, ou seja, possuem uma indexação simples através de numeração simples (a[1], por exemplo). Tendo apenas uma dimensão, vetores são adequados para armazenar dados que tenham uma relação forte entre si, de forma a deixar claro o seu uso.

Não faz sentido, por exemplo, armazenar a idade em anos e o peso em kg de uma pessoa no mesmo vetor, pois isso poderia causar uma tremenda confusão no momento do acesso aos valores armazenados. Possivelmente haveria a dúvida se o primeiro elemento se refere à idade ou peso.

Além disso, o vetor é um tipo de objeto que permite o armazenamento apenas de valores de um mesmo tipo. Observe que no exemplo acima mencionei a idade em anos e o peso em kg, pois ambos podem ser expressados através de números de ponto flutuante (ex: 17,5 e 80,3). Caso fossem de tipos diferentes, não seria possível armazená-los num mesmo vetor.

Veja que mesmo variáveis simples com um único valor são tratadas pela linguagem R como vetores (neste caso um vetor de valor único). O  exemplo de código abaixo demonstra o que acabamos de descrever:

>a <- 8

>a[1]

8

Além de conter somente um tipo de dado, o vetor possui uma única dimensão, ou seja, seus elementos são referenciados utilizando um único número como índice para o elemento desejado (a[1], a[2] e assim por diante).

>v <- c(1:10)

>v

1.1

2.2

3.3

4.4

5.5

6.6

7.7

8.8

9.9

10.10

>length(v)

10

Note a função c(), usada frequentemente para criar conjuntos de elementos. Tome nota dela, pois ela será muito útil. Neste exemplo, ela foi usada para criar uma lista de valores de 1 a 10 para preencher o vetor. Note também a função length(), que permite verificar o tamanho do vetor (10).

>v1 = c(“Casa”, “Mercado”, “Igreja”)

>v1

1.’Casa’

2.’Mercado’

3.’Igreja’

>v2 = c(5.5, 7.9, 8.7)

>v2

1.5.5

2.7.9

3.8.7

Podemos criar vetores de vários tipos: inteiros, caractere, números de ponto flutuante, basta que sejam todos do mesmo tipo.

>v3 = seq(1:10)

>v3

1.1

2.2

3.3

4.4

5.5

6.6

7.7

8.8

9.9

10.10

>is.vector(v3)

TRUE

Outra função muito útil é a seq(), que permite criar uma sequência de números. Neste exemplo, a função foi usada para criar uma lista de 10 números de 1 a 10.

>v4 = rep(1,5)

>v4

1.1

2.1

3.1

4.1

5.1

>is.vector(v3)

TRUE

Já a função rep() permite repetir um valor por determinada quantidade de vezes. Neste exemplo, a função foi usada para criar 5 repetições do valor 1.

É possível ainda realizar operações entre vetores, ou entre um vetor e um outro valor ou variável.

>v * 5

5

10

15

20

25

30

35

40

45

50

Observe que cada um dos elementos de v foi multiplicado por 5, como esperado.

>v + v2

Warning message in v + v2:

“longer object length is not a multiple of shorter object length”

6.5

9.9

11.7

9.5

12.9

14.7

12.5

15.9

17.7

15.5

Observe que, embora os vetores v e v2 tenham tamanhos diferentes, a soma foi possível porque o interpretador da linguagem R foi capaz de “repetir” os elementos do vetor menor (v2, no caso) até que houvesse uma quantidade suficiente de elementos que permitisse a soma. Então, é como se fosse feita a soma entre v: “1,2,3,4,5,6,7,8,9,10” e v2: “5.5, 7.9, 8.7, 5.5, 7.9, 8.7, 5.5, 7.9, 8.7, 5.5”. Note que o interpretador ainda informa uma mensagem indicando que o vetor menor não é múltiplo do maior, pois 3 não é múltiplo de 10.

>v – v2

Warning message in v – v2:

“longer object length is not a multiple of shorter object length”

-4.5

-5.9

-5.7

-1.5

-2.9

-2.7

1.5

0.0999999999999996

0.300000000000001

4.5

De forma semelhante à soma, o vetor v2 foi “replicado” para permitir a operação de subtração com o vetor v.

>v * v2

Warning message in v * v2:

“longer object length is not a multiple of shorter object length”

5.5

15.8

26.1

22

39.5

52.2

38.5

63.2

78.3

55

Na operação de multiplicação, da mesma forma o vetor v2 foi ampliado.

>v / v2

Warning message in v/v2:

“longer object length is not a multiple of shorter object length”

0.181818181818182

0.253164556962025

0.344827586206897

0.727272727272727

0.632911392405063

0.689655172413793

1.27272727272727

1.0126582278481

1.03448275862069

1.81818181818182

Por fim, a operação de divisão foi bem sucedida graças, mais uma vez, à “inteligência” do interpretador da linguagem R, que sempre busca, quando possível, encontrar a melhor maneira de chegar ao resultado desejado pelo desenvolvedor.

>names(v2) = c(“Nota AV1”, “Nota AV2”, “Nota AV3”)

>v2[“Nota AV1”]

Nota AV1: 5.5

Vetores podem ter nomes atribuídos a cada uma de suas “colunas”, de modo a simplificar a referência aos seus elementos e facilitar o entendimento da sua manipulação. Neste exemplo, consideramos que o vetor v2 contém as notas dos alunos nas avaliações da disciplina, e assim nomeamos cada uma das notas de acordo com as avaliações realizadas.

Matrizes

Por vezes poderemos estar interessados em armazenar a nossa informação em estruturas de dados com mais do que uma dimensão, como é o caso dos vetores. As matrizes arranjam a informação em duas dimensões. Em R, as matrizes não são mais do que vetores com uma propriedade especial que é a dimensão. Vejamos um exemplo. Suponhamos que temos doze números correspondentes às vendas trimestrais durante o último ano, em três lojas. As instruções seguintes permitem “organizar” esses números como uma matriz (TORGO, 2006, tradução nossa).

> vendas <- c(45, 23, 66, 77, 33, 44, 56, 12, 78, 23, 78, 90)

> vendas

[1] 45 23 66 77 33 44 56 12 78 23 78 90

> dim(vendas) <- c(3, 4)

> vendas

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

 [1,] 45 77 56 23

 [2,] 23 33 12 78

 [3,] 66 44 78 90

>length(vendas)

12

É possível saber o tamanho da matriz usando a função length().

>vendas[1,1]

45

>vendas[3,4]

90

É possível referenciar elementos específicos da matriz indicando linha e coluna.

>vendas[1,]

45

77

56

23

É possível obter todos os valores de uma linha da matriz.

>vendas[,1]

45

23

66

Também é possível obter todos os elementos de uma coluna da matriz.

Assim como no caso dos vetores, é possível realizar operações de soma, subtração, multiplicação, divisão entre duas matrizes ou uma matriz e um valor ou variável, assim como também é possível utilizar os demais operadores aritméticos, relacionais e lógicos para verificar características da matriz.

>vendas > 50

FALSE TRUE TRUE FALSE

FALSE FALSE FALSE TRUE

TRUE FALSE TRUE TRUE

Observe no exemplo acima, que o interpretador “percebeu” que desejávamos saber quais os elementos da matriz eram maiores que 50. Na prática, este resultado indica em quais trimestres as vendas foram superiores a 50 em cada loja. Assim, o interpretador forneceu como resultado uma matriz de valores lógicos em que cada elemento representa a resposta para a verificação do valor da venda: se acima de 50, o elemento tem valor TRUE, caso contrário FALSE.

Arrays

“Os arrays são extensões das matrizes para mais do que duas dimensões. Isto significa que podem ter vários índices. À parte esta pequena diferença, eles podem ser usados da mesma forma do que as matrizes. De modo semelhante à função matrix, existe uma função array() para facilitar a criação de arrays. Segue-se um pequeno exemplo” (TORGO, 2006, tradução nossa).

> a <- array(1:50, dim = c(2, 5, 5))

> a , , 1

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

 [1,] 1 3 5 7 9

 [2,] 2 4 6 8 10

, , 2

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

 [1,] 11 13 15 17 19

 [2,] 12 14 16 18 20

, , 3

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

 [1,] 21 23 25 27 29

 [2,] 22 24 26 28 30

, , 4

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

 [1,] 31 33 35 37 39

 [2,] 32 34 36 38 40

, , 5

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

 [1,] 41 43 45 47 49

 [2,] 42 44 46 48 50

Perceba que, neste exemplo, é como se houvessem 5 matrizes “empilhadas”, formando uma figura multidimensional.

A maioria das operações que podem ser feitas com vetores e matrizes, são também válidas para arrays.

Tabela de Conteúdo

  • estatistica-para-ciencia-de-dados-com-linguagem-r
    • Apresentação
    • Dedicação
    • Autor
    • resumo
  • plataformas-análise-dados-estatísticas
    • Plataformas de análise estatística de dados
  • plataforma-linguagem-r
    • A plataforma R
    • Linha de comando
    • RStudio
    • Conseguindo ajuda
    • Explorando o
    • RStudio
    • Operadores
    • Variáveis e tipos de
    • Dados
    • Objetos
    • Vetor
    • Matrizes
    • Matrizes
    • Listas
    • Quadros de dados
    • Funções
    • Estruturas de controle
  • estatística para ciência de dados
    • Introdução à Estatística para Análise de Dados
    • Visualizando e descrevendo dados quantitativos
    • Estatística Descritiva x
    • Estatística Inferencial
  • medidas-dispersão-tendência-central
    • Visualização e
      Descrição de dados quantitativos
    • Definindo variáveis quantitativas discretas e contínuas
    • Medidas de tendência central – média
    • Medidas de Tendência Central – Mediana
    • Medidas de Tendência Central – Moda
    • Outras medidas de tendência central
    • Medidas de dispersão
    • Medidas de posição relativa – quartis e percentis
    • Gráficos para variáveis quantitativas
  • associações-correlação-causalidade
    • Análise bidimensional
      Associação entre
    • variáveis qualitativas
    • Medidas de associação entre variáveis qualitativas
    • Associação entre variáveis quantitativas
    • Medidas de associação entre variáveis quantitativas
    • Associação entre variáveis qualitativas e quantitativas
    • Analisando e interpretando gráficos de dispersão
      Atribuindo funções a variáveis de plotagem de dispersão
    • Noções básicas sobre correlação
    • Condições para análise de correlação
    • Correlação e Causalidade
  • probabilidade
    • Probabilidade conjunta
    • Probabilidade
    • Condicional e Independência
    • Tabelas de contingência
    • Árvores de probabilidade
  • regra-de-bayes-distribuições-probabilidade
    • Variáveis aleatórias e
    • Distribuições de probabilidade
    • Distribuição uniforme
    • Distribuição normal
    • Teorema do limite central
    • Distribuição Exponencial
    • Distribuição Qui-Quadrado
    • Distribuição t de student
    • Distribuição F
  • testes-hipótese-análise-variância-anova
    • Introdução à Inferência Estatística
    • Distribuições e proporções de amostragem
    • Testes de Hipóteses
    • Projeto de Experimentos e Análise de Variância (ANOVA)