Google Trends no R


O pacote gtrendsR está passando por uma reformulação e parece que vai ficar ainda mais fácil analisar dados do Google Trends no R. A nova versão ainda não está no CRAN, mas já pode ser testada pelo github. Para instalar:

install.packages("devtools")
devtools::install_github('PMassicotte/gtrendsR', ref = 'new-api')

A grande novidade dessa versão é que não será mais preciso fazer login no google trends para ter acesso. Para brasileiros, outra novidade é que os bugs com problema de encoding parecem estar diminuindo.

Vejamos um exemplo simples, pegando dados das buscas pelos nomes dos candidatos nas eleições de 2014 no Brasil:

library(gtrendsR)
eleicoes2014 <- gtrends(c("Dilma Rousseff", "Aécio Neves", "Marina Silva"), geo = c("BR"), time = "2014-01-01 2014-12-31")
plot(eleicoes2014)

rplot01

Para ilustrar novamente, vejamos um exemplo mais recente — as buscas pelos nomes dos candidatos das eleições norte-americanas:

USelections2016 <- gtrends(c("Donald Trump", "Hillary Clinton"), geo = c("US"), time = "2016-01-01 2016-12-31")
plot(USelections2016)

rplot

Computer age statistical inference e The undoing project


Segue minha sugestão de leitura para as férias de final de ano: um livro de estatística e outro de psicologia/economia comportamental.

Para falar a verdade, ainda não os li, mas já recomendo.

O primeiro livro é do Michael Lewis, sem dúvida um dos melhores cronistas da atualidade (entre outros ótimos livros: Flash Boys, Moneyball, The Big Short). Lewis conta a história da vida e amizade dos dois psicólogos israelenses que começaram a revolução da economia comportamental:Daniel Kahneman e Amos Tversky. Para quem ainda não conhece o trabalho da dupla, vale a pena recomendar de novo o já clássico Thiking, Fast and Slow.

O segundo livro é o mais novo lançamento dos estatísticos Bradley Efron e Trevor Hastie. Os dois fazem um tour histórico e técnico pela revolução computacional dos últimos 60 anos da estatística. Para quem está começando na área, Efron é mais conhecido por seu trabalho no bootstrap; Trevor (junto com Tibshirani), por seus trabalhos em GAMs e modelos esparsos entre outros. Trevor também é co-autor dos já famosos Elements of Statistical Learning e sua recente versão baby An introduction to Statistical Learning — ambos com versões gratuitas na internet (aqui e aqui).

Personalizando seu gráfico do ggplot2 – Exports and Imports, William Playfair


O ggplot2 é muito bom para explorar visualmente, de forma dinâmica, sua base de dados.  Mas às vezes queremos editar cada detalhe do gráfico para uma publicação, é possível fazer isso?

Como, por exemplo, reproduzir o famoso gráfico de exportações e importações do William Playfair?

Playfair-bivariate-area-chart

Hoje resolvi testar o quão difícil seria gerar uma imagem parecida e, brincando um pouco com os parâmetros, cheguei na figura abaixo. É um pouco trabalhoso – pois temos que colocar cada texto separadamente – mas não é difícil, nem tão demorado assim.

playfair

Se você tiver um pouco mais de paciência para ajustar detalhes talvez consiga tornar a reprodução ainda mais fiel. E, caso o faça, favor compartilhar o código com todos por aqui!

***

Segue abaixo o código para gerar o gráfico acima. Os dados bem como o próprio código também estão no github.

 

# load packages -----------------------------------------------------------
library(reshape2)
library(ggplot2)

# prepare data for ggplot2 ------------------------------------------------
## data extracted from https://plot.ly/~MattSundquist/2404/exports-and-imports-to-and-from-denmark-norway-from-1700-to-1780/#plot
playfair <- readRDS("william_playfair.rds")

## create min for geom_ribbon
playfair$min <- with(playfair, pmin(exp, imp))
year <- playfair$year

## melt data
molten_data <- melt(playfair, id.vars = c("year", "min"))

