Trabalhos com Dados Públicos

DADOS PÚBLICOS

Uma das melhores bases de dados reais e públicos para se trabalhar com dados sociais no Brasil tem sido a do Tribunal Superior Eleitoral (TSE).

A seguir, relatamos um trabalho de pesquisa executado com esta base dados afim de usar algumas técnicas estatísticas para verificar indícios de possíveis fraudes nas eleições presidenciais brasileiras de 2002 a 2018. O trabalho completo, encontra-se em SILVA, 2020.


“A democracia surgiu quando, devido ao fato de que todos são iguais, em certo sentido, acreditou-se que todos fossem absolutamente iguais entre si” – Aristóteles (384-322 a.C)

Desde seu surgimento, a palavra “democracia” tem sido crescentemente usada, assim como muitos esforços para implantá-la, como IDEA (2017), DI(2018) e IDW(2018) com o objetivo de dar a todos os cidadãos condições igualitárias de uma vida justa. Quando Aristóteles, vendo a recém criada democracia já se mostrava incrédulo, é razoável que Churchill, mais de 2260 anos depois, ainda lamentasse não haver nada melhor.

“A democracia é a pior forma de governo, exceto todas as outras formas que foram tentadas de tempos em tempos” - CHURCHILL(1947).

O Brasil vive hoje em uma democracia em evolução, com vários melhoramentos, mas também desafios a vencer. Mais do que nunca a democracia encontra-se em destaque na opinião pública, e presente em muito do que se faz no país, incentivada pela história recente (BRASIL ID, 2018), possibilitando uma retomada da atenção dos cidadãos ao que acontece no cenário político, levando-os a repensar o sentido de cada fato ou ação que remete ao processo democrático.

A democracia surgiu em Atenas, na Grécia, no período histórico intitulado “clássico” pela história, entre os anos de 508 a 322 antes de Cristo. Neste período o voto, instrumento de participação democrática, era proferido pessoalmente numa assembleia, inicialmente, diretamente pelo cidadão participante e posteriormente aperfeiçoado com práticas usadas até hoje, como voto escrito, conselhos, representantes e corpo eleitoral (TIERNO, 2018), o que constitui um processo progressivamente inovador.

Com o crescente aprimoramento da democracia e seus processos, as opiniões tornaram-se opções discretas e assim os fatos viraram números, criando um cenário complexo e desconfiável por natureza. Não era de se esperar algo diferente quando se trata de normatizar processos de escolha de governantes, e estes por sua vez podem mudar de forma tão profunda uma nação.

Desde a primeira eleição no Brasil, em 1821, ainda para eleger deputados da corte de Lisboa, passando pela primeira eleição direta em 1881 o sistema eleitoral brasileiro tem se desenvolvido de forma bastante irregular, numa instabilidade constante, em que ora se dava por processos duvidosos, e ora por processos que tendem a legitimidade da eleição. (BRASIL, 2014)

Uma verdadeira “montanha russa” de sobe e desce no nível de democracia no Brasil foi descrita por BIZZARRO (2017), por vezes descrito como uma espiral onde aconteceram grandes mudanças; e a cada mudança grande parte do processo anterior é substituído. Este cenário instável é demonstrado ainda pior ao se olhar para outros estudos como ARANHA (2018 e 2019) e JUSBRASIL (2017).

Nos últimos anos, pesquisadores tem utilizado conceitos e ferramentas da estatística na tentativa de entender fenômenos coletivos emergentes das interações individuais (como unidades elementares) em estruturas sociais. São exemplos de estudos de fenômenos eleitorais: hierarquia no processo de candidatura (MANTOVANI et al., 2011), análises de resultados de eleições (MANTOVANI, 2013; COSTA FILHO, 1999; COSTA FILHO, 2002; LYRA, 2003; ARARIPE, 2006; ARAÚJO, 2010; TRAVIESO, 2006; FORTUNATO, 2006; ARARIPE, 2009; CHATTERJEE, 2013), e diferença de gênero em processo de candidatura (CARDOSO, 2020).

Este contexto intrincado remete ao ponto de vista dos sistemas complexos, que são difíceis de modelar usando a abordagem de sucessivos refinamentos à procura de elementos fundamentais. A abordagem de um sistema com o entendimento apropriado que é um sistema complexo permite observar propriedades quando olhado para o todo o que não é possível se olhado por partes. Assim, os estudos de objetos com características similares a estes sistemas permitem definir padrões e propriedades gerais presentes em classes de diferentes sistemas (MACAU, 2002). Neste caso, o comportamento dos eleitores nas urnas frente a modelos matemáticos e estatísticos de propriedades conhecidas que indiquem possíveis conclusões acerca dos pleitos eleitorais, seja por regularidades ou irregularidades.

