R para Data Science · 2019-11-25 · RparaDataScience

44
R para Data Science Marina Muradian 22/11/2019

Transcript of R para Data Science · 2019-11-25 · RparaDataScience

Page 1: R para Data Science · 2019-11-25 · RparaDataScience

R para Data Science

Marina Muradian

22/11/2019

Page 2: R para Data Science · 2019-11-25 · RparaDataScience

Survey - Qual ferramenta você mais usa?

Link: socrative.com

Classroom : MURADIAN331

Page 3: R para Data Science · 2019-11-25 · RparaDataScience

Por que usar o R?

I Produção Acadêmica e Indústria

I "Limpeza" de dados (tidy data)

I Visualização de dados

I Análises estatísticas e organização de bases de dados

I Machine Learning

I Disponibilidade

https://www.newgenapps.com/blog/6-reasons-why-choose-r-programming-for-data-science-projects

Page 5: R para Data Science · 2019-11-25 · RparaDataScience

R para Data Science

https://trends.google.com.br/trends/explore?date=all&q=R%20programming

Page 6: R para Data Science · 2019-11-25 · RparaDataScience

R para Data Science

https://www.kaggle.com/sudhirnl7/data-science-survey-2018/output

Page 7: R para Data Science · 2019-11-25 · RparaDataScience

R

I Criado nos anos 90, porRoss Ihaka e RobertGentleman

I Linguagem muito usada paracálculos estatísticos, análisee representação gráfica dedados

I Open source

I Altamente expansível com ouso das libraries

I RStudio

Page 8: R para Data Science · 2019-11-25 · RparaDataScience

RStudio

Page 10: R para Data Science · 2019-11-25 · RparaDataScience

Estudo de Caso - Vacinas

I Polêmica:

https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(97)11096-0/fulltext

I Alegação: ligação entre a vacina contra sarampo, caxumba erubéola (MMR) e o aparecimento de autismo e doença intestinal.

Page 11: R para Data Science · 2019-11-25 · RparaDataScience

Estudo de Caso - Vacinas

I Apesar de muitas evidênciascientíficas contradizerem esseachado, os relatóriossensacionalistas da mídia eteorias da conspiraçãolevaram algumas pessoas aacreditar que as vacinaseram prejudiciais

I Como resultado, muitos paisdeixaram de vacinar seusfilhos, fazendo com quedoenças que praticamentedesapareceram ao longo dosanos, voltassem a aparecer

Page 12: R para Data Science · 2019-11-25 · RparaDataScience

Estudo de Caso - Vacinas

I O artigo de 1988 foi retirado e Andrew Wakefield foi "eliminadodo registro médico do Reino Unido, com uma declaraçãoidentificando falsificação deliberada na pesquisa publicada noThe Lancet, e, portanto, foi impedido de praticar medicina noReino Unido"

I No entanto, persistem conceitos errôneos, em parte devido aativistas autoproclamados que continuam a disseminarinformações erradas sobre vacinas.

I A comunicação eficaz dos dados é um forte antídoto para adesinformação e a difusão de fake news.

Page 13: R para Data Science · 2019-11-25 · RparaDataScience

Estudo de Caso - Vacinas

http://graphics.wsj.com/infectious-diseases-and-vaccines/

Page 14: R para Data Science · 2019-11-25 · RparaDataScience

Estudo de Caso - Vacinas

I Os dados utilizados para esses gráficos foram coletados,organizados e distribuídos pelo Tycho Project

I Dados: us_contagious_diseases, disponíveis no pacote dslabs

library(dslabs)data("us_contagious_diseases")head(us_contagious_diseases)

## disease state year weeks_reporting count population## 1 Hepatitis A Alabama 1966 50 321 3345787## 2 Hepatitis A Alabama 1967 49 291 3364130## 3 Hepatitis A Alabama 1968 52 314 3386068## 4 Hepatitis A Alabama 1969 49 380 3412450## 5 Hepatitis A Alabama 1970 51 413 3444165## 6 Hepatitis A Alabama 1971 51 378 3481798

Page 15: R para Data Science · 2019-11-25 · RparaDataScience

Estudo de Caso - Vacinas

I Nosso objetivo é replicar os gráficos do artigo do WSJ e mostrarque as vacinas, de fato, diminuem a ocorrência de doenças.

I Utilizando ferramentas do pacote tidyverse, vamos manipular abase de dados para atingir nosso objetivo