# ggplot2 -----------------------------------------------------------------
ggplot(molten_data, aes(x = year, y = value)) +
geom_line(aes(col = variable), size = 1) +
geom_ribbon(aes(ymin = min, ymax = value, fill = variable), alpha = 0.3) +
scale_color_manual(values = c("darkred", "gold3"), guide = F) +
scale_fill_manual(values = c("#90752d", "#BB5766"), guide = F) +
theme_bw() +
annotate("text", x = year[5], y = 100000, label = "Line", angle = 25, size = 3, family = "Garamond") +
annotate("text", x = year[6] - 100, y = 104000, label = "of", angle = 0, size = 3, family = "Garamond") +
annotate("text", x = year[7], y = 101000, label = "Imports", angle = 340, size = 3, family = "Garamond") +
annotate("text", x = year[5] + 400, y = 73000, label = "Line", angle = 345, size = 3, family = "Garamond") +
annotate("text", x = year[6], y = 70000, label = "of", angle = 330, size = 3, family = "Garamond") +
annotate("text", x = year[7] - 200, y = 64000, label = "Exports", angle = 335, size = 3, family = "Garamond") +
annotate("text", x = year[8], y = 83000, label = "italic('BALANCE AGAINST')", angle = 0, family = "Garamond", parse = TRUE) +
annotate("text", x = year[16] + 400, y = 110000, label = "italic('BALANCE in\nFAVOUR of\nENGLAND')", angle = 0, family = "Garamond", parse = TRUE) +
annotate("text", x = year[16], y = 82000, label = "Imports", angle = 30, size = 3, family = "Garamond") +
annotate("text", x = year[14] + 200, y = 131000, label = "Exports", angle = 65, size = 3, family = "Garamond") +
ggtitle("Exports and Imports to and from DENMARK & NORWAY from 1700 to 1780") +
scale_x_date(breaks = seq(year[1], year[18], by = "10 years"),
labels = format(seq(year[1], year[18], by = "10 years"), "%Y")) +
scale_y_continuous(breaks = seq(0, 190e3, by = 10e3),
labels = seq(0, 190, by = 10)) +
theme(title = element_text(size = 8, face = 'bold', family = "Garamond"),
axis.title = element_blank(),
axis.text = element_text(family = "Garamond"),
panel.grid.minor = element_blank())

Analisando seu histórico de pesquisas do Google


Hoje descobri que é possível fazer o download de todo seu histórico de buscas no Google. TODO seu histórico de TUDO o que você busca no Google. Já que a opção está disponível, por que não dar uma olhada nos dados?

Por alguma razão meu histórico só vai até 2014 — acredito que tenha deletado o histórico anterior — então no meu caso temos apenas dois anos de dados para analisar (não vou considerar 2016 aqui pois o ano ainda não terminou). Além disso, esses dados certamente não contemplam tudo o que pesquisei na internet neste período, porque: (i) além do Google eu uso o DuckDuckGo; e, (ii) muitas vezes não estou logado quando faço pesquisas no próprio Google.

Feitas as ressalvas anteriores, a primeira coisa que tentei montar foi uma nuvem com as palavras mais utilizadas nas buscas. Em 2014 e 2015, segundo o registro do google, fiz aproximadamente 19 mil buscas, utilizando aproximadamente 69 mil palavras-chave. Após remover algumas “stopwords” em inglês e português — isto é, preposições, artigos etc — fiz uma nuvem com aquelas palavras que representam cerca de 20% da frequência total, e o resultado foi o seguinte:

Não tem muita surpresa aí. Previsivelmente, “R” foi a palavra chave mais utilizada, seguida de “package”, “statistics”, “Mac”, “Data”, “Los Angeles”, “UCLA” entre outras.

Após verificar as palavras mais utilizadas, procurei ver se encontrava alguns padrões nos meus hábitos de busca. Primeiramente, calculei a média de buscas por dia da semana. Nesses dois anos, as buscas parecem ter alcançado seu pico de segunda a quarta:

por_semana

Em seguida calculei a média por hora. Tirando a madrugada e o início da manhã, não parece existir diferença significativa entre os horários.  Há, contudo, um problema com essa informação: elas estão no horário brasileiro. Como estive fora do país em certas datas, isso distorce o horário original de algumas pesquisas — e ainda não descobri como consertar esse problema de maneira automática.

por_hora

Essa questão das viagens para fora do país suscitou outra pergunta: o total de buscas no Google Maps altera quando estou viajando? A princípio, diria que sim, e é isso o que o gráfico a seguir mostra, com algumas viagens destacadas:

Isto é, pelo menos neste caso, é muito fácil identificar viagens utilizando apenas a série histórica do total de buscas do Google Maps.

Para finalizar, montei um gráfico com a média de pesquisas por hora, separados por dia da semana e ano, mas não parece ter havido mudança relevante entre os padrões de 2014 e 2015.

hora_semana_ano
Quer analisar seus dados também?

Para fazer o download dos dados, basta seguir essas instruções. Os dados virão em um arquivo zip com vários arquivos no formato JSON. Para tratá-los, você pode se basear no script de R que coloquei aqui.

PS: É um pouco assustador perceber que, com análises bastante simples de dados de busca, já é possível inferir bastante coisa sobre os hábitos de uma pessoa.