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

Dados de pesquisas eleitorais de 1989 a 2015


Neale Ahmed El-Dash, do Polling Data (que já mencionamos aqui algumas vezes, como no modelo de impeachment), acabou de divulgar dados de pesquisas eleitorais brasileiras publicadas entre 1989 a 2015. Você pode acessar os dados clicando em  “Acervo/Past Elections”.

 

O que é overfitting, desenhado!


Nessas eleições, muitos louvaram o Rio Grande do Sul por nunca reeleger um governador por um segundo mandato. Várias explicações sociológicas foram dadas para o comportamento.   Entretanto, antes de inferir alguma coisa mais essencial deste padrão, vale a pena dar uma olhada nesta tirinha do xkcd para renovar o ceticismo:

13vdbE aguardemos por um N maior!

Via uma resposta do Cross Validated.

 

Indício de fraude nas eleições? Usando a Lei de Benford.


Compartilharam, recentemente, uma análise das eleições presidenciais utilizando a lei de Benford. Para quem não conhece, a lei de Benford é bastante utilizada na detecção de fraudes em uma gama de circunstâncias, como demonstrações contábeis e, inclusive, eleições. Para entender um pouco mais sobre o assunto, leia aqui (Lei de Benford), aqui (Lei de Benford – por que ela surge?) ou aqui (benford.analysis 0.1).

A análise tomou os votos da Dilma por município e extraiu os primeiros dígitos das observações. Por exemplo, se em um dado município foram contabilizados 1.529 votos para a candidata, o primeiro dígito é 1. Já se o número tivesse sido 987, o primeiro dígito é 9. Segundo a lei de Benford, deveríamos observar cerca de 30,1% dos municípios começando com o dígito 1; em seguida, 17,6% dos municípios com a totalização dos votos iniciada pelo número 2. E assim sucessivamente, como no gráfico a seguir:

benford_1_d

Se os números observados diferirem substancialmente do que é previsto pela lei, isso poderia ser um indício de manipulação dos dados ou de algum outro fato atípico. Mas, seria pertinente utilizar este instrumento para analisar fraudes em votos municipais? Para responder a essa pergunta, devemos responder, na verdade, outra: estes dados tenderiam a ter uma distribuição de Benford?

Em uma primeira aproximação, a resposta é sim. Dados de população municipal tendem a seguir a lei de Benford. Veja, por exemplo, a distribuição dos primeiros dígitos dos dados de população por município, no Brasil (estou utilizando o pacote de R benford.analysis; o gráfico em que você tem que prestar mais atenção é o primeiro, em que a linha pontilhada vermelha é o valor previsto e a barra azul é o valor observado):

pop_1_d

Ora, e como a população define o eleitorado, também é de se esperar que a lei tenda a aparecer nos números de eleitores. E, de fato, aparece:

eleitorado_1_D

E, por fim, como o eleitorado define o número de votos dos candidatos, também é natural se esperar que a distribuição apareça nesta situação. Em todos os casos vale lembrar que a lei de Benford nunca valerá exatamente, será apenas uma aproximação –  testes estatísticos formais tem que ser interpretados com cautela e não são muito úteis, a principal função da lei é identificar possíveis focos de observações que mereçam análise/auditoria mais aprofundada.

Voltando, portanto, à análise mencionada anteriormente, foram calculados os desvios dos valores observados em relação aos valores esperados e, com isso, a estatística de chi-quadrado. Mas isso foi feito para cada estado da federação:

Captura de Tela 2014-11-02 às 13.00.02

Note que alguns estados em que Dilma ganhou com bastante diferença como BA, PE ou PI tem grande  discrepância em relação ao esperado pela lei, e isso causou certa estranheza. Por que logo estes estados?

Contudo, ocorre que, apesar de a distribuição do número de eleitores (ou da população) por municípios ter um bom ajuste quando usamos os dados do Brasil inteiro, isso não precisa valer para cada estado separadamente. E de fato não vale. Para deixar mais claro, vejamos, abaixo, o grau de ajuste do número de eleitores e da população para cada estado separadamente, e comparemos isso com o ajuste do número de votos:

Captura de Tela 2014-11-02 às 13.45.53

Note que a Bahia tem um chi-quadrado alto para o número de votos (72.725), mas também já tinha esse valor alto para o número de eleitores (68.988) e população (60.712). Observa-se a mesma coisa com MG, PE, PI e RS, por exemplo. Na verdade, a correlação dessas três séries é bem alta. A correlação entre o Qui-Quadrado do número de votos e o Qui-Quadrado do Número de Eleitores é de 0.968.

