Programa

Objetivo

Conhecer e utilizar a linguagem R em análises estatísticas de dados financeiros, a fim de propiciar a compreensão das relações entre variáveis, extrair valor, comunicar e subsidiar a tomada de decisão.

Metodologia

As aulas serão ministradas utilizando-se metodologias ativas, isto é: exposições dialogadas, debates e estudos de caso práticos. Ao final da disciplina, o aluno disporá que um conjunto de informações para utilizar em sua organização.

Critérios de avaliação

  • 40% referentes às participações em sala de aula;
  • 60% referentes à avaliação individual, sob a forma de prova ou trabalho a ser realizado logo após o término da disciplina.

Bibliografia recomendada

  1. KABACOFF, Robert I. R in Action – Data Analysis and graphics in R. Manning Publications.
  2. CHANG,Winston. R Graphics Cookbook. O´Reilly Media.
  3. WICKHAM, Hadley. GROLEMUND, Garrett. R for Data Science. O´Reilly Media.
  4. JAMES, Garret et al. An Introduction to Statistical Learning with Applications in R. Springer Science.
  5. ZUMEL, Nina. MOUNT, John. Practical Data Science with R. Manning Publications.
  6. S. PERLIN, MARCELO. Processamento e Análise de Dados Financeiros e Econômicos com o R.
  7. Paul Teetor, The R Cookbook.
  8. Phil Spector, Data Manipulation with R.
  9. Norman Matloff, The Art of R Programming: A Tour of Statistical Software Design.
  10. John Taveras, R for Excel Users.
  11. Efficient R programming.
  12. Wickham, Hadley. Navarro, Danielle. Edersen, Thomas Lin P - ggplot2: Elegant Graphics for Data Analysis.
  13. Baumer, Kaplan e Horton, Modern Data Science with R.
  14. Rafael A. Irizarry, Introdução à Ciência de Dados.
  15. Ciência de Dados em R.

Muito está disponível em livros, e-books e online, gratuitamente - Comece pelo Big Book of R. A comunidade de usuários de R é extensa.

Uma lista (com exemplos de uso) das funções mais populares e úteis disponíveis no R pode ser encontrada aqui.

Podemos iniciar diretamente na fonte, no sítio disponibilizado pelo pessoal que criou e mantem o R.

Análise exploratória de dados

Introdução

A análise exploratória de dados é uma abordagem da análise de conjuntos de dados de modo a resumir suas características principais, frequentemente com métodos visuais.

A forma como analisamos os dados mudou dramaticamente nos últimos anos. Com a popularização do emprego da internet, o grande volume de dados que temos disponíveis cresceu enormemente. As empresas têm terabytes de dados sobre os consumidores que interagem com instituições de pesquisa governamentais, acadêmicas e comerciais. Obter dados, bem como o seu armazenamento, se tornou uma indústria em si. Ao mesmo tempo, apresentar as informações de maneira facilmente acessível e digestível se tornou cada vez mais desafiador.

A ciência da análise de dados acompanhou o ritmo dessa explosão de dados. Antes dos computadores pessoais e na internet, novos métodos estatísticos foram desenvolvidos por pesquisadores e acadêmicos que publicaram seus resultados como trabalhos teóricos em revistas profissionais. Poderia levar anos para que esses métodos fossem adaptados pelos programadores e incorporados ao os pacotes estatísticos amplamente disponíveis para analistas de dados.

Hoje, novas metodologias aparecem diariamente. Os pesquisadores publicam métodos novos e aprimorados, juntamente com o código para produzi-los, em sites facilmente acessíveis.

Resumindo, a análise exploratória de dados se refere a um conjunto de ferramentas estatísticas e gráficas para modelagem e compreensão de conjuntos de dados complexos a fim de extrair valor e subsidiar a tomada de decisão. É uma área recentemente desenvolvida em estatística e combina com desenvolvimentos paralelos em ciência da computação e inteligência artificial. Com a explosão dos problemas do “Big Data”, o aprendizado estatístico tornou-se um campo extremamente importante nas áreas científicas, além de marketing, finanças e outras disciplinas de negócios.

Hal Varian, economista-chefe do Google, em entrevista a McKinsey Quarterly Review - 2009, declarou:

“A capacidade de coletar dados - para entendê-los, processá-los, extrair valor deles, visualizá-los e comunicar será uma habilidade extremamente importante nas próximas décadas, não apenas no nível profissional, mas também no nível educacional para crianças do ensino fundamental, do ensino médio e do ensino superior. Porque agora realmente temos dados essencialmente gratuitos e onipresentes. Portanto, o fator escasso complementar é a capacidade de entender esses dados e extrair valor deles. Eu acho que os estatísticos fazem parte disso, mas é apenas uma parte. Você também deseja poder visualizar a data, comunicar a data e usá-la efetivamente. Mas acho que essas habilidades - poder acessar, entender e comunicar os insights obtidos com a análise de dados - serão extremamente importantes. Os gerentes precisam ser capazes de acessar e entender os próprios dados.

Como vimos, na era digital a informação é abundante e acessível. Desde o preço altamente variável dos contratos financeiros até os dados não estruturados dos sítios de mídia social, o alto volume de informações cria uma forte necessidade de análise de dados no local de trabalho. Uma empresa ou organização se beneficia imensamente quando pode criar uma ponte entre informações brutas de seu ambiente e tomar decisões estratégicas. Sem dúvida, este é um momento prolífico para profissionais capacitados em usar as ferramentas certas para aquisição, armazenamento e análise de dados.

Os dados relacionados a Economia e Finanças estão amplamente disponíveis ao público. Instituições internacionais e locais, como Bancos Centrais, agências governamentais de pesquisa, bolsa de valores, e muitas outras, fornecem seus dados publicamente, seja por obrigação legal ou para fomentar pesquisas. Se você está olhando para estatísticas para um determinado país ou uma empresa, a maioria das informações está a apenas dois cliques de distância. Ao analisar essas informações de forma eficiente e fácil, você poderá oferecer insights valiosos à sua equipe.

Não surpreende, portanto, que em profissões com acesso abundante a dados e aplicações práticas, como economia e finanças, espere-se que um estudante de pós-graduação ou um analista de dados tenha aprendido pelo menos uma linguagem de programação que lhe permita fazer seu trabalho de forma eficiente. Aprender a programar está se tornando um requisito para o mercado de trabalho. Assim, dada a facilidade com que é possível aprender e empregar adequadamente, o R é uma ótima alternativa.

Ambiente de programação R e introdução à linguagem R.

O que é R?

Os desenvolvedores de R o chamam de linguagem e ambiente para computação estatística e gráficos. Essa frase estranha traz a ideia de que R é mais do que apenas um pacote de estatística. É similar à linguagem S, que foi escrita no Bell Labs nos anos 1980 como uma ferramenta de pesquisa em computação estatística. MathSoft, Inc. (agora Insightful Corporation) comprou os direitos do S e o transformou no S-PLUS, um pacote comercial com um front-end gráfico. Nos anos 1990, dois estatísticos da Nova Zelândia, Ross Ihaka e Robert Gentleman, reescreveram S do zero, novamente como um projeto de pesquisa. A versão reescrita (e gratuita) tornou-se imensamente popular e agora é mantida por uma “equipe principal” internacional de respeitados estatísticos e cientistas da computação.

Comparado com as opções, SAS, Matlab ou Stata, R é completamente gratuito. Outro benefício é que é de código aberto.

RStudio é um editor de desenvolvimento integrado (IDE) para R. É mais fácil escrever código usando o editor. Uma boa referência para começar a conhecer o RStudio está aqui.

R é uma ferramenta extremamente poderosa. É uma linguagem de computador moderna e completa com sofisticadas estruturas de dados; suporta uma ampla gama de cálculos, procedimentos estatísticos; pode produzir gráficos com plotagens exploratórias para casos personalizados com qualidade de publicação.

Quando você estiver familiarizado com a interface R, o próximo passo será obter dados. No mundo atual, rico em informações, os dados podem vir de muitas fontes e em muitos formatos.

Um pequeno exemplo: gráfico do PIB per capita por país em US$ e a Expectativa de Vida desde o nascimento por país, que mostra, inclusive uma correlação positiva de 0,668. Base: banco de dados do Banco Mundial – 2016.

Figura 1 - PIB Mundial

Figura 1 - PIB Mundial

Obtendo R e RStudio:

R está disponível gratuitamente na web para sistemas operacionais Linux, Mac OS X e Windows. Para começar, vamos instalar o software no seu computador. A maneira mais simples e direta para instalar o R é clicar no link Download correspondente ao seu sistema na página CRAN - The Comprehensive R Archive Network e seguir as instruções para a instalação.