A busca constante pela eleição sem fraudes persiste, não só no Brasil, mas em todo mundo. Em alguns países, pesquisadores (KLIMEK, 2012, BORGUESI, 2012, JIMENEZ, 2017 e KOBAK 2012) propuseram e utilizaram alguns métodos estatísticos para verificar se há indicadores de fraudes em pleitos eleitorais; ou até mesmo concluir que os padrões são bastante adversos. Em alguns casos os indicativos foram contundentes.

No entanto, olhando a história das eleições do Brasil (BRASIL, 2014), nota-se que, conforme se tentava implantar um processo onde o cidadão realmente faria valer seu voto, surgiam várias formas de fraudes que comprometiam parcialmente ou completamente a eleição. Algumas formas de fraude duraram décadas.

A urna eletrônica (BRASIL, VA, 2017), cujas primeiras previsões datam de 1932, e que foi utilizada somente em 1996 numa eleição municipal, trouxe a necessidade de haver uma base de dados unificada, que por sua vez se propôs a ser fidedigna com a votação. Mas para tanto, foi necessário o cadastramento de candidatos e (em 1985) dos quase 70 milhões de eleitores. Assim, o Brasil dá um passo relevante no sentido de expurgar de vez as fraudes (tanto por parte dos eleitores como por parte dos escrutinadores): a informatização do processo. A informatização foi um feito que possibilita o funcionamento da urna eletrônica brasileira e também evita fraudes como votar em mais de uma seção. Também é o que nos permite fazer esta pesquisa sobre esta grande base de dados.

Optamos por estudar as últimas eleições do Brasil porque os dados disponíveis no Repositório de Dados do Tribunal Superior Eleitoral (TSE) (BRASIL, BD, 2019) encontram-se completos e organizados (consistentes). Assim, foi estudado a polêmica que existe diante do nosso sistema eleitoral, e investigar o comportamento dos eleitores nas urnas através dos dados de votação.

Motivou este estudo algumas questões, como: e que adianta o processo eleitoral brasileiro usar de estratégias, sistemas e equipamentos sui generis (inclusive exportados para vários países do mundo), se ao término ainda pode-se observar indicativos de fraude? A que servem grandes discursos ideológicos dos candidatos e representantes do TSE, se por fim, prevalecem no poder políticos que usam de métodos fortuitos para corromper o sistema eleitoral que tanto zela pela verdade das urnas?

Observando alguns trabalhos de pesquisadores como KOBAK (2012) KLIMEK (2012), BORGUESI (2012) e JIMENEZ (2017) nos questionamos se seria possível aplicar as mesmas técnicas e ferramentas estatísticas para observar as eleições no Brasil através dos dados do TSE.

BORGUESI (2010) fez um estudo estatístico das eleições francesas no período de 1992 a 2010, encontrando a distribuição das taxas de comparecimento às urnas estáveis através dos anos bem como uma correlação das taxas de comparecimento ou fração de votos no vencedor decaindo logaritmicamente com a distância entre as cidades.

KOBAK (2012) e KLIMEK (2012) encontraram um resultado estatisticamente anômalo em duas eleições Russas de 2011 e 2012, que favoreceram o presidente eleito Vladmir Putin.

BORGUESI (2012) mostrou a correlação entre abstenções, votos brancos e nulos em países com votação não obrigatória, destacando um comportamento padrão existente.

JIMENEZ (2017) analisou 21 eleições em 10 países e encontrou anomalias estatísticas significativas compatível com fraude de eleitores na Rússia de 2007 a 2011, na Venezuela de 2006 a 2013 e em Uganda em 2011; observando os dados de pequenas seções de votação, e desenvolveu um método estatístico para testar e quantificar até que ponto os resultados de uma determinada eleição exibe traços de manipulação do eleitor.

A primeira dificuldade foi fazer com que a base de dados do TSE fosse disposta de tal forma que pudéssemos observar os dados de cada seção separadamente ou em agrupamentos interessantes.

Para isto foi necessário entender a organização dos dados elaborada pelos analistas do TSE e processar os dados de forma que tivéssemos um registro (tupla) de dados para cada urna em cada eleição, acrescido da informação da região geográfica do país conforme a UF da seção.