I Para começar, vamos trabalhar com os casos deSarampo(Measles)

Page 16: R para Data Science · 2019-11-25 · RparaDataScience

Preparando os dados com dplyr - filter()

data <- us_contagious_diseases %>%filter(!state%in%c("Hawaii","Alaska") &

disease == "Measles")head(data)

## disease state year weeks_reporting count population## 1 Measles Alabama 1928 52 8843 2589923## 2 Measles Alabama 1929 49 2959 2619131## 3 Measles Alabama 1930 52 4156 2646248## 4 Measles Alabama 1931 49 8934 2670818## 5 Measles Alabama 1932 41 270 2693027## 6 Measles Alabama 1933 51 1735 2713243

I qual o problema em usar a variável count para comparar o casosde Sarampo por estado?

Page 17: R para Data Science · 2019-11-25 · RparaDataScience

Criando variáveis com dplyr - mutate()

data <- data %>%mutate(rate = count / population * 10000 * 52/weeks_reporting)

head(data)

## disease state year weeks_reporting count population rate## 1 Measles Alabama 1928 52 8843 2589923 34.143872## 2 Measles Alabama 1929 49 2959 2619131 11.989333## 3 Measles Alabama 1930 52 4156 2646248 15.705255## 4 Measles Alabama 1931 49 8934 2670818 35.498411## 5 Measles Alabama 1932 41 270 2693027 1.271577## 6 Measles Alabama 1933 51 1735 2713243 6.519945

Page 18: R para Data Science · 2019-11-25 · RparaDataScience

Por que usar o ggplot2?

I Grammar of Graphics - o "gg" do ggplot2:I analogia à gramática de uma língua: formação de frases a partir

de alguns verbos, substantivos e adjetivos-chaveI conhecimento das layers do ggplot2 e sua gramática permite a

criação de diversos gráficosI diminui a necessidade de memorização

I Layers: sintaxe intuitiva e relativamente simples de lembrar

I Abrangência: o default do ggplot2 satisfaz a grande maioriados casos e é visualmente interessante.

I tidy data

Page 19: R para Data Science · 2019-11-25 · RparaDataScience

Estrutura do ggplot2

I data: conjunto de dados a ser visualizado no gráfico

I geometry: tipo de gráfico (scatterplot, boxplot, barplot,histogram, qqplot, smooth density, etc.)

I aesthetics: aspectos visuais (visual cues) de mapeamento devariáveis, como eixos x e y e cores.

https://rstudio.com/wp-content/uploads/2015/03/ggplot2-cheatsheet.pdf

Page 20: R para Data Science · 2019-11-25 · RparaDataScience

Gráficos com ggplot2 - California

Início da vacinação (1963)

0

50

100

1940 1960 1980 2000Anos

Cas

os d

e S

aram

po/1

0.00

0

California

Page 21: R para Data Science · 2019-11-25 · RparaDataScience

Criando um objeto ggplot - Californiadata %>% filter(state == "California" &

!is.na(rate)) %>% ggplot()

Page 22: R para Data Science · 2019-11-25 · RparaDataScience

Criando um objeto ggplot

No ggplot2, os gráficos são construídos por camadas (layers).

De modo geral:

DATA % > % ggplot() + LAYER 1 + ... + LAYER N

I A primeira layer usualmente se refere à geometry

Page 23: R para Data Science · 2019-11-25 · RparaDataScience

Gráficos com ggplot2 - Californiap <- data %>% filter(state == "California" & !is.na(rate)) %>%

ggplot(aes(year, rate)) +geom_line() +ylab("Casos de Sarampo/10.000") + xlab("Anos") + ggtitle ("California")

p

0

50

100

1940 1960 1980 2000Anos

Cas

os d

e S

aram

po/1

0.00

0

California

Page 24: R para Data Science · 2019-11-25 · RparaDataScience

Gráficos com ggplot2 - California

p <- p + geom_vline(xintercept=1963, col = "red")p

0

50

100

1940 1960 1980 2000Anos

Cas

os d

e S

aram

po/1

0.00

0

California

Page 25: R para Data Science · 2019-11-25 · RparaDataScience

Gráficos com ggplot2 - Californiap + annotate(geom = "text",

label = "Início da vacinação (1963)",x = 1985,y = 100,col = "red")

Início da vacinação (1963)

0

50

100

1940 1960 1980 2000Anos

Cas

os d

e S

aram

po/1

0.00

0

California

Page 26: R para Data Science · 2019-11-25 · RparaDataScience

Uma visão geral

Média dos EUA

5

25

125

300

1940 1960 1980 2000

Cases de sarampo/10,000 por estado

Page 27: R para Data Science · 2019-11-25 · RparaDataScience

Resumindo dados com summarize()I Se quisermos calcular a média da taxa de Sarampo nos EUA para

cada ano podemos usar os comandos group_by() esummarize()

avg <- us_contagious_diseases %>%filter(disease=="Measles") %>% group_by(year) %>%summarize(us_rate = sum(count, na.rm = TRUE) /sum(population, na.rm = TRUE) * 10000)

head(avg)

## # A tibble: 6 x 2## year us_rate## <dbl> <dbl>## 1 1928 40.4## 2 1929 27.9## 3 1930 31.3## 4 1931 35.4## 5 1932 31.2## 6 1933 30.2

Page 28: R para Data Science · 2019-11-25 · RparaDataScience

Uso de layersg <- data %>% filter(!is.na(rate)) %>%

ggplot() +geom_line(mapping = aes(year, rate, group = state),color = "grey50",show.legend = FALSE,alpha = 0.2,size = 1) +scale_y_continuous(trans = "sqrt",breaks = c(5, 25, 125, 300))

g

5

25

125

300

1940 1960 1980 2000year

rate

Page 29: R para Data Science · 2019-11-25 · RparaDataScience

Uso de layersg <- g + geom_line(mapping = aes(year, us_rate),

data = avg,size = 1)

g

5

25

125

300

1940 1960 1980 2000year

rate

Page 30: R para Data Science · 2019-11-25 · RparaDataScience

Uso de layers

g <- g + geom_vline(xintercept=1963,col = "red")g

5

25

125

300

1940 1960 1980 2000year

rate

Page 31: R para Data Science · 2019-11-25 · RparaDataScience

Uso de layersg<- g + ggtitle("Cases de sarampo/10,000 por estado") +

xlab("") + ylab("") +annotate(geom = "text",

label = "Média dos EUA", x = 1955, y = 50)g

Média dos EUA

5

25

125

300

1940 1960 1980 2000

Cases de sarampo/10,000 por estado

Page 32: R para Data Science · 2019-11-25 · RparaDataScience

Uso de layers

Média dos EUA

5

25

125

300

1940 1960 1980 2000

Cases de sarampo/10,000 por estado

Page 33: R para Data Science · 2019-11-25 · RparaDataScience

Gráfico animado

library(gganimate)

g + transition_reveal(year)

Page 34: R para Data Science · 2019-11-25 · RparaDataScience

Reproduzindo o gráfico do WSJ - Sarampo

Objetivo: visualizar os dados de todos os estados num só gráfico (heatmap):

I data: data

I geometry: geom_tile() (heat map)

I aesthetics:I Eixo x: yearI Eixo y: stateI Cor: rate

Page 35: R para Data Science · 2019-11-25 · RparaDataScience

Reproduzindo o gráfico do WSJ - Sarampo

AlabamaArizona

ArkansasCaliforniaColorado

ConnecticutDelaware

District Of ColumbiaFlorida

GeorgiaIdahoIllinois

IndianaIowa

KansasKentuckyLouisiana

MaineMaryland

MassachusettsMichigan

MinnesotaMississippi

MissouriMontana

NebraskaNevada

New HampshireNew JerseyNew Mexico

New YorkNorth Carolina

North DakotaOhio

OklahomaOregon

PennsylvaniaRhode Island

South CarolinaSouth Dakota

TennesseeTexasUtah

VermontVirginia

WashingtonWest Virginia

WisconsinWyoming

1940 1960 1980 2000

0

100

200

rate

Sarampo

Page 36: R para Data Science · 2019-11-25 · RparaDataScience

Atualizando os dados

data1 <- us_contagious_diseases %>%filter(!state%in%c("Hawaii","Alaska") &

disease == "Measles") %>%mutate(rate = count / population * 10000)

head(data1)

## disease state year weeks_reporting count population rate## 1 Measles Alabama 1928 52 8843 2589923 34.143872## 2 Measles Alabama 1929 49 2959 2619131 11.297640## 3 Measles Alabama 1930 52 4156 2646248 15.705255## 4 Measles Alabama 1931 49 8934 2670818 33.450426## 5 Measles Alabama 1932 41 270 2693027 1.002589## 6 Measles Alabama 1933 51 1735 2713243 6.394562

Page 37: R para Data Science · 2019-11-25 · RparaDataScience

Reproduzindo o gráfico do WSJ - Sarampo

h <- data1 %>% ggplot(aes(year, state, fill = rate)) +geom_tile(color = "grey50") +scale_x_continuous(expand=c(0,0)) +scale_fill_gradientn(colors = brewer.pal(9, "Reds"),

trans = "sqrt") +theme_minimal() +theme(panel.grid = element_blank()) +ggtitle("Sarampo") +ylab("") +xlab("")

h

Page 38: R para Data Science · 2019-11-25 · RparaDataScience

Reproduzindo o gráfico do WSJ - Sarampo

AlabamaArizona

ArkansasCaliforniaColorado

ConnecticutDelaware

District Of ColumbiaFlorida

GeorgiaIdahoIllinois

IndianaIowa

KansasKentuckyLouisiana

MaineMaryland

MassachusettsMichigan

MinnesotaMississippi

MissouriMontana

NebraskaNevada

New HampshireNew JerseyNew Mexico

New YorkNorth Carolina

North DakotaOhio

OklahomaOregon

PennsylvaniaRhode Island

South CarolinaSouth Dakota

TennesseeTexasUtah

VermontVirginia

WashingtonWest Virginia

WisconsinWyoming

1940 1960 1980 2000

0

100

200

rate

Sarampo

Page 39: R para Data Science · 2019-11-25 · RparaDataScience

Reproduzindo o gráfico do WSJ - Sarampo

I Podemos ordenar os estados com base nos valores de rate:

data1 <- data1 %>% mutate(state = reorder(state, rate))

data1 %>% ggplot(aes(year, state, fill = rate)) +geom_tile(color = "grey50") +scale_x_continuous(expand=c(0,0)) +scale_fill_gradientn(colors = brewer.pal(9, "Reds"),

trans = 'sqrt') +theme_minimal() +theme(panel.grid = element_blank()) +ggtitle("Sarampo") +ylab("") +xlab("")

Page 40: R para Data Science · 2019-11-25 · RparaDataScience

Reproduzindo o gráfico do WSJ - Sarampo

MississippiLouisiana

GeorgiaOklahoma

MissouriNevadaFlorida

NebraskaAlabamaArkansas

South DakotaSouth Carolina

New HampshireMinnesota

IndianaDistrict Of Columbia

IowaTennessee

IllinoisKentuckyDelaware

OhioKansas

North CarolinaIdaho

New YorkVirginia

New MexicoMaryland

West VirginiaRhode IslandPennsylvania

CaliforniaWyoming

TexasNorth Dakota

OregonMaine

WashingtonMassachusetts

MichiganArizona

ColoradoConnecticutNew Jersey

MontanaUtah

VermontWisconsin

1940 1960 1980 2000

0

100

200

rate

Sarampo

Page 41: R para Data Science · 2019-11-25 · RparaDataScience

Reproduzindo o gráfico do WSJ - Sarampo

I E adicionar a linha referente ao ano que a vacina foi introduzida:

h <- h + geom_vline(xintercept=1963, col = "blue")h

Page 42: R para Data Science · 2019-11-25 · RparaDataScience

MississippiLouisiana

GeorgiaOklahoma

MissouriNevadaFlorida

NebraskaAlabamaArkansas

South DakotaSouth Carolina

New HampshireMinnesota

IndianaDistrict Of Columbia

IowaTennessee

IllinoisKentuckyDelaware

OhioKansas

North CarolinaIdaho

New YorkVirginia

New MexicoMaryland

West VirginiaRhode IslandPennsylvania

CaliforniaWyoming

TexasNorth Dakota

OregonMaine

WashingtonMassachusetts

MichiganArizona

ColoradoConnecticutNew Jersey

MontanaUtah

VermontWisconsin

1940 1960 1980 2000

0

100

200

rate

Sarampo

Page 43: R para Data Science · 2019-11-25 · RparaDataScience

O poder de uma boa visualização de dados

I ImpactoI Alto poder de detalhamentoI Consolida um grande número de dados numa só imagemI Facilita a comparaçãoI "Uma imagem vale mais do que mil palavras"

Page 44: R para Data Science · 2019-11-25 · RparaDataScience

Obrigada!

[email protected]