Captura de Tela 2014-11-02 às 13.53.24

Deste modo, para o caso em questão,  as grandes discrepâncias entre a lei de Benford e o número de votos em alguns estados parecem decorrer, em grande medida, do próprio desvio já presente nas distribuições da população e do eleitorado.

Há mais coisas que podem ser investigadas nos dados, e acho que esse é um bom exemplo para explorar a lei de Benford na prática. Por exemplo, a lei de Benford não estipula somente uma distribuição para o primeiro dígito, mas sim para todos os dígitos significativos, então você poderia analisar os dois primeiros dígitos (dada a quantidade de observações, não acredito que dê para analisar os três primeiros). Ou, ainda, verificar se a divisão por regiões mais amplas do país tenderiam a seguir a lei para o eleitorado (e para o número de votos).

Para replicar os cálculos acima, você pode utilizar estes dados aqui (link) e o script de R a seguir:


# instale o pacote e carregue os dados
install.packages("benford.analysis")
library(benford.analysis)
load("benford_eleicoes.rda")

#### Geral ####
bfd_votos <- benford(votos_dilma$votos, number.of.digits=1)
plot(bfd_votos)

bfd_pop <- benford(dados_pop$pop, number.of.digits=1)
plot(bfd_pop)

bfd_eleitorado <- benford(eleitorado$eleitores, number.of.digits=1)
plot(bfd_eleitorado)

#### Por Estado ####
# separando os dados
split_votos_uf <- split(votos_dilma, votos_dilma$uf)
split_pop_uf <- split(dados_pop, dados_pop$uf)
split_eleitorado_uf <- split(eleitorado, eleitorado$uf)

# benford dos votos
bfd_votos_uf <- lapply(split_votos_uf, function(x) benford(x$votos, number.of.digits=1))
chi_votos_uf <- sapply(bfd_votos_uf, function(x) chisq(x)$stat)
chi_votos_uf

# plote um estado de exemplo
plot(bfd_votos_uf[["BA"]])

# benford da população
bfd_pop_uf <- lapply(split_pop_uf, function(x) benford(x$pop, number.of.digits=1))
chi_pop_uf <- sapply(bfd_pop_uf, function(x) chisq(x)$stat)
chi_pop_uf

# plote um estado de exemplo
plot(bfd_pop_uf[["BA"]])

# benford do eleitorado
bfd_eleitorado_uf <- lapply(split_eleitorado_uf, function(x) benford(x$eleitores, number.of.digits=1))
chi_eleitorado_uf <- sapply(bfd_eleitorado_uf, function(x) chisq(x)$stat)
chi_eleitorado_uf

# plote um estado de exemplo
plot(bfd_eleitorado_uf[["BA"]])

# comparando as estatísticas chi-quadrado
compara <- data.frame( Chi_Quadrado_Votos = chi_votos_uf,
                       Chi_Quadrado_Número_de_Eleitores = chi_eleitorado_uf,
                       Chi_Quadrado_População = chi_pop_uf)
row.names(compara) <- gsub("([A-Z]{2}).*", "\\1", row.names(compara))
compara

# correlações
cor(compara)

Para quem foram os votos da Marina?


A pergunta que queria fazer era: quantos votos da Marina foram para Aécio ou para Dilma? Para responder isso, precisaria de alguns dados que não tenho e não vou ter tempo de buscar (e que talvez nem estejam disponíveis).

Mas, na verdade, vou fazer outras perguntas simples que talvez sejam tão interessantes quanto e, provavelmente, sejam uma aproximação razoável:  (i) Os votos válidos para Marina explicam de maneira diferente a variação dos votos válidos para Aécio ou para Dilma? (ii) Isso variou entre os estados da federação?

Resumindo, as respostas são:

(i) sim, cada 1 ponto percentual de voto para Marina no primeiro turno previu, na média, 0.56 pp a mais para Aécio e 0.44 pp a mais para Dilma; e,

(ii) sim, a relação foi diferente para cada estado. Entre alguns exemplos, temos que em São Paulo, Rio Grande do Sul e Alagoas a relação pareceu mais pró Aécio;  já em Minas Gerais e Bahia os votos em Marina explicaram pouco da variação. E em Pernambuco ou na Paraíba houve uma ligeira “conversão” pró Dilma.

***

A regressão geral.

Dependent variable:
Variação Aécio Variação Dilma
(1) (2)
Votos Marina (1 turno) 0.558*** 0.442***
(0.005) (0.005)
Constant 1.287*** -1.287***
(0.076) (0.076)
Observations 5,152 5,152
R2 0.732 0.631
Adjusted R2 0.732 0.631
Residual Std. Error (df = 5150) 2.987 2.987
F Statistic (df = 1; 5150) 14,087.540*** 8,817.183***
Note: *p<0.1; **p<0.05; ***p<0.01