Para baixar a última versão do RStudio (versão desktop), utilize o seguinte link. Há vários sites na web que apresentam o necessário para se iniciar a trabalhar com o RStudio. Este é um deles.

Começando a trabalhar com R

Uma declaração (statement) consiste em funções e atribuições.

O R usa o símbolo <- para informar uma declaração, ao invés de usar o símbolo =, muito embora o R o aceite. No RStudio, a combinação de teclas Alt-i introduz o símbolo <- diretamente.

Um exemplo de declaração que cria um objeto de vetor chamado x contendo 10 variáveis aleatórias de uma distribuição normal padrão.

x <- rnorm(10)  # leia-se x recebe rnorm(10) - cria 10 variáveis aleatórias normais(0,1)
x
##  [1]  0.5855288  0.7094660 -0.1093033 -0.4534972  0.6058875 -1.8179560
##  [7]  0.6300986 -0.2761841 -0.2841597 -0.9193220

Um simples exemplo:

Idades e pesos de 10 crianças:

Tabela 1 - Peso x idade

Tabela 1 - Peso x idade

Iniciando a análise da amostra em R.

Note que Idade e Peso serão definidos como vetores ao utilizarmos a função c() - concatenação. Assim:

idade <- c(1,3,5,2,11,9,3,9,12,3)
peso <- c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1) 

Note que estamos usando a notação inglesa para decimais, isto é: ponto ao invés de vírgula, que adotamos no Brasil.

O primeiro gráfico:

plot(idade, peso, main = 'Peso x Idade', col = 'red', pch = 19)
Figura 2 - Primeiro gráfico

Figura 2 - Primeiro gráfico

O que são pacotes?

Ao instalarmos o R apenas as configurações básicas para seu funcionamento são instaladas (que não são poucas!).

Pacotes (packages) são coleções de funções R, dados e código compilados em um formato bem definido. O diretório em que os pacotes estão armazenados no seu computador é chamado de biblioteca.

O R vem com amplos recursos prontos para uso e você poderá instalá-los e utilizá-los. Os pacotes fornecem uma enorme variedade de novos recursos, desde a análise de dados geoestatísticos até o processamento de espectros de massa de proteínas para a análise de testes psicológicos!

O acesso público a pacotes desenvolvidos por usuários do R expande muito os recursos originais do sistema. O sítio de visualizações CRAN views oferece um painel de Visualizações de Tarefas para o tema Finanças e Econometria. Lá você pode encontrar os principais pacotes para realizar operações específicas, como importação de dados financeiros da internet, estimativa de modelos econométricos, cálculo de diferentes estimativas de risco, entre muitas outras possibilidades. Ler essa página e o conhecimento desses pacotes é essencial para quem pretende trabalhar em finanças e economia. Vale ressaltar, no entanto, que a lista completa de pacotes é muito maior.

Um exemplo de instalação e carregamento na memória de um pacote para utilização e de sua biblioteca.

install.packages('forecast', repos='http://cran.us.r-project.org')
library(forecast)

Utilizaremos vários pacotes ao longo do curso.

Para a instalação de alguns pacotes do R que necessitam compilação também é necessário baixar o software RTools.

Várias pessoas no mundo criam um número crescente de pacotes em R. O pacote devtools não só facilita o processo para desenvolver pacotes R, mas também fornece outra maneira de distribuir pacotes. Quando os desenvolvedores publicam pacotes R criados por eles, eles geralmente usam o CRAN e, como visto, utilizamos a função do R install.packages(). Entretanto, frequentemente os desenvolvedores podem distribuir pacotes R que estão se desenvolvendo no GitHub. Além disso, existem alguns desenvolvedores que não têm a intenção de se submeter ao CRAN. Por exemplo, o Twitter, Inc. fornece o pacote AnomalyDetection no GitHub, mas eles não se submeterão ao CRAN. Você pode instalar esses pacotes convenientemente usando devtools.

# baixa um pacote não disponível no CRAN diretamente do Github
devtools::install_github("twitter/AnomalyDetection")

O Formato Brasileiro (Ref 6)

É importante ressaltar algumas regras de formatação de números e códigos para o caso brasileiro.