Foram usadas as linguagens de programação R e Python para chegar a uma organização conforme nossos interesses.

O TRABALHO COM A BASE DE DADOS DO TSE

O código em R abaixo prepara a base de dados do TSE e forma a transformar 10 arquivos selecionados em um único arquivo onde cada registro (ou linha de texto) contenha todos os dados úteis de cada seção de votação, incluindo os votos no candidato vencedor e os votos no segundo mais votado, no turno que foi decisivo.

Estes 10 arquivos do repositório de dados do TSE foram escolhidos porque contêm os dados dos pleitos eleitorais dos anos 2002, 2006, 2010, 2014 e 2018. Existem 2 tipos de arquivos para cada ano, com a seguinte organização: Votação por Seção Eleitoral (tipo 1) e o Detalhe da Apuracção por Seção Eleitoral (tipo 2).

Nestes arquivos, o “AAAA” incluso no nome são ano da eleição. Os arquivos nomeados de “votacao_secao_ AAAA_BR.txt” constituem o tipo 1 e contêm os dados totais de comparecimento em cada seção, como quantidade de votos válidos (nulos e brancos são registrados como candidatos) e algumas poucas informações da seção. Já os arquivos “detalhe_votacao_secao_AAAA_BR.txt” constituem o tipo 2 e contêm a totalização de votos válidos para cada candidato, inválidos e totais da urna; mas ainda um registro para cada candidato, um para votos em branco e outros para votos nulos.

Houve ainda a necessidade se incluir uma coluna com a região geográfica do Brasil em que ocorreu cada seção de votação, conforme a sigla do estado. Para isto, o código em R demorava mais de 2 horas e terminava de forma inconclusiva, causando uma parada anormal do programa. Em Python, o mesmo código levou cerca de 2 minutos concluindo o processo com sucesso.

Com a região geográfica do país em cada registro de seção de votação, podemos verificar se há correlações de dados específicas entre urnas de uma mesma região ou mesmo de regiões diferentes, supondo possíveis comportamentos característicos.

TRECHO DE CÓDIGO EM LINGUAGEM R

iPleito <- 0for (iPleito in 1:7){ esteano<-resultpleitos[iPleito, ] votc1 <- vot.det %>% filter(ANO_ELEICAO==esteano$ANO, NR_TURNO==esteano$TURNO, NR_VOTAVEL==esteano$PRIMEIRO) %>% group_by(ANO_ELEICAO,CD_MUNICIPIO,NR_ZONA,NR_SECAO) votc2 <- vot.det %>% filter(ANO_ELEICAO==esteano$ANO, NR_TURNO==esteano$TURNO, NR_VOTAVEL==esteano$SEGUNDO) %>% group_by(ANO_ELEICAO,CD_MUNICIPIO,NR_ZONA,NR_SECAO) votc1$QT_VOTO1<-votc1$QT_VOTOS votc1$QT_VOTO2<-0 votc2$QT_VOTO1<-0 votc2$QT_VOTO2<-votc2$QT_VOTOS votacao <- rbind(votc2,votc1) sqlQuery <- paste0( "SELECT ", "ANO_ELEICAO,NR_TURNO,SG_UF,CD_MUNICIPIO,NM_MUNICIPIO,NR_ZONA,", "NR_SECAO,QT_APTOS,QT_COMPARECIMENTO,QT_ABSTENCOES,", "QT_VOTOS_NOMINAIS,QT_VOTOS_BRANCOS,QT_VOTOS_NULOS,", "sum(QT_VOTO1),sum(QT_VOTO2) ", "from votacao ", "where ANO_ELEICAO = ",esteano$ANO," ", "group by ANO_ELEICAO, CD_MUNICIPIO, NM_MUNICIPIO, NR_ZONA, NR_SECAO") secao <- sqldf(sqlQuery) names(secao)<-c( "ANO_ELEICAO","NR_TURNO","SG_UF", "CD_MUNICIPIO","NM_MUNICIPIO","NR_ZONA", "NR_SECAO","QT_APTOS","QT_COMPARECIMENTO", "QT_ABSTENCOES","QT_VOTOS_NOMINAIS","QT_VOTOS_BRANCOS", "QT_VOTOS_NULOS","QT_VOTO1","QT_VOTO2") secao$QT_VOTOS_VALIDOS<-secao$QT_VOTOS_NOMINAIS secao$VL_LN_VOTOS_VALIDOS<-ln(secao$QT_VOTOS_VALIDOS) secao$VL_LN_COMPARECIMENTO<-ln(secao$QT_COMPARECIMENTO) secao$VL_LN_APTOS<-ln(secao$QT_APTOS) todassecoes <-rbind(todassecoes, secao)}write.table(todassecoes,"TodosAnos.csv", append = FALSE, sep = ";",,row.names = FALSE, col.names = TRUE)

TRECHO DE CÓDIGO EM PYTHON

arquivo_entrada = open('TodosAnos.x.csv','r')arquivo_saida = open('TodosAnos.y.csv','w')x=0ANO_ELEICAO = 0NR_TURNO = 0SG_UF = ""SG_REGIAO = ""NM_UF = ""NM_REGIAO = ""for linha in arquivo_entrada: x=x+1 if (x==1): linha = linha[:-1] + ';"SG_REGIAO";"NM_REGIAO"' + linha[-1:] else: ANO_ELEICAO, NR_TURNO, SG_UF, RESTO = linha.split(";",3) SG_UF=SG_UF[1:-1] if (SG_UF=="AC"): SG_REGIAO = "N" NM_UF = "Acre" NM_REGIAO = "Norte" if (SG_UF=="AL"): SG_REGIAO = "NE" NM_UF = "Alagoas" NM_REGIAO = "Nordeste" if (SG_UF=="AM"): SG_REGIAO = "N" NM_UF = "Amazonas" NM_REGIAO = "Norte" if (SG_UF=="AP"): SG_REGIAO = "N" NM_UF = "Amapá" NM_REGIAO = "Norte" if (SG_UF=="BA"): SG_REGIAO = "NE" NM_UF = "Bahia" NM_REGIAO = "Nordeste" if (SG_UF=="CE"): SG_REGIAO = "NE" NM_UF = "Ceará" NM_REGIAO = "Nordeste" if (SG_UF=="DF"): SG_REGIAO = "CO" NM_UF = "Distrito Federal" NM_REGIAO = "Centro Oeste" if (SG_UF=="ES"): SG_REGIAO = "SE" NM_UF = "Espírito Santo" NM_REGIAO = "Sudeste" if (SG_UF=="GO"): SG_REGIAO = "CO" NM_UF = "Goiás" NM_REGIAO = "Centro Oeste" if (SG_UF=="MA"): SG_REGIAO = "NE" NM_UF = "Maranhão" NM_REGIAO = "Nordeste" if (SG_UF=="MG"): SG_REGIAO = "SE" NM_UF = "Minas Gerais" NM_REGIAO = "Sudeste" if (SG_UF=="MS"): SG_REGIAO = "CO" NM_UF = "Mato Grosso do Sul" NM_REGIAO = "Centro Oeste" if (SG_UF=="MT"): SG_REGIAO = "CO" NM_UF = "Mato Grosso" NM_REGIAO = "Centro Oeste" if (SG_UF=="PA"): SG_REGIAO = "N" NM_UF = "Pará" NM_REGIAO = "Norte" if (SG_UF=="PB"): SG_REGIAO = "NE" NM_UF = "Paraíba" NM_REGIAO = "Nordeste" if (SG_UF=="PE"): SG_REGIAO = "NE" NM_UF = "Pernambuco" NM_REGIAO = "Nordeste" if (SG_UF=="PI"): SG_REGIAO = "NE" NM_UF = "Piauí" NM_REGIAO = "Nordeste" if (SG_UF=="PR"): SG_REGIAO = "S" NM_UF = "Paraná" NM_REGIAO = "Sul" if (SG_UF=="RJ"): SG_REGIAO = "SE" NM_UF = "Rio de Janeiro" NM_REGIAO = "Sudeste" if (SG_UF=="RN"): SG_REGIAO = "NE" NM_UF = "Rio Grande do Norte" NM_REGIAO = "Nordeste" if (SG_UF=="RO"): SG_REGIAO = "CO" NM_UF = "Rondônia" NM_REGIAO = "Centro Oeste" if (SG_UF=="RR"): SG_REGIAO = "N" NM_UF = "Roraima" NM_REGIAO = "Norte" if (SG_UF=="RS"): SG_REGIAO = "S" NM_UF = "Rio Grande do Sul" NM_REGIAO = "Sul" if (SG_UF=="SC"): SG_REGIAO = "S" NM_UF = "Santa Catarina" NM_REGIAO = "Sul" if (SG_UF=="SE"): SG_REGIAO = "NE" NM_UF = "Sergipe" NM_REGIAO = "Nordeste" if (SG_UF=="ZZ"): SG_REGIAO = "EX" NM_UF = "Outro País" NM_REGIAO = "Outro País" linha = linha[:-1] + ';"' + SG_REGIAO + '";"' + NM_REGIAO + '"' + linha[-1:] arquivo_saida.write(linha) if (x % 1000 == 0): print(x," linhas processadas")arquivo_entrada.close()arquivo_saida.close()print("Total de linhas processadas: ", x)

GRÁFICOS GERADOS NA LINGUAGEM R

A partir do repositório de dados organizados, foi possível produzir os seguintes gráficos utilizando a linguagem R:

Fração de Comparecimento por votos no vencedor comparado à curva normal com resultado do teste Kolmogorov-Smirnov (KS)


Correlações e Busca de Conhecimento

Buscar conhecimento nos dados não é uma tarefa nova. No intuito de mostrar algo numa massa de dados que aparentemente é aleatória a matemática "curvou-se" à uma nova ciência em sua vertente do estudo de probabilidades: a estatística.

A estatística é uma ciência bastante madura e consolidada, em especial em suas aplicações às ciências sociais, como bem mostra Piovani (2013).

Na incansável busca por algum conhecimento adicional, sobre uma massa de dados, a estatística mostra-se bastante aplicável, trazendo várias ferramentas que podem levar a grandes achados; em especial uma chamada correlação.

Correlação é uma propriedade que pode demonstrar a proximidade de uma variável com outra em uma massa dados, ou mais computacionamente falando, de um campo com outro em um conjunto de registros, sendo mais confiável quando maior for a quantidade de dados amostrais.

Com isto, na base de dados eleitorais do TSE, foi possível verificar a existência de correlações em um produto cartesiano com todas as variáveis, já que são apenas 9; ou seja, comparando todas com todas.

Nos gráficos abaixo, verificamos que não houve qualquer correlação inesperada entre as variáveis. Nestes resultados, quanto mais próximo de um for o cruzamento comparativo entre as variáveis, mais a correlação é forte (tanto que a diagonal, mostrando cada variável consigo mesma, é sempre um).

Houve ainda a esperança de que uma correlação se apresentasse nas urnas em determinada região geográfica do país. Assim, foram gerados tabelas separadas por região, mas mesmo assim não houve descoberta de conhecimento adicional através de alguma correlação surpreendente.

Correlações nas variáveis de 2002 - Região Centro Oeste

Correlações nas variáveis de 2002 - Região Centro Norte


Correlaçõesnas variáveis de 2002 - Região Nordeste


Correlaçõesnas variáveis de 2002 - Região Sudeste

Correlaçõesnas variáveis de 2002 - Região Sul

Gráficos dos Municípios

O Brasil possui, atualmente 5.549 municípios. Em 2018, em cada município, houveram uma quantidade razoável de seções (urnas), desde Araguainha (MT) com 3 urnas até São Paulo (SP) com 24.776 urnas.

Em aproximadamente duas horas, o programa em R abaixo, gerou 11.098 imagens, sendo duas para cada município (uma para o candidato vencedor e outra para o perdedor), com um espectro de concentração mais avermelhado para áreas mais concentradas de urnas onde o eixo X representa o percentual de comparecimento dos eleitores listados para votar em cada urna e o eixo Y representa o percentual de votos no vencedor, ou no perdedor.

Nestes gráficos, procuramos algum município onde haja apenas uma concentração no canto superior direito para o vencedor, ou mesmo para o perdedor, de forma a ser semanticamente parecida às imagens geradas por KOBAK (2012) e KLIMEK (2012), mas nenhuma com este aspecto foi encontrada.

Todas as imagens foram geradas estão disponíveis nesta pasta compartilhada.

Abaixo os gráficos de algumas capitais, onde a amostra se mostra mais significativa, para o candidato vencedor.

Código em R que gerou os gráficos dos municípios


ptm <- proc.time() # inicia contagem de tempo

library(dplyr)

library(plyr)

library(sqldf)

library(ggplot2)

library(gridExtra)

library(grDevices)

library(ggthemes)

library(gtable)

library(foreach)

library(MASS)

library(RColorBrewer)

library(png)

library(DataCombine)

setwd("Textos")

rf <- colorRampPalette(rev(brewer.pal(11,'Spectral')))

r <- rf(32)

ListaNomeArquivos <- dir( pattern = "csv", all.files = TRUE, full.names = TRUE, ignore.case = TRUE, recursive = FALSE,)

TamanhoListaArquivos <- length(ListaNomeArquivos )

for (i in 1:5708){

print(ListaNomeArquivos[i])

municipio <- NULL

setwd("Textos")

nmArqMun <- ListaNomeArquivos[i]

sgUF<-substring(nmArqMun,3,4)

nmMunicipio<-substring(nmArqMun,6,nchar(nmArqMun)-4)

print(sgUF)

print(nmMunicipio)

municipio<-read.table(nmArqMun, sep=";", head=TRUE)

setwd("Graficos")

municipio1<-municipio[municipio$CD_CARGO==1 & municipio$NR_VOTAVEL==17,] # 1º colocado

municipio2<-municipio[municipio$CD_CARGO==1 & municipio$NR_VOTAVEL==13,] # 2º colocado

nmArqSpectral1 = NULL

nmArqSpectral1 = NULL

nmArqSpectral1 = paste0(sgUF,"-",nmMunicipio,"-1",".png")

nmArqSpectral2 = paste0(sgUF,"-",nmMunicipio,"-2",".png")

k.mun1 <- kde2d(municipio1$FRACAO_COMP, municipio1$FRACAO_VOTO, n=200)

k.mun2 <- kde2d(municipio2$FRACAO_COMP, municipio2$FRACAO_VOTO, n=200)

nmLocal <- paste0(nmMunicipio," - ",sgUF," - 1º")

image(k.mun1, col=r, axes = TRUE, main = nmLocal, xlab = "% Comparecimento", ylab = "% Votos no Vencedor")

contour(k.mun1, add = TRUE, drawlabels = FALSE)

savePlot(nmArqSpectral1 ,type="png")

nmLocal <- paste0(nmMunicipio," - ",sgUF," - 2º")

image(k.mun2, col=r, axes = TRUE, main = nmLocal, xlab = "% Comparecimento", ylab = "% Votos no Perdedor")

contour(k.mun2, add = TRUE, drawlabels = FALSE)

savePlot(nmArqSpectral2 ,type="png")

}

proc.time() - ptm # encerra a contagem de tempo

Referências


BORGUESI, C.; Bouchaud, J.-P. Spatial correlations in vote statistics: a diffusive field model for decision-making. The European Physical Journal B. EDP Sciences, Societ`a Italiana di Fisica, Springer-Verlag, 2010.

BORGHESI, Christian; Chiche, Jean; Nadal, Jean-Pierre. Between order and disorder: a ‘weak law’ on recent electoral behavior among urban voters? \textbf{PLoS ONE}, v. 7 n. 7, 2012.

JIMENEZ, Raul; Hidalgo, Manuel; Klimek, Peter. Testing for voter rigging in small polling stations. Science Advances. v.3 n.6, 2017. Disponível em: \textless http://advances.sciencemag.org/content/3/6/e1602363\textgreater. Acesso em: 5 jul, 2017.

KLIMEK, Peter; Yegorov, Yuri; Hanel, Rudolf; Thurner, Stefan. Statistical detection of systematic election irregularities. \textbf{PNAS}, v. 109, n. 41, p. 16469-16473, out. 2012. Disponível em: \textless https://doi.org/10.1073/pnas.1210722109\textgreater. Acesso em: 28 jun. 2017.

KOBAK, Dmitry; Shpilkin, Sergey Pshenichnikov, Maxim S. Statistical anomalies in 2011–2012 Russian elections revealed by 2D correlation analysis. \textbf{Physics and Society}. 2012. Disponível em: \textless https://arxiv.org/pdf/1205.0741.pdf\textgreater. Acesso em: 23 jun. 2017.

PIOVANI, Juan Ignacio. De Objeto a Método: Notas Históricas Sobre Estatística e Pesquisa Social. Tradução de Helena Vieira Leitão de Souza. Sociologia & Antropologia. Rio de Janeiro, v.03.05: 245–270, jun, 2013.

SILVA, Leandro Magno. Análise estatística para detecção de regularidades em eleições brasileiras. 2020. 107 f. Dissertação (Mestrado em Inovações Tecnológicas) - Universidade Tecnológica Federal do Paraná, Campo Mourão, 2020.