E os gráficos gerais e por UF (no gráfico temos o “excesso” de votos recebidos além do que seria esperado se os votos válidos de Marina tivessem sido distribuídos 50-50).

Aécio (Geral)

Aecio_Marina

Aécio (Por UF)

estados_a_m

Dilma (Geral)

Dilma_Marina

Dilma (Por UF)

estados_d_m

Votos e Bolsa Família: segundo turno!


Tem gente que reclama das urnas eletrônicas, com razão. Mas de uma coisa os pesquisadores não podem reclamar: nessas eleições, os dados ficam disponíveis quase que instantaneamente. E, com os dados do segundo turno em mãos, voltemos àquela relação que sempre gera polêmica –  percentual de votos versus percentual de pessoas beneficiadas pelo bolsa família (BF) por município (veja o post do primeiro turno aqui).

Por agora, e pela hora, vamos tentar responder apenas duas perguntas simples: (i) a relação entre votos e BF se manteve? (ii) há correlação entre o BF e a variação dos votos dos candidatos entre o primeiro e segundo turnos?

Quanto à primeira pergunta, a resposta é positiva, tanto no geral:

seg

Quanto por UF:

estados

 

Já com relação à segunda pergunta, o BF não parece estar correlacionado com as mudanças de votos por municípios:
primeiro_segundo

PS: vale lembrar que este blog frisa, constantemente, que correlação não implica em causalidade. Sobre este ponto, leia estes outros posts aqui.

Pesquisas eleitorais: Veritá ou DataFolha? Sobre metodologia e margens de erro.


As eleições têm trazido ao público um debate importante sobre estatística e incerteza. Em um dia, o Datafolha indica 52% dos votos para a Dilma. No dia seguinte, o Instituto Veritá contabiliza 53% do votos para Aécio. Como conciliar isso com as pequenas margens de erro sugeridas pelas pesquisas?

O problema é que, em geral, as margens de erro das pesquisas são divulgadas como se tivessem sido feitas por amostragem aleatória simples.  Mas, na verdade, as pesquisas têm um processo de amostragem mais complexo, sujeito a outros tipos de erros. Um texto legal sobre o assunto é este, do Rogério.

E para complicar ainda mais, os institutos usam métodos diferentes. Por exemplo, olhando as últimas duas pesquisas presidenciais, aparentemente a pesquisa do Instituto Veritá foi uma Amostragem Probabilística por Cotas com entrevistas por domicílios (e também com o uso de ponto de fluxo onde a entrevista domiciliar não fosse possível – vide aqui); e, a do DataFolha, uma Amostragem por Cotas com entrevistas por ponto de fluxo (vide aqui).

Esses métodos, apesar de terem nomes semelhantes, segundo Neale El-Dash não são tão semelhantes assim:

Anteriormente já escrevi sobre a diferença entre as pesquisas denominadas “Amostragem por Cotas” (AC) e as denominadas “Amostragem Probabilística por Cotas” (APC). Existe apenas uma semelhança entre as duas metodologias: ambas têm a palavra “Cotas” no nome, indicando que não são probabilísticas. Isso não quer dizer que sejam iguais. Pelo contrário, existem muitas diferenças entre elas, vou mencionar algumas abaixo: 

1-   Na APC as entrevistas são domiciliares. Na AC as entrevistas são realizadas em pontos de fluxo. Como o Carvalho diz em seu texto: “os pontos de concentração podem ser shoppings, esquinas de ruas movimentadas, ou seja, lugares onde é fácil preencher as cotas”. 

2-  Na APC existe muito controle sobre o entrevistador e a sua liberdade de escolha dos entrevistados. Ele tem que percorrer um trajeto muito restrito com critérios claros e objetivos.  Na AC, o entrevistador escolhe quem quiser, contanto que esteja nas cotas.  

3- Na APC, existe um controle geográfico excelente, equivalente ao que se poderia obter em qualquer amostra probabilística. Na AC, as pesquisas acabam tendo uma aglomeração geográfica muito maior. 

4- Na APC o objetivo das cotas é controlar a probabilidade de resposta das pessoas. Na AC, o objetivo é reproduzir características demográficas da população alvo.

