Escolar Documentos
Profissional Documentos
Cultura Documentos
De graça!!!
Tradução da matemática para código é direta
R é escrito por estatísticos, para estatísticos
É uma linguagem de programação, o que faz dele um ambiente flexível e versátil
Atualizado frequentemente e com grande gama de funções analíticas
Comunidade ativa e crescente
Colaboração entre a Fundação R, RStudio, Microsoft, TIBCO, Google, Oracle, HP e
outros. Patrocínio para financiar e inspirar ideias que permitirão que o R se torne uma
plataforma ainda melhor para a ciência, a pesquisa e a indústria.
3
Quando não usar R?
Vai fazer uma análise rápida e “suja” incluindo visualizações rápidas? - Excel
Análise única de poucos dados (única mesmo) - Excel
Desempenho crítico – Fortran, C, Julia
Desvantagens do R?
É uma linguagem de programação
Não é visual
Você não consegue ter ideia imediata de tudo que acontece
Não é user friendly
4
Ambiente R
https://www.r-project.org/
5
RStudio
https://www.rstudio.com/
6
Instalando R e RStudio
7
Criando um projeto R
8
Criando um projeto R
9
Criando um projeto R
10
Instalando Bibliotecas
Uma das grandes vantagens do R é a possibilidade de instalar bibliotecas. Existem
uma infinidade delas para cada tipo de problema.
11
Instalando Bibliotecas
Exemplo
install.packages("magrittr")
Depois de instalar basta chamar a biblioteca toda a vez que for utilizar
library(magrittr)
12
R como calculadora
Operador Descrição
x + y Adição de x com y
x - y Subtração de y em x
x * y Multiplicação de x e y
x / y Divisão de x por y
x^y ou x**y x elevado a y-ésima potência
x%%y Resto da divisão de x por y (módulo)
x%/%y Parte inteira da divisão de x por y
13
Operadores lógicos
Operadores lógicos retornarão sempre TRUE ou FALSE. Eles definem perguntas que aceitam
apenas verdadeiro e falso como resposta.
Operador Descrição
x < y x menor que y?
x <= y x menor ou igual a y?
x > y x maior que y?
x >= y x maior ou igual a y?
x == y x igual a y?
x != y x diferente de y?
!x Negativa de x
x & y x e y são verdadeiros?
x | y x ou y são verdadeiros?
14
xor(x, y) x ou y são exclusivamente verdadeiros?
Operadores lógicos - Exemplos
Teste Resposta
1 < 1 FALSE
1 <= 1 TRUE
1 == 0.999 FALSE
13.5 != 13.5 FALSE
!TRUE FALSE
TRUE & FALSE FALSE
TRUE & TRUE TRUE
xor(TRUE, FALSE) TRUE
TRUE == 1 TRUE
TRUE == 2 FALSE
FALSE == 0 TRUE
15
Números complexos
O R manipula números complexo de maneira fácil e intuitiva do mesmo jeito que trata os
números reais.
Função Descrição
Re(z) Parte real de z
Im(z) Parte imaginária de z
Mod(z) Módulo de z
Arg(z) Argumento de z
Conj(z) Complexo conjugado de z
16
Valores especiais
Certas operações matemáticas podem suscitar em valores não numéricos. Exemplo disso
são log de números negativos e divisões por zero. Para tais operações, o R reservou valores
especiais para serem retornadas quando operações não resultarem em um número
propriamente dito.
Valor Ocorrência
Inf/-Inf Divisões por zero, valores da ordem de 10^308
NaN Indeterminações matemáticas, como 0/0 e log(-1)
NA Indeterminado (Not Available), caracteriza observação perdida.
17
Criando uma variável (atribuição)
18
Estruturas de dados no R
19
Atomic vectors
Atomic vectors são a estrutura de objetos mais simples do R. Toda a estrutura base
é um vetor, tendo tamanho 1 ou n.
lógico
inteiro
duplo
complexo
caractere
20
Atomic vectors
21
Coerção
Quando dois tipos de objetos são inseridos uma estrutura homogênea (atomic vectors,
arrays ou matrizes), o R converterá o objeto para o tipo mais flexível, seguindo a
ordem:
caractere
complexo
duplo
inteiro
lógico
22
Fatores
24
Matrizes
As funções length(), dim(), nrow(), ncol() são usadas para determinar o
comprimento de cada dimensão de um objeto.
25
Listas
Listas são definidas usando a função list()
26
Data Frames
Data frames são listas em que todos os elementos têm o mesmo comprimento.
São definidos usando a função data.frame()
Em um data frame, os caracteres são convertidos em factors. Se essa conversão é indesejável, use o argumento
27
stringAsFactors = F
Data Frames
Se usarmos a função names() obtemos o nome das colunas do data frame.
Também é possível mudar o nome das colunas para algo útil
28
Combinando data frames
É possível combinar data frames usando as funções rbind() e cbind()
29
Subconjuntos
No R existem três tipos principais de operação de subconjuntos:
a) Números inteiros positivos: Retornam os elementos do vetor associados aos
índices especificados.
30
Subconjuntos
b) Números inteiros negativos. Para excluir os valores indicados
31
Subconjuntos
c) Vetores lógicos. Idealmente usados para filtras valores específicos cujas
posições não são conhecidas
32
Funções Nativas Básicas
Funções são códigos encapsulados (escritos geralmente fora da rotina principal)
que realizam uma ação qualquer. Podem ser chamadas à qualquer hora e quantas
vezes forem necessárias. Podem receber, ou não, parâmetros/argumentos, assim
como, podem ou não retornar valor.
33
Funções Numéricas
Funções básicas como arredondamento, valor absoluto, etc.
Função Descrição
abs(x) valor absoluto
ceiling(x) arredondamento para o inteiro superior
floor(x) arredondamento para o inteiro inferior
trunc(x) trunca valor na parte inteira
round(x, digits=n) arredondamento pelo número de decimais passados
sign(x) retorna 1 para positivo, -1 para negativo e 0 para 0
34
Funções Numéricas
Exemplos
35
Funções de Manipulação de Caracteres 1/2
Função Descrição
substr(x, start=n1, stop=n2) Extrai ou altera uma sequência de caracteres
36
Expressão regular: http://regexlib.com/CheatSheet.aspx?AspxAutoDetectCookieSupport=1
Funções de Manipulação de Caracteres 1/2
Exemplos
37
Funções de Manipulação de Caracteres 2/2
Função Descrição
paste(..., sep = "") Concatena caracteres usando o sep como separador entre eles
38
Funções de Manipulação de Caracteres 2/2
Exemplos
39
Funções de Operações Matemáticas 1/2
Função Descrição
sqrt(x) raiz quadrada
log(x) logaritmo natural
log10(x) logaritmo na base 10
exp(x) e^x
sin(x) seno de x
cos(x) cosseno de x
tan(x) tangente de x
sum(x, na.rm = T) soma dos valores em x
min(x, na.rm = T) menor valor em x
max(x, na.rm = T) maior valor em x
40
na.rm = T, parâmetro para desconsiderar NA dentro da estrutura de dados
Funções de Operações Matemáticas 1/2
Exemplos
41
Funções de Operações Matemáticas 2/2
Função Descrição
mean(x, trim=0, na.rm = T) Média de x. trim remove algum percentual de
valores altos e baixos
cumsum(x) Soma acumulada dos valores de x
42
Funções de Operações Matemáticas 2/2
Exemplos
43
O operador pipe %>% (magrittr)
O operador %>% (pipe) foi uma das grandes revoluções do R, tornando a leitura de
códigos mais lógica, fácil e compreensível. Foi introduzido por Stefan Milton Bache no
pacote magrittr.
A ideia do pipe é bem simples, usar o valor resultante da expressão do lado esquerdo
como primeiro argumento da função do lado direito.
44
O operador pipe %>% (magrittr)
45
Funções de Estatística e Probabilidade 1/3
Função Descrição
sd(x, na.rm = T) Retorna o desvio padrão de uma amostra
47
Funções de Estatística e Probabilidade 1/3
Correlação
Coeficientes de correlação variam entre -1 e 1
Sinal significa direção da correlação
Magnitude significa grau da correlação
48
Funções de Estatística e Probabilidade 1/3
Correlação: Outlier
49
Funções de Estatística e Probabilidade 1/3
Correlação Espúria
50
Funções de Estatística e Probabilidade 2/3
Função Descrição
dnorm(x, mean = 0, sd = 1, Função de densidade de probabilidade Normal
log = FALSE) com quantis x, média e desvio padrão definidos; log,
log.p definem se as probabilidade de p são em log(p)
pnorm(q, mean = 0, sd = 1) Função de distribuição acumulada da Normal com
quantis q, média e desvio padrão
51
Funções de Estatística e Probabilidade 2/3
Exemplos
52
Funções de Estatística e Probabilidade 3/3
No lugar de norm em dnorm, pnorm, qnorm e rnorm pode-se trocar por outra
distribuição de probabilidade. Algumas das possibilidades:
Distribuição Apelido
Normal norm
Uniforme unif
Beta beta
Chi Quadrado chisq
Exponencial exp
F de Snedecor f
Gama gamma
Poisson pois 53
Funções de Estatística e Probabilidade 3/3
Exemplos
54
Teste de Normalidade Shapiro-Wilk
Testa-se a hipótese nula de que a variável x adere à Distribuição Normal.
Função: shapiro.test(x)
Argumentos:
x um vetor numérico de valores de dados. Valores ausentes são permitidos, mas o
número de valores não ausentes deve estar entre 3 e 5000.
Saídas:
Uma lista com a classe "htest" contendo os seguintes componentes:
statistic valor da estatística de Shapiro-Wilk.
p.value valor p aproximado para o teste. É considerado adequado > 0,05 para
rejeitar a hipótese nula com nível de significância de 5%
method cadeia de caracteres "Shapiro-Wilk normality test".
55
data.name cadeia de caracteres fornecendo o (s) nome (s) dos dados.
“... É uma prática comum julgar um resultado significativo se
for produzido ao acaso com uma frequência de uma em vinte
tentativas. Este é um nível de significância arbitrário, mas
conveniente... O teste de significância só lhe diz o que
ignorar, ou seja, todos os experimentos nos quais resultados
significativos não são obtidos”.
Fisher, Ronald (1929). Proceedings of the Society for Psychical Research, 39: 189-192.
Ronald Fisher
“O valor para o qual P = 0,05, ou 1 em 20 ... é conveniente tomar este ponto como um
limite para julgar se um desvio deve ser considerado significativo ou não.”
Fisher, Ronald (1925). Statistical Methods for Research Workers. Edinburgh: Oliver and Boyd. p. 47.
56
Teste de Normalidade Shapiro-Wilk
Exemplos:
57
Teste de Normalidade Shapiro-Wilk
Exemplos:
58
Inferência
59
Inferência: Bootstrap
Bootstrapping é especialmente útil quando há dúvidas
de que os pressupostos da distribuição são válidos e
precisos. É um método não paramétrico que permite
calcular intervalos de confiança e testes de hipóteses.
Geralmente segue os seguintes passos básicos:
P95
• Reamostrar um determinado conjunto de dados
um número especificado de vezes
• Calcular alguma estatística de cada amostra
e seu desvio padrão
55
Inferência
61
Inferência
Bootstrap
P95
62
Funções: Criando a sua
Funções são códigos encapsulados (escritos geralmente fora da rotina principal) que
realizam uma ação qualquer. Abstraem uma rotina para casos mais gerais por meio de
parâmetros.
Estrutura:
nome_da_funcao <- function(<parâmetros>) {
# faz coisas com os parâmetros
return(resultado)
}
# uso da função
nome_da_funcao(param1, param2, ...)
64
Funções: Criando a sua
Exemplo parâmetro opcional
65
Funções: Criando a sua
Exemplo parâmetro indireto
66
Controle de fluxo (flow controls ou loops) 1/4
if, else e else if
Estrutura:
if(<condição1>) {
# se a condição1 for verdadeira...
# faz coisas
} else if (<condição2>) {
# caso a condição1 seja falsa e a condição2 seja verdadeira
# faz coisas para este caso
} else {
# faz coisas caso todas as condições anteriores falhem
}
As condições devem ser expressões lógicas, ou testes que retornem T ou F. O código entre {}
será executado se a condição for T ou será ignorado se a condição for F. 67
Controle de fluxo (flow controls ou loops) 1/4
if, else e else if
Exemplo:
68
Controle de fluxo (flow controls ou loops) 1/4
if, else e else if
Observações
Além de T e F, o R aceita 1 e 0, respectivamente. Não precisa ser 1 e 0 exatamente, a
regra é:
número diferente de zero é TRUE e
número igual a zero é FALSE
character, NA, NaN e list não são interpretáveis como lógicos. Será retornado um erro
caso sejam usados
Caso seja passado um array, vector ou matrix, será utilizado apenas o primeiro
elemento (é melhor evitar usar arrays como condições!). Será enviado um aviso de que
isso ocorreu.
69
else e else if são opcionais.
Controle de fluxo (flow controls ou loops) 2/4
for
Estrutura:
for(iterador in <sequencia>) {
# Fazer algo para cada item da <sequencia>
# pode haver outros fors aqui dentro
}
70
Controle de fluxo (flow controls ou loops) 2/4
for
Exemplo:
71
Controle de fluxo (flow controls ou loops) 2/4
for
Exemplo:
Estrutura:
73
Controle de fluxo (flow controls ou loops) 3/4
Ifelse()
74
Controle de fluxo (flow controls ou loops) 4/4
while
Estrutura:
while(<condições>) {
# coisas para fazer enquanto as <condições> forem TRUE
}
A estrutura é muito similar ao if. Tem uma condição (teste lógico) ou conjunto de testes
lógicos e a estrutura a ser executada enquanto a condição for TRUE
75
Controle de fluxo (flow controls ou loops) 4/4
while
Exemplo:
76
Vetorização
Vetores no R são cadeias ordenadas de elementos (geralmente números ou palavras).
Tudo no R é um vetor ou uma variação de vetor!
77
Reciclagem
O R alinha vetores, mesmo que não possuam o mesmo tamanho, repetindo o vetor
menor até completar o vetor maior. Esse comportamento é chamado de reciclagem.
É útil para fazer operações elemento por elemento, mas pode ser um tanto confuso.
78
A "família" apply
O R é uma linguagem vetorial e controles de fluxo (loops) podem e devem ser
substituídos por outras formas de cálculo sempre que possível.
Pode-se utilizar as funções da família apply para implementar cálculos de forma mais
eficiente.
79
A "família" apply 1/6
Função apply(x, MARGIN, FUN, …)
Saída:
Retorna a classe mais simples entre vetor, matriz e array dependendo da dimensão do
80
resultado.
A "família" apply 1/6
Função apply(x, MARGIN, FUN, …)
Exemplo
81
A "família" apply 2/6
Função lapply(x, FUN, …)
Retorna uma lista do mesmo tamanho que x, onde cada elemento é o resultado da
aplicação de FUN no elemento correspondente de x.
Argumentos:
x um vetor (atômico ou lista). Outros objetos serão convertidos em lista
FUN função que será utilizada
… parâmetros da função FUN, se houver
Saída:
Retorna uma lista do mesmo tamanho e mesma dimensão (se a função permitir) que x
82
A "família" apply 2/6
Função lapply(x, FUN, …)
Exemplo
83
A "família" apply 3/6
Função sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
É uma versão user-friendly de lapply, retornando, por padrão, um vetor, uma matriz ou,
se simplificar = "array", um array se for apropriado (simplificação).
Argumentos:
x um vetor (atômico ou lista). Outros objetos serão convertidos em lista
FUN função que será utilizada
… parâmetros da função FUN, se houver
simplify lógica ou cadeia de caracteres; O resultado deve ser simplificado
para um vetor, matriz ou dimensional superior, se possível?
USE.NAMES lógico; se T e se x for caractere, use x como names para o resultado,
a menos que já tenha names
Saída:
84
Retorna um vetor, uma matriz ou uma lista do mesmo tamanho que x
A "família" apply 3/6
Função sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
Exemplo
85
A "família" apply 4/6
Função tapply(x, INDEX, FUN = NULL, ..., default = NA, simplify = TRUE)
Calcula o resultado de uma FUN sobre dados, para cada um dos níveis de INDEX
Argumentos:
x tipicamente um vetor
INDEX uma lista de um ou mais fatores, cada um com o mesmo comprimento
de x. Os elementos são convertidos automaticamente em fatores.
FUN função que será utilizada
… parâmetros da função FUN, se houver
default (apenas no caso de simplificação para um array) o valor com o qual o
array é iniciado em array (default, dim = ..)
simplify lógica ou cadeia de caracteres; O resultado deve ser simplificado para
um vetor, matriz ou dimensional superior, se possível?
Saída:
86
Retorna tipicamente um array
A "família" apply 4/6
Função tapply(x, INDEX, FUN = NULL, ..., default = NA, simplify = TRUE)
Exemplo
87
A "família" apply 5/6
Função by(data, INDICES, FUN, ..., simplify = TRUE)
Saída:
Retorna tipicamente um objeto da clase by, uma lista ou array
88
A "família" apply 5/6
Função by(data, INDICES, FUN, ..., simplify = TRUE)
Exemplo
89
A "família" apply 6/6
Função replicate(n, expr, simplify = "array")
Saída:
Retorna tipicamente um objeto da array
90
A "família" apply 6/6
Função replicate(n, expr, simplify = "array")
Exemplo
91
Gráficos Básicos
Função plot(x, y, ...)
Função para exibição de gráficos
Estrutura
plot(x, # vetor de pontos de x
y, # vetor de pontos de y
type = "l", # "p" pontos (default), "l" linha, "b" ambos,
# "h" reta vertical, "s" escadas, "n" não plotar
main = "", # título
sub = "", # subtítulo
xlab = "", # nome do rótulo do eixo x
ylab = "", # nome do rótulo do eixo x
col = "black", # cor do gráfico - colours() nome das cores
xlim = c(1,10), # limites do eixo x
ylim = c(min(y), max(y)), # limites do eixo y
94
lwd = 1) # espessura das visualizações
Gráficos Básicos
Função plot(x, y, ...)
Exemplo
95
Gráficos Básicos
Função plot(x, y, ...)
Exemplo 2: Linha
96
Gráficos Básicos
Função plot(x, y, ...)
Exemplo 3: Escada
97
Gráficos Básicos
Função barplot(y, …)
98
Gráficos Básicos
Função boxplot(x, ...)
99
Gráficos Básicos
Função pie(x, …)
100
Gráficos Básicos
Função hist(x, …)
101
Manipulação de Dados (tidyverse)
WICKHAM, Hadley . Tidy Data. Journal of Statistical Software, [S.l.], v. 59, Issue 10, p. 1 - 23, sep. 2014. ISSN 1548-7660. Available at: <https://www.jstatsoft.org/v059/i10>. Date 102
accessed: 10 july 2018. doi:http://dx.doi.org/10.18637/jss.v059.i10.
Manipulação de Dados (tidyverse)
103
Manipulação de Dados (tidyverse)
Trabalhando com tibbles (tibble)
Uma tibble é um data frame com algumas
melhorias. A classe tibble é herdada da data
frame com três mudanças base:
104
Manipulação de Dados
Leitura de arquivos do Excel (biblioteca readxl)
Funções read_excel(path, ...), read_xlsx(path, ...) e read_xls(path, ...)
Transferem o conteúdo de uma planilha Excel para um tibble. A read_excel tenta adivinhar o tipo de
excel. O read_xlsx e read_xls são específicos para as versões do excel. Principais argumentos:
path nome do arquivo a ser lido, incluindo o caminho onde ele está
sheet nome da aba do excel onde estão os dados
col_names valor lógico (T ou F), usa os valores da primeira linha como nome das colunas
col_types vetor de caractere que representa a classe de cada coluna. Os formatos são:
"skip", "guess", "logical", "numeric", "date", "text" ou "list".
skip número de linhas que serão ignoradas na leitura
range uma seleção da planilha a ser lida como no excel (ex. "C1:E7"). Usa as funções
cell_rows e cell_cols para definir a seleção por linha ou coluna.
Retorna um tibble
105
Manipulação de Dados
Função read_excel(path, ...)
106
Manipulação de Dados
Função read_xlsx(path, ...)
107
Manipulação de Dados
Função read_xlsx(path, ...)
108
Manipulação de Dados
Escrita de arquivos do Excel (biblioteca writexl)
Função write_xlsx(x, path, ...)
Transferem o conteúdo de um data.frame ou uma lista para uma planilha Excel.
Principais argumentos:
x data.frame ou lista para escrever no Excel. Cada item da lista será uma aba.
path nome do arquivo a ser criado/escrito, incluindo o caminho onde ele está
col_names valor lógico (T ou F), passa o nome das colunas para a primeira linha da tabela
format_headers valor lógico (T ou F), formata col_names como centralizado e negrito
109
Manipulação de Dados
Função write.xlsx2(x, file, ...)
110
Manipulação de Dados (tidyverse)
Leitura de arquivos texto (biblioteca readr)
Funções read_csv(file, ...), read_csv2(file, ...), read_tsv(file, ...) e read_delim(file, ...)
Leitura de arquivos de texto separados por vírgulas (csv), por tabulações (tsv), por “;” (csv2). O csv2
usa a “,” como separador decimal (adaptação EU). Todos são casos especiais do read_delim()
Principais argumentos:
file nome do arquivo a ser lido, incluindo o caminho onde ele está
col_names recebe um valor lógico (T ou F) e indica o uso da primeira linha válida
como nome das colunas.
delim caractere que será usado como separador de coluna.
col_types especifica tipos das colunas através de cols() ou caractere representando todas
as colunas (c,character; i, integer; n,number; d,double; l,logical; D,date). Ex. “idd”
locale controla o local, indicando, por exemplo, o separador de decimal a ser usado.
comment caractere que será usado como comentário. Tudo que estiver nessa linha será
ignorado
111
Retorna um tibble
Manipulação de Dados (tidyverse)
Função read_csv(file, ...)
112
Manipulação de Dados (tidyverse)
Função read_delim(file, ...)
113
Manipulação de Dados (tidyverse)
Biblioteca tidyr
A tidyr é uma gramática de manipulação de dados cujo objetivo é ajudar a criar tidy data
115
Manipulação de Dados (tidyverse)
Verbos da tidyr: spread()
O verbo spread() espalha uma variável nas colunas. É o inverso do gather()
116
Manipulação de Dados (tidyverse)
Verbos da tidyr: separate()
O verbo separate() separa uma coluna de caracteres em várias colunas
Biblioteca dplyr
A dplyr é uma gramática de manipulação de dados, fornecendo um conjunto consistente
de “verbos” que ajudam a resolver os desafios mais comuns de manipulação de dados
O dplyr utiliza C e C++ por trás da maioria das funções, tornando o código mais eficiente.
118
Manipulação de Dados (tidyverse)
Verbos da dplyr: select()
O verbo select() seleciona colunas (variáveis). É possível utilizar nomes,
índices, intervalos de variáveis ou utilizar funções para selecionar as variáveis.
Funções úteis:
• starts_with(x) String
• contains(x) String
• one_of(x) Vetor
119
Manipulação de Dados (tidyverse)
Verbos da dplyr: select()
120
Manipulação de Dados (tidyverse)
Verbos da dplyr: select()
121
Manipulação de Dados (tidyverse)
Verbos da dplyr: select()
122
Manipulação de Dados (tidyverse)
Verbos da dplyr: distinct()
O verbo distinct() remove duplicatas de acordo com a seleção.
123
Manipulação de Dados (tidyverse)
Verbos da dplyr: filter()
O verbo filter() filtra (seleciona) linhas
• &, |, !, xor()
• %in%
• is.na()
• between(), near()
124
Manipulação de Dados (tidyverse)
Verbos da dplyr: filter()
125
Manipulação de Dados (tidyverse)
Verbos da dplyr: filter()
126
Manipulação de Dados (tidyverse)
Verbos da dplyr: arrange()
O verbo arrange() ordena os dados de acordo com as variáveis desejadas.
A função desc() pode ser utilizada para se obter uma ordem decrescente.
127
Manipulação de Dados (tidyverse)
Verbos da dplyr: arrange()
128
Manipulação de Dados (tidyverse)
Verbos da dplyr: arrange()
Ordenação por múltiplas colunas
129
Manipulação de Dados (tidyverse)
Verbos da dplyr: mutate()
O verbo mutate() cria ou modifica colunas. Novas variáveis devem ter o mesmo
número de linhas da base original (ou terem comprimento 1 para serem repetidas).
Funções úteis:
• match()
130
Manipulação de Dados (tidyverse)
Verbos da dplyr: mutate()
131
Manipulação de Dados (tidyverse)
Verbos da dplyr: mutate()
132
Manipulação de Dados (tidyverse)
Verbos da dplyr: mutate()
mutate como join
133
Manipulação de Dados (tidyverse)
Verbos da dplyr: mutate()
mutate como join
134
Manipulação de Dados (tidyverse)
Verbos da dplyr: summarise()
O verbo summarise() aplica uma função às summarise()
variáveis, retornando um vetor de tamanho 1.
Geralmente é utilizado com da função group_by()
para resultados de forma agregada.
Funções úteis:
135
Manipulação de Dados (tidyverse)
Verbos da dplyr: summarise()
136
Manipulação de Dados (tidyverse)
Verbos da dplyr: summarise()
137
Manipulação de Dados (tidyverse)
Verbos da dplyr: pull()
O verbo pull() retorna um vetor
138
Manipulação de Dados (tidyverse)
Join (dplyr)
Join é um conceito que vem da área de banco de dados e se caracteriza por operações
que permitem a junção de variáveis (colunas) de duas, ou mais, tabelas. No join é feita
a correspondência entre as observações por suas chaves* gerando uma nova tabela
com as variáveis selecionadas.
*O conceito de chave, em banco de dados, é a definição de uma ou mais colunas que distinguem uma linha
(observação) das demais dentro de uma tabela. A chave determina a unicidade de cada registro dentro de uma tabela. 139
Manipulação de Dados (tidyverse)
140
Manipulação de Dados (tidyverse)
inner join (dplyr): inner_join(x, y, by = NULL, ...)
Exemplo
141
Manipulação de Dados (tidyverse)
142
Manipulação de Dados (tidyverse)
outer join (dplyr): left_join()
Exemplo
143
Manipulação de Dados (tidyverse)
outer join (dplyr): right_join()
Exemplo
144
Manipulação de Dados (tidyverse)
outer join (dplyr): full_join()
Exemplo
145
Manipulação de Dados (tidyverse)
146
Manipulação de Dados (tidyverse)
filter join (dplyr): semi_join() e anti_join()
Combinam as observações entre duas tabelas, retornando a primeira tabela
filtrada pela segunda. Existem dois tipos:
semi_join(x,y) anti_join(x,y)
148
Manipulação de Dados (tidyverse)
filter join (dplyr): anti_join()
Exemplo
149
Base de Dados (RODBC)
O objetivo da biblioteca RODBC é fornecer uma interface compatível (DBI) para os drivers
de Open Database Connectivity (ODBC). Isso permite uma conexão eficiente e fácil de
configurar para qualquer database management systems (DBMS) com drivers ODBC
disponíveis, incluindo SQL Server, Oracle, MySQL e Access.
O RODBC foi implementado e C++, o que o torna bastante rápido e eficiente.
ODBC funciona configurando uma conexão entre cliente (RODBC) para os DBMSs,
conforme especificado no data source name (DSN).
150
Base de Dados (RODBC)
Criando um DSN
Pesquise e abra “fonte de dados”
151
Base de Dados (RODBC)
Abrindo uma conexão e verificando o banco de dados
Pode-se enviar usuário e senha para abrir uma conexão usando: uid = "user“ e pwd = “****”.
152
Base de Dados (RODBC)
Verificando as colunas de uma tabela
153
Base de Dados (RODBC)
Lendo uma tabela do banco dados
154
Base de Dados (RODBC)
Lendo uma tabela do banco dados (query)
155
Base de Dados (RODBC)
Limpando uma tabela do banco dados e removendo (DROP) uma tabela
156
Base de Dados (RODBC)
Criando uma tabela e escrevendo no banco dados
157
Pode-se incluir novos dados em uma tabela existente com o parâmetro: append = T
Base de Dados (RODBC)
Alterando dados de uma tabela no banco dados
158
Regressão
George E. P. Box
159
Regressão
Modelo de regressão linear
Y= 𝛽0 + 𝛽1 𝑋 + 𝜀
𝜀 = 𝑁(0, 𝜎𝜀 )
160
Regressão
Função lm(formula, data, ...)
formula: valor esperado ~ var explicativa1 + ... + var explicativan
data: data.frame com dados
𝐶𝑂2𝑝𝑝𝑚 = 𝛽0 + 𝛽1 𝑎𝑛𝑜
161
Regressão
Interpretação dos resultados
162
Regressão
Interpretação dos resultados
Teste t
𝐻0 : 𝛽𝑗 = 𝑏 (𝑐𝑎𝑠𝑜 𝑏 = 0)
𝛽𝑗 − 𝑏
~𝑡(𝑛−𝑝)
𝜎𝛽
𝑗
−2731,25 − 0
~ − 53,41
51,14
𝑡 > 𝑡𝛼,𝑛−𝑝 Valor Crítico
2
α, confiança
n, amostra
p, variáveis
163
Regressão
Interpretação dos resultados
𝑛−1
𝑅2 = 1 − 1 − 𝑅2
𝑛−𝑝
59 − 1
2
𝑅 = 1− 1 − 𝑅2
59 − 2
𝑅2 = 0,9843
n, amostra
p, variáveis
164
Regressão
Interpretação dos resultados
O teste F informa se um
grupo de variáveis, ou até
mesmo um modelo inteiro, é
conjuntamente significativo
165
Regressão
Validando Modelo
166
167
Regressão
Melhorando o Modelo
Regressão
Comparação de Modelos (plotrix)
RMSE
Taylor, K.E. (2001) Summarizing multiple aspects of model performance in a single diagram. Journal of Geophysical Research, 106: 7183-7192 168
Visualização
Gramática de Gráficos (ggplot2)
Hadley Wickham (2010) A Layered Grammar of Graphics, Journal of Computational and Graphical Statistics, 19:1, 3-28, DOI: 10.1198/jcgs.2009.07098
169
Visualização
Camada de Dados (ggplot2)
No ggplot2 a primeira camada é dada pela função ggplot(). Ela recebe um data
frame e cria a camada base do gráfico.
170
Visualização
Camada de Estética (ggplot2)
A camada de estética é dada pela função aes(). Ela indica quais valores serão
mapeados e cada eixo. Também se pode atribuir uma propriedade visual aos objetos
em sua trama, como tamanho, a forma ou a cor.
171
Visualização
Camada de Geometria (ggplot2)
Algumas geometrias:
geom_line() linhas definidas por pares (x,y)
geom_abline() retas definidas por um intercepto e uma inclinação
geom_hline() retas horizontais
geom_bar() barras
geom_histogram() histogramas
geom_boxplot() boxplots
geom_density() densidades
geom_point() pontos 172
Visualização
Camada de Geometria (ggplot2)
173
Visualização
Camada de Geometria e separação visual por aes()(ggplot2)
174
Visualização
Camada de Facet (ggplot2)
175
Visualização
Camada de Estatística (ggplot2)
176
Visualização
Camada de Coordenadas (ggplot2)
177
Visualização
Camada de Tema (ggplot2)
https://ggplot2.tidyverse.org/reference/theme.html 178
http://research.stowers.org/mcm/efg/R/Color/Chart/ColorChart.pdf
Visualização
Mapa (ggplot2, brazilmaps)
179
Mapas (raster)
180
Web Scraping
bibliotecas httr, xml2 e rvest
São as bibliotecas mais utilizadas em web scraping. A httr faz requisições web para
obter as informações das páginas de forma relativamente simples. xml2 serve para
estruturar HTML ou XML, tornando possível encontrar tags “<>” e seus atributos. rvest
é escrito sobre as duas anteriores e torna ainda mais fácil o processo de web scraping.
181
http://www.htmlquick.com/reference/tags.html
Web Scraping
GET e POST
A requisição POST envia uma url para o servidor e também uma lista de dados
preenchidos pelo usuário. Na maioria dos casos, ao submeter um formulário de
um site, fazemos uma requisição POST.
182
Web Scraping
GET
183
Web Scraping
POST
184
Web Scraping
bibliotecas httr, xml2 e rvest
185
Web Scraping
Exemplo passo a passo do BIG da ANEEL
186
Web Scraping
Exemplo passo a passo do BIG da ANEEL
187
Web Scraping
Exemplo passo a passo do BIG da ANEEL
188