decimal: O decimal no R é definido pelo ponto (.), tal como em 1.3 e não vírgula, como em 1,3. Esse é o padrão internacional, e a diferença para a notação brasileira gera muita confusão. Alguns softwares, tal como o Microsoft Excel, fazem essa conversão automaticamente no momento da importação dos dados. Porém isso não ocorre na maioria dos casos. Como regra geral, utilize vírgulas apenas para separar os termos de entradas em uma função. Em nenhuma situação deve-se utilizar a vírgula como separador de casas decimais. Sempre dê prioridade para o formato internacional, pois esse será compatível com a grande maioria dos dados. Outros pesquisadores também podem ter dificuldade de entender o seu código, caso utilize a notação local para o decimal.

caracteres latinos: devido ao seu padrão internacional, o R apresenta problemas para entender caracteres latinos, tal como cedilha e acentos. Caso possa evitar, não utilize esses tipos de caracteres no código para nomeação de variáveis ou arquivos. Nos textos (objeto de caracteres), é possível utilizá-los desde que a codificação do objeto esteja correta (UTF-8 ou Latin1). Recomenda-se que o código do R seja escrito na língua inglesa. Isso automaticamente elimina o uso de caracteres latinos e facilita a usabilidade do código por outras pessoas que não entendam a língua portuguesa. Destaca-se que essa foi a escolha utilizada para o livro. Os nomes dos objetos nos exemplos estão em inglês, assim como também os comentários do código.

formato das datas: as datas no R são formatadas de acordo com o padrão ISO 8601, seguindo o padrão YYYY-MM-DD, onde YYYY é o ano em quatro números, MM é o mês e DD é o dia. Por exemplo, uma data em ISO 8601 é 2018-06-10. No Brasil, as datas são formatadas como DD/ MM/ YYYY. Reforçando a regra, sempre dê preferência ao padrão internacional.

Para saber qual o formato que o R está configurado, utilize o seguinte comando:

Sys.localeconv()
##     decimal_point     thousands_sep          grouping   int_curr_symbol 
##               "."                ""                ""             "BRL" 
##   currency_symbol mon_decimal_point mon_thousands_sep      mon_grouping 
##              "R$"               ","               "."            "\003" 
##     positive_sign     negative_sign   int_frac_digits       frac_digits 
##                ""               "-"               "2"               "2" 
##     p_cs_precedes    p_sep_by_space     n_cs_precedes    n_sep_by_space 
##               "1"               "1"               "1"               "1" 
##       p_sign_posn       n_sign_posn 
##               "3"               "3"

Como pode ser visto no resultado, estamos usando a notação brasileira de moeda, mas com o ponto para decimais. Se necessário, você pode (temporariamente) alterar seu formato local para a notação internacional usando o seguinte comando: Sys.setlocale(" LC_ALL", "English").

Criação de Uma Estrutura de Dados.

O primeiro passo em qualquer análise de dados é a criação de um conjunto de dados contendo as informações para ser estudado, em um formato que atenda às suas necessidades.

Em R, essa tarefa envolve: 1. Selecionar uma estrutura de dados para armazenar seus dados 2. Inserir ou importar seus dados para a estrutura de dados

Um conjunto de dados geralmente é uma matriz retangular de dados com linhas representando observações e colunas representando variáveis. Este formato é conhecido como formato wide. A tabela abaixo fornece um exemplo de um hipotético conjunto de dados no formato wide:

Tabela 2 - Formato wide

Tabela 2 - Formato wide

Em programação, uma matriz multidimensional (array) é uma estrutura de dados que armazena uma coleção de elementos de tal forma que cada um deles possa ser identificado por, pelo menos, um índice ou uma chave. Essa estrutura de dados também é conhecida como variável indexada, vetor e matriz.

Na estrutura de dados acima, Paciente é o identificador, Adm é uma variável de data (no caso em estrutura inglesa (mm/dd/aa), Idade é uma variável numérica, Diabetes é uma variável nominal e Status, uma variável ordinal.

Em R, Paciente, Adm e Idade são variáveis numéricas, enquanto Diabetes e Status são variáveis de caracteres ou fatores.

Além disso, você precisará informar ao R que Paciente é um caso identificador, que Adm contém datas e que Diabetes e Status são nominais e variáveis ordinárias, respectivamente.

Conceituando Vetores, matrizes, arranjos e data frames

Vetores

Vetores são matrizes unidimensionais que podem conter dados numéricos, caracteres ou caracteres lógicos. A função c() é usada para formar o vetor. Aqui estão exemplos de cada tipo de vetor:

a <- c(1, 2, 5, 3, 6, -2, 4)
b <- c("one", "two", "three")
c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)

Aqui, a é um vetor numérico, b é um vetor de caracteres, e c é um vetor lógico.

Importante: um vetor deve possuir apenas um tipo de dado, seja numéricos, caracteres ou lógicos.

Mais um exemplo:

Você pode se referir aos elementos de um vetor usando um vetor numérico de posições entre colchetes [].

Por exemplo, a[c(2, 4)] refere-se ao 2º e 4º elemento do vetor a (iniciando no índice 1). O operador : permte selecionar todos os elementros entre o início e o fim dos índices.

Aqui estão exemplos adicionais:

a <-  c("k", "j", "h", "a", "c", "m")
a[3]
## [1] "h"
a[c(1, 3, 5)]
## [1] "k" "h" "c"
a[2:6]
## [1] "j" "h" "a" "c" "m"
Matrizes:

Uma matriz é um arranjo bidimensional em que cada elemento tem o mesmo modo (numérico, caractere ou lógico). Matrizes são criadas com a função matrix(). O formato geral é:

mymatrix <- matrix(vector, nrow = number_of_rows, ncol = number_of_columns, byrow = logical_value)
dimnames <- list(char_vector_rownames, char_vector_colnames)

onde vector contém os elementos para a matriz, nrow e ncol especificam o número de linhas e colunas (dimensões) e dimnames contém rótulos opcionais de linha e coluna armazenados em vetores de caracteres. A opção byrow indica se a matriz deve ser preenchida por linha (byrow = TRUE) ou por coluna (byrow = FALSE). O padrão é por coluna. A sequência de comandos a seguir demonstra a função da matriz:

y <- matrix(1:20, nrow = 5, ncol = 4)
y
##      [,1] [,2] [,3] [,4]
## [1,]    1    6   11   16
## [2,]    2    7   12   17
## [3,]    3    8   13   18
## [4,]    4    9   14   19
## [5,]    5   10   15   20
cells    <- c(1, 26, 24, 68)
rnames   <- c("R1", "R2")
cnames   <- c("C1", "C2") 
mymatrix <- matrix(cells, nrow = 2, ncol = 2, byrow = TRUE, dimnames = list(rnames, cnames)) 
mymatrix
##    C1 C2
## R1  1 26
## R2 24 68
mymatrix <- matrix(cells, nrow = 2, ncol = 2, byrow = FALSE, dimnames = list(rnames, cnames))
mymatrix
##    C1 C2
## R1  1 24
## R2 26 68
Matriz Multidimensional (Arrays)

Arrays são semelhantes às matrizes, mas podem ter mais de duas dimensões. Eles são criados com uma função de matriz do seguinte formato:

myarray <- array (vector, dimensions, dimnames)

onde: vector contém os dados para a matriz, dimensions é um vetor numérico que fornece o índice máximo para cada dimensão e dimnames é uma lista opcional de etiquetas (labels) das dimensões.

Os comandos a seguir fornecem um exemplo de criação de uma array tridimensional (2x3x4) de números.

dim1 <- c("A1", "A2")
dim2 <- c("B1", "B2", "B3")
dim3 <- c("C1", "C2", "C3", "C4")
z <- array(1:24, c(2,3,4), dimnames=list(dim1, dim2, dim3))
z
## , , C1
## 
##    B1 B2 B3
## A1  1  3  5
## A2  2  4  6
## 
## , , C2
## 
##    B1 B2 B3
## A1  7  9 11
## A2  8 10 12
## 
## , , C3
## 
##    B1 B2 B3
## A1 13 15 17
## A2 14 16 18
## 
## , , C4
## 
##    B1 B2 B3
## A1 19 21 23
## A2 20 22 24

Arrays são uma extensão natural de matrizes. Eles podem ser úteis em programação de novos métodos estatísticos. Como matrizes, devem ser um único tipo de objeto. No exemplo: z[1,2,3] é o elemento 15.

Data Frames

Um data frame é mais geral que uma matriz, pois diferentes colunas podem conter diferentes tipos de dados (numérico, caracter etc.).

Os data frames são a estrutura de dados mais comum que você vai lidar com R.

O conjunto de dados de pacientes na tabela 2 consiste em dados numéricos e de caracteres. Uma vez que existem mais de um tipo de dados, você não pode aramzená-los em uma matriz.

Nesse caso, um data frame seria a estrutura de escolha e pode ser criado com a função data.frame():

mydata <- data.frame(col1, col2, col3, …), onde col1, col2, col3, … são vetores de coluna de qualquer tipo (como caractere, numérico, ou lógico). Os nomes para cada coluna podem ser fornecidos com a função de nomes.

O snippet a seguir deixará isso bem claro.

Paciente <- c(1, 2, 3, 4)
Idade <- c(25, 34, 28, 52)
Diabetes <- c("Tipo1", "Tipo2", "Tipo1", "Tipo1")
Status <- c("Mal", "Melhorando", "Excelente", "Mal")
df <- data.frame(Paciente, Idade, Diabetes, Status)
df

Cada coluna deve ter apenas um tipo, mas você pode colocar colunas de tipos diferentes juntos para formar o data frame. Como os data frames estão próximos do que os analistas normalmente pensam nos conjuntos de dados, usaremos os termos colunas e variáveis de forma intercambiável ao discutir tabelas de dados.

Há várias maneiras de identificar os elementos de um data frame. Você pode usar a notação subscrita (por exemplo, com matrizes) ou pode especificar nomes de colunas. Usando a tabela de dados do paciente criado anteriormente. Os snippets a seguir demonstram essas abordagens.

df[1:2]
df[c('Diabetes', 'Status')]
df$Idade
## [1] 25 34 28 52
table(df$Diabetes, df$Status)
##        
##         Excelente Mal Melhorando
##   Tipo1         1   2          0
##   Tipo2         0   0          1

Exemplo

O data frame airquality está disponível no R. Suponha que você deseje analisar algumas variáveis, bem como visualizar a relação entre elas, por exemplo: vento (medido em milhas por horas) e temperatura (Fahrenheit). Elabore um gráfico.

head(airquality) # mostra as primeiras linha do data frame
x <- airquality$Wind
y <- airquality$Temp
plot(x, y, 
     main = "Airquality", 
     xlab = "Wind", 
     ylab = "Temp F", 
     pch = 19, 
     col = "red")
Figura 3 - Segundo gráfico

Figura 3 - Segundo gráfico

A notação $, como em airquality$Wind acima, especifica uma coluna (variável) do dataframe. A função plot() requer dois vetores (x, y) para o gráfico de dispersão.

Quais são as suas conclusões?

Transformando o data frame em uma planilha Excel.

#install.packages(xlsx)
xlsx::write.xlsx(df, 'meusdados1.xlsx')

Noções Básicas do R para Finanças+

Este é um bom momento para revermos algumas noções básicas do R, que serão úteis na continuação do curso.

  • Clique aqui, se estiver utilizando a versão LOCAL deste arquivo, ou

  • Clique aqui, se estiver utiizando a versão WEB deste arquivo.

Visualização de Gráficos

“E de que serve um livro”, pensou Alice, “sem figuras nem diálogos?” L. Carroll, Aventuras de Alice no país das maravilhas

“Em muitas ocasiões, apresentei aos clientes resultados estatísticos cuidadosamente elaborados em a forma de números e texto, apenas para que seus olhos brilhassem, ao invés de dispersar na sala de reunião. No entanto, esses mesmos clientes fizeram um Ah-ha entusiasmado no momento em que lhes apresentei as mesmas informações na forma de gráficos.

Muitas vezes consegui ver padrões nos dados ou detectar anomalias nos valores dos dados olhando para gráficos - padrões ou anomalias que eu perdi completamente ao conduzir análises estatísticas mais formais.

Os seres humanos são notavelmente hábeis em discernir os comportamentos das representações. Um gráfico bem elaborado pode ajudá-lo a fazer comparações significativas entre milhares de informações, extraindo padrões - que não são facilmente encontrados - através de outros métodos. Esta é uma das razões pelas quais os avanços no campo da estatística os gráficos tiveram um impacto tão grande na análise de dados. Os analistas de dados precisam olhar para seus dados, e essa é uma área em que R brilha.” Kabacoff, R In Action

“You can see a lot by just looking.” Yogi Berra

Neste tópico, exploraremos os métodos gerais para trabalhar com gráficos. Vamos começar com a criação e armazenamento de gráficos. Depois, veremos como modificar os recursos que são encontrados em qualquer gráfico. Esses recursos incluem títulos de gráficos, eixos, etiquetas, cores, linhas, símbolos e anotações de texto. Nosso foco será nas técnicas genéricas que se aplicam através de gráficos. (Nos próximos capítulos, focaremos em tipos específicos de gráficos). Finalmente, abordaremos investigar maneiras de combinar vários gráficos em um gráfico geral.

Considere as cinco linhas abaixo. O arquivo mtcars está disponível no R e seus dados foram extraídos da revista Motor Trend US, de 1974, e incluem o consumo de combustível e 10 aspectos do projeto e desempenho de automóveis para 32 automóveis (modelos 1973-74).

# evita termos que repetir o nome do data frame 'mtcars' para designar suas variáveis
attach(mtcars)  

plot(wt, mpg)
title('Regressão de Milhas/galão vs Peso em 1000lbs')
abline(lm(mpg ~ wt))
Figura 4 - Uma regressão simples

Figura 4 - Uma regressão simples

detach(mtcars)  # o oposto de attach

A primeira instrução anexa os dados ao data frame para se evitar a necessidade de se repetir matcars$variável a cada comando. A segunda declaração abre uma janela gráfica e gera um gráfico de dispersão entre o peso do automóvel no eixo horizontal e milhas por galão no eixo vertical. A terceira declaração adiciona um título. A quarta declaração adiciona uma linha de melhor ajuste (regressão linear). A instrução final desanexa a tabela de dados. Em R, os gráficos são normalmente criados dessa maneira interativa.

Agora, o mesmo gráfico, mas utilizando o package ggplot2.

#install.packages("ggplot2")
library(ggplot2)
p1 <- ggplot(mtcars, aes(x = wt, y = mpg)) +
         geom_point() +
         stat_smooth(method = lm, se = FALSE)  +
         ggtitle('Regressão de Milhas/galão vs Peso em 1000lbs')

p1
Figura 5 - Uma regressão com ggplot

Figura 5 - Uma regressão com ggplot

Com intervalo de confiança de 99%. O valor padrão é 95%.

#install.packages("ggplot2")
library(ggplot2)
p2 <- ggplot(mtcars, aes(x = wt, y = mpg)) +
         geom_point() +
         stat_smooth(method = lm, se = TRUE, level = 0.99)  +
         ggtitle('Regressão de Milhas/galão vs Peso em 1000lbs')

p2
Figura 6 - Intervalo de confiança 99%

Figura 6 - Intervalo de confiança 99%

A apresentação fica enriquecida e, na medida em que formos progredindo, utilizaremos mais o pacote ggplot2.

Um exemplo simples

dose <- c(20,30,40,45,60)
drogaA<- c(16,20,27,40,60)
drogaB <-c(15,18,25,31,40)
df <- data.frame(dose, drogaA, drogaB)

library(kableExtra)
kable_styling(kable(df)) # Mostra a tabela com estilo
dose drogaA drogaB
20 16 15
30 20 18
40 27 25
45 40 31
60 60 40
plot(dose, drogaA, 
     main = 'Resposta da droga A à dosagem', 
     type = 'b')
Figura 7 - Resposta à dosagem

Figura 7 - Resposta à dosagem

Parâmetros gráficos

Uma maneira de especificar essas opções é através da função par(). Valores assim definidos entrarão em vigor pelo resto da sessão ou até que eles sejam alterados.

O formato é par(optionname = valor, optionname = valor, ...).

Especificando par() sem parâmetros produz uma lista das configurações gráficas atuais. Adicionar a opção no.readonly = TRUE produz uma lista das configurações gráficas atuais que podem ser modificadas.

Continuando nosso exemplo, digamos que você gostaria de usar um triângulo sólido em vez de um círculo aberto como símbolo de plotagem e conecte os pontos usando uma linha tracejada do que uma linha sólida. Você poderá fazer isso com o seguinte snippet:

opar <- par(no.readonly = TRUE)
par(lty = 2, pch = 17)
plot(dose, drogaA, 
     type = 'b')
Figura 8 - Triângulos

Figura 8 - Triângulos

par(opar)
plot(dose, drogaA, 
     type = 'b', 
     lty = 3, 
     lwd = 3, 
     pch = 15, 
     cex = 2)
Figura 9 - Quadrados

Figura 9 - Quadrados

Para maiores detalhamentos acesse, por exemplo, Applied R Code.

Agora, usando o pacote ggplot2.

# Linha 
ggplot(data = df, aes(x = drogaA, y = drogaB)) +
  geom_line() +
  geom_point()
Figura 10 - Com ggplot (1)

Figura 10 - Com ggplot (1)

# Altere o tipo da linha
ggplot(data = df, aes(x = dose, y = drogaA)) +
  geom_line(linetype = "dashed", color = "blue", size = 1.2) +
  geom_point(color ="red", size = 3)
Figura 11 - Com ggplot (2)

Figura 11 - Com ggplot (2)

Utilização de parâmetros gráficos para controlar a aparência

Cores

A função colors() retorna todos os nomes de cores disponíveis. O R também possui várias funções que podem ser usadas para criar vetores de cores contíguas. Isso inclui rainbow(), heat.colors(), terrain.colors(), topo.colors() e cm.colors().

Por exemplo, rainbow(10) produz 10 cores contíguas do “arco-íris”. Os níveis de cinza são gerados com a função grey(). Neste caso, você especifica níveis de cinza como um vetor de números entre 0 e 1. gray(0: 10/10) produziria 10 níveis de cinza.

Assegure que você tenha efetuado o a instalação do package RColorBrewer antes de utilizá-lo.

Exemplo

#install.packages(RColorBrewer)
library(RColorBrewer)
n <- 20
minhasCores <- topo.colors(n)
barplot(rep(1, n), col = minhasCores)
Figura 12 - Gráfico de Barras

Figura 12 - Gráfico de Barras

n <- 10
minhasCores <- topo.colors(n)
pie(rep(1, n), labels = minhasCores, col = minhasCores)
Figura 13 - Gráfico de pizza (1)

Figura 13 - Gráfico de pizza (1)

meusCinzas <- gray(0:n/n)
pie(rep(1, n), labels = meusCinzas, col = meusCinzas)
Figura 14 - Gráfico de pizza (2)

Figura 14 - Gráfico de pizza (2)

A função par(mfrow())

par(mfrow()) permite visualizar dois ou mais gráficos numa mesma página, o que torna a visualização muito interessante para uma apresentação.

opar <- par(no.readonly = TRUE)
par(mfrow = c(1, 2))
plot(dose, drogaA, 
     type = 'b',
     pch = 19, 
     col = 'red')
plot(dose, drogaB, 
     type = 'b', 
     pch = 23, 
     col = 'blue', 
     bg = 'green')
Figura 15 - Múltiplos Gráficos

Figura 15 - Múltiplos Gráficos

par(opar)

Adicionando títulos

Use a função title() para adicionar o título e nomes no eixo cartesiano.

title(main = "Título principal ", sub = "sub-título", xlab = "eixo xl", ylab = "eixo y")

opar <- par(no.readonly = TRUE)
par(mfrow = c(1, 2))
plot(dose, drogaA, 
     type = 'b', 
     pch = 19, 
     lty = 2,
     col = 'red',
     main = 'Droga A', col.main = 'red',
     sub = 'Testes Clínicos', col.sub = 'blue',
     xlab = 'Dose',
     ylab = 'Resposta à droga')

plot(dose, drogaB, 
     type = 'b', 
     pch = 23, 
     lty = 6,
     col = 'blue',
     bg = 'red',
     main = 'Droga B', col.main = 'blue',
     sub = 'Testes Clínicos', col.sub = 'blue',
     xlab = 'Dose',
     ylab = 'Resposta à droga')
Figura 16 - Gerenciando títulos

Figura 16 - Gerenciando títulos

par(opar)

Legendas

Quando mais de um conjunto de dados ou grupo é incorporado em um gráfico, uma legenda pode ajudá-lo a identificar o que está sendo representado por cada barra, fatia ou linha.

Vejamos o snippet abaixo, utilizaremos o ggplot2 para enriquecer a apresentação.

ggplot(data = df) +
    geom_line(mapping = aes(y = drogaA, x = dose, color = 'drogaA'), size = 1) +
    geom_line(mapping = aes(y = drogaB, x = dose, color = 'drogaB'), size = 1) +
    xlab('Dose') + ylab('Resposta à droga') +
    ggtitle('Resposta às drogas (hipotética)') +
    scale_color_manual(values = c('drogaA' = 'darkblue', 'drogaB' = 'red')) +
    labs(color = 'Drogas')
Figura 17 - Legendas com ggplot2

Figura 17 - Legendas com ggplot2

Outras fontes

Além dos gráficos, um resumo das estatísticas mais importantes ajudam a compreender outros fatos de dados financeiros. O conteúdo apresentado em Torres-Reyna pode ser bastante útil. Estudaremos esse assunto adiante.