(…) as metodologias (e as criticas) são muito diferentes. Mais importante, existe um efeito negativo importante na qualidade da AC pelo fato das entrevistas serem realizadas em pontos de fluxo. Apenas para exemplificar, no artigo [Ref2] sobre AC, os autores dizem que os maiores vícios encontrados na comparação foram: 1) A distribuição geográfica da amostragem por cotas (AC) era mais aglomerada, 2) na amostragem probabilística (aquela da prática, com voltas e substituições) havia mais não-resposta na variável de renda e 3) foram observadas mais pessoas na categoria sem renda/com renda baixa e renda alta do que na AC.

(…)

Meu ponto é: outras características metodológicas, além das cotas, também são claramente responsáveis por vícios observados na AC. Pra mim, pesquisas em ponto de fluxo são um sinal de baixa qualidade da pesquisa (potencialmente). Muito mais do que o fato de usar cotas. Cotas podem ser bem efetivas, principalmente se forem associadas com variáveis claramente relacionadas com a probabilidades de resposta de uma pessoa. Também é relevante em qual estágio se utilizam cotas. Por isso é importante distinguir entre AC e APC.

Outro problema é que o documento divulgado no TSE é muitas vezes pouco claro com relação a certos detalhes da metodologia. Se você se interessa pelo tema, deixo também os links para outros dois posts interessantes do Neale: este e este.

Votos e Bolsa Família: correlação se mantém quando controlada por estado?


Fábio Vasconcellos e Daniel Lima fizeram alguns gráficos interessantes sobre a correlação de algumas variáveis socioeconômicas e o percentual de votos recebidos por cada candidato. Um deles – e que sempre suscita polêmica – é a relação entre percentual de votos versus percentual de pessoas beneficiadas pelo bolsa família por município. Segue uma reprodução do gráfico abaixo, feita no R com o ggplot2.

geral

Entretanto, esta relação me gerou a seguinte dúvida: será que a correlação se mantém dentro de cada UF? Por exemplo, Aécio ganhou em SP, SC e MT. Nesses estados, também houve correlação negativa do BF para o candidato tucano?

Aparentemente, sim, conforme pode ser visto no gráfico abaixo. E a separação por estado também indica que a correlação do BF com votos para Marina foi negativa em grande parte das UF’s. Um estado que chama a atenção é Minas Gerais, em que estas relações se parecem bem acentuadas.

estados

PS: vale lembrar que este blog frisa, constantemente, que correlação não implica em causalidade. Sobre este ponto, leia estes outros posts aqui.

PS2: os dados em formato rds (do R) podem ser baixados aqui.

Previsões do primeiro turno: Google Trends (e Vidente Carlinhos)?


Os resultados do primeiro turno saíram e, mesmo com as evidências de ontem que apontavam para uma alta de Aécio Neves, surpreenderam: o candidato mineiro amealhou quase 34% dos votos, quando há pouco se estimava que conseguiria 15%! Os modelos de previsão, apesar de favorecerem Aécio quando atualizados com as pesquisas de sábado, não conseguiram capturar a magnitude da mudança, apontando para estimativas entre  21 a 26%.

Faz parte. Prever em meio a tanta incerteza (e pesquisas de metodologia duvidosa) é uma tarefa ingrata.

Por outro lado, o Google Trends (depois de corrigido com a dica do Gabriel Ferreira – valeu!) trouxe um indício bastante forte da subida de Aécio. E com uma coincidência aritmética, digamos, “mística”, quase ao estilo Vidente Carlinhos.  Uma regra de 3 com os dados do trends de sexta, considerando 40% para Dilma como base, trazia valores estimados de 35% para Aécio e 21% para Marina. Quase cravado.

Evidentemente, isso não passou de sorte, pois utilizando os dados disponíveis agora você estimaria que Aécio ultrapassou Dilma. Mas tampouco é somente algo curioso. Isto mostra o potencial do Google Trends no auxílio do “nowcasting”  das eleições, complementando os resultados das pesquisas para entender as tendências do eleitorado. O grande desafio aqui é separar o sinal do ruído, tanto das pesquisas, quanto das redes sociais e dos mecanismos de buscas, além de saber como juntar essas evidências de forma complementar e coerente.

No caso do Google, certamente o teor das buscas importa, lembre do caso do Pastor Everaldo.  E as buscas relacionadas que mais estavam crescendo eram aquelas que diziam respeito aos números dos candidatos. Ou seja, tinham relação direta com intenção de voto.

Aecio_numeroDepois dessa, é capaz de muita gente ficar de olho no Trends durante o segundo turno. Só espero que o Google tenha bons algoritmos para impedir que os bots dos partidos manipulem o indicador. Ou ainda, será que a relação continuará valendo, uma vez que as pessoas já tenham tido tempo de decorar os números de seus candidatos?