Avaliação Dinâmica de Institutos de Pesquisa Eleitoral no Brasil
O Indicador de Convergência Temporal (ICT) é uma ferramenta de ciência de dados para avaliar a confiabilidade de institutos de pesquisa eleitoral através da análise de sua dinâmica de convergência ou divergência em relação ao consenso agregado ao longo do período eleitoral.
Diferentemente de abordagens que focam apenas no erro final, o ICT captura a trajetória temporal de cada instituto, permitindo distinguir entre:
- Convergência Esperada (ICT > 0.05): Instituto converge para consenso
- Comportamento Neutro (-0.05 ≤ ICT ≤ 0.05): Instituto mantém padrão estável
- Divergência Persistente (ICT < -0.05): Instituto diverge do consenso
A dinâmica temporal é um preditor robusto de confiabilidade final:
- r = -0.883 (correlação muito forte)
- R² = 0.779 (77.9% da variância explicada)
- p = 0.001 (altamente significativo)
- Pipeline de 13 etapas com validação em múltiplos níveis
- Tratamento robusto de erros e casos extremos
- Logging completo para rastreabilidade
- Reproducibilidade garantida
- Agregação ponderada baseada em variância binomial
- Ajustes de viés por método de coleta e tipo de pergunta
- Intervalos de confiança para todas as estimativas
- Testes estatísticos inferenciais (Shapiro-Wilk, Wilcoxon)
- Código bem documentado em Python
- Uso de bibliotecas especializadas (pandas, numpy, scipy)
- Exportação de resultados em múltiplos formatos (CSV, Excel, PNG)
- 13 gráficos avançados para visualização
- Discussão explícita de limitações
- Validação estatística completa
- Código aberto e auditável
- Documentação técnica detalhada
- Período: 2022 (eleições presidenciais brasileiras)
- Registros: 4.600 pesquisas
- Institutos: 10 com ICT válido, 1 sem dado final
- Duração: ~6 meses (5 bimestres)
- Qualidade: Taxa de nulos < 2%
| Categoria | n | % | ICT Médio |
|---|---|---|---|
| Convergência | 4 | 40% | 0.198 |
| Neutro | 2 | 20% | 0.025 |
| Divergência | 4 | 40% | -0.314 |
| Teste | Resultado | p-valor | Conclusão |
|---|---|---|---|
| Shapiro-Wilk | W = 0.884 | 0.144 | Normal |
| Wilcoxon | W = 26 | 0.922 | Não significativo |
| Correlação | r = -0.883 | 0.001 | Altamente significativo |
- Python 3.8+
- pip ou conda
# Clone o repositório
git clone https://github.com/jacksjm/ict-evaluation.git
cd ict-pesquisas-eleitorais
# Crie um ambiente virtual
python -m venv venv
source venv/bin/activate # No Windows: venv\Scripts\activate
# Instale as dependências
pip install -r requirements.txt# Abra o Jupyter Notebook
jupyter notebook ICT_Metodologia_Melhorada.ipynbsaida_agregador_ict/resultado_ict_institutos.csv- Resultados principaissaida_agregador_ict/distancias_por_instituto_bimestre.csv- Dados bimestraissaida_agregador_ict/consolidado_agregador_ict.xlsx- Relatório Excelsaida_agregador_ict/ict_*.png- 13 gráficos em alta resoluçãosaida_agregador_ict/notebook_execution.log- Log de execução
ict-pesquisas-eleitorais/
├── README.md # Este arquivo
├── requirements.txt # Dependências Python
└── ICT_Metodologia_Melhorada.ipynb # Notebook principal
# No notebook, modifique os parâmetros:
INTERVALO_BIMESTRES = 60 # dias
SHRINKAGE_MIN = 0.85 # limite inferior
SHRINKAGE_MAX = 1.15 # limite superior
TRUNCAMENTO_MIN = 0.001 # truncamento inferior
TRUNCAMENTO_MAX = 0.999 # truncamento superior# Prepare um CSV com as colunas:
# - data: data da pesquisa (YYYY-MM-DD)
# - instituto: nome do instituto
# - candidato: nome do candidato
# - percentual: percentual (0-1 ou 0-100)
# - tamanho_amostra: n da pesquisa
# - metodo: método de coleta (telefônico, online, presencial)
# - tipo_pergunta: tipo de pergunta (espontânea, estimulada)
# Coloque o arquivo em data/ e execute o notebookO notebook gera 13 gráficos em alta resolução (320 DPI):
- Série Temporal do ICT - Evolução por instituto
- Violino por Categoria - Distribuição do ICT
- Heatmap Instituto-Bimestre - Matriz visual
- Dispersão ICT vs Distância - Relação entre variáveis
- Barras de Classificação - Ranking dos institutos
- Proporção Temporal - Evolução das categorias
- Boxplot de Distâncias - Variabilidade por instituto
- Agregador Diário - Série temporal do consenso
- Histograma do ICT - Distribuição de frequências
- Boxplot por Classe - Comparação entre categorias
- Distância Inicial vs Final - Relação entre períodos
- Heatmap Correlação - Matriz de correlações
- Mapa de Calor Agregador - Padrões espaço-temporais
- Verificação de valores nulos (< 5%)
- Validação de intervalo de percentuais (0-1)
- Cobertura temporal mínima (30 dias)
- Número mínimo de institutos e candidatos
- Detecção de duplicatas
- Shapiro-Wilk para normalidade
- Wilcoxon signed-rank para significância
- Pearson para correlação
- Verificação de intervalos de confiança
- Pesos válidos (> 0)
- Somas ponderadas finitas
- Intervalos de confiança ordenados
- p-valores em [0, 1]
- Gráficos sem erros de renderização
| Etapa | Operação | Complexidade | Tempo |
|---|---|---|---|
| Validação | O(n) | 1-2s | |
| Agregação | O(n log n) | 3-5s | |
| Testes | O(i) | 1-2s | |
| Gráficos | O(n) | 30-45s | |
| Total | O(n log n) | 2-3 min |
Onde n ≈ 4.600 registros, i ≈ 10 institutos
- Truncamento de Percentuais: Valores extremos são truncados em [0.001, 0.999]
- Shrinkage de Pesos: Intervalo [0.85, 1.15] é arbitrário
- Bimestres Fixos: Intervalo de 60 dias pode ser inadequado para períodos com poucos dados
- Tamanho Amostral: Com apenas ~10 institutos, poder estatístico pode ser limitado
- Independência: Assume que institutos não são correlacionados
- Análise de sensibilidade (variar parâmetros)
- Comparação com agregadores alternativos
- Modelagem temporal (ARIMA, suavização exponencial)
- Análise de clusters (agrupar institutos similares)
- Integração com Machine Learning (prever acurácia)
- Aplicação em outros ciclos eleitorais
- Extensão para bases com maior heterogeneidade
| Tecnologia | Versão | Uso |
|---|---|---|
| Python | 3.8+ | Linguagem principal |
| pandas | 1.3+ | Manipulação de dados |
| numpy | 1.20+ | Operações numéricas |
| scipy | 1.7+ | Testes estatísticos |
| matplotlib | 3.4+ | Visualização |
| seaborn | 0.11+ | Gráficos estatísticos |
| openpyxl | 3.6+ | Exportação Excel |
| Jupyter | 1.0+ | Ambiente interativo |
Se usar este trabalho, cite como:
@article{schweitzer2022ict,
title={Indicador de Convergência Temporal para Avaliação Dinâmica de Institutos de Pesquisa Eleitoral no Brasil},
author={Schweitzer, Dayane da Silva Xavier and Machado, Jackson},
journal={[Revista/Conferência]},
year={2022},
institution={Universidade do Estado de Santa Catarina (UDESC)}
}Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.
- Dayane da Silva Xavier Schweitzer - UDESC
- Jackson Machado - UDESC
Contribuições são bem-vindas! Por favor:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- Universidade do Estado de Santa Catarina (UDESC)
- Institutos de pesquisa que forneceram dados
- Comunidade de ciência de dados Python
-
Shirani-Mehr, H., Rothschild, D., Goel, S., & Gelman, A. (2018). "Disentangling bias and variance in election polls." Journal of the American Statistical Association, 113(522), 607-614.
-
Jackman, S. (2005). "Pooling the polls over an election campaign." Australian Journal of Political Science, 40(4), 499-517.
-
Linzer, D. A. (2013). "Dynamic Bayesian forecasting of presidential elections in the states." Journal of the American Statistical Association, 108(501), 124-134.
-
Pew Research Center. (2015). "From telephone to the web: The challenge of mode effects in public opinion polls." Pew Research Center Technical Report.
-
McKinney, W. (2010). "Data Structures for Statistical Computing in Python." Proceedings of the 9th Python in Science Conference, 445, 51-56.
- Implementação completa
- Testes estatísticos
- Documentação técnica
- Artigo científico
- [EM EXECUÇÃO] Preparação para publicação
- Extensões futuras
⭐ Se este projeto foi útil, considere dar uma estrela!