Blog

Depois da noite da apuração: como testamos e melhoramos nosso modelo matemático

No post Testamos um modelo matemático de previsão da apuração, contamos como o nosso modelo se saiu na noite de 25 de outubro: nunca apontou o vencedor errado, mas ficou pior que a própria contagem durante boa parte da noite.

Este texto conta o que fizemos depois disso.

Antes, o aviso de sempre:

  • É um projeto interno. Não é pesquisa eleitoral nem projeção oficial.
  • Não oferecemos previsão eleitoral como serviço.
  • O resultado que vale é sempre o do TSE.

Em resumo

Criamos duas novas versões do modelo:

  • M6: corrige o erro da noite de 25/10.
  • M7: leva o modelo para eleições de prefeito e de governador.

Para prefeito, os testes foram bons. Para governador, o modelo falhou no teste, e por isso desligamos essa parte. Contamos as duas coisas abaixo.

M6: olhar município a município

O erro da noite tinha uma causa clara. O modelo só enxergava os números por estado e não conseguia separar duas coisas: "o eleitor mudou de voto" e "as primeiras urnas vieram de regiões que votam de um jeito só". Na dúvida, descartava parte de uma mudança que era real.

O M6 passou a medir a mudança de voto município a município. Com esse nível de detalhe, dá para ver se as primeiras urnas são parecidas com o resto do estado ou não, em vez de supor.

Nos testes com os 2º turnos presidenciais de 2010 a 2026:

  • Nunca apontou o vencedor errado, em nenhuma das ordens de chegada das urnas que simulamos, inclusive as desfavoráveis montadas de propósito.
  • Foi melhor que a contagem crua em 124 de 132 situações testadas. Nas outras 8, empatou. Em nenhuma foi pior.
  • Em 2026, com até 10% das urnas apuradas, errou em média 0,10 ponto. O modelo usado na noite tinha errado 1,82.
Erro médio com até 10% das urnas apuradas, 2º turno de 2026
Modelo usado na noite (M5)
1,82 ponto M5
Nova versão (M6)
0,10 ponto M6

Em pontos percentuais, comparado com o resultado final. O M6 foi desenhado depois da noite de 25/10, então este número não é uma prova independente: a prova de verdade é a próxima eleição.

Uma ressalva importante: o M6 foi desenhado depois de vermos a noite de 2026. Por isso, o bom resultado em 2026 não prova sozinho que ele funciona. A prova de verdade é a próxima eleição, com dados que o modelo nunca viu.

M7, prefeito: passou no teste

O próximo uso possível do modelo são as eleições municipais de 2028. Por isso, o M7 foi testado em 107 disputas de 2º turno para prefeito, de 2020 e 2024, usando os dados por zona eleitoral.

  • Nas 44 cidades com 4 ou mais zonas eleitorais, o modelo não apontou o vencedor errado em nenhuma das 1.936 situações testadas.
  • A margem de incerteza ficou mais bem calibrada. A versão anterior era cautelosa demais e dava faixas mais largas do que precisava.
  • Regra nova: em cidade com menos de 4 zonas eleitorais, o modelo responde "dados insuficientes" e não calcula probabilidade. Com tão poucas zonas, o melhor que ele faria seria repetir a contagem com uma faixa larga em volta.

M7, governador: não passou, e desligamos

Esta é a parte que mais nos ensinou.

Testamos o modelo em 56 disputas de 2º turno para governador, de 2010 a 2026. Ele apontou o vencedor errado 26 vezes, em 2.464 situações testadas. Duas dessas falhas aconteceram com ordens realistas de chegada das urnas. As outras 24, nas ordens desfavoráveis que montamos de propósito para estressar o modelo.

Parece pouco, mas nosso critério é não errar o vencedor nenhuma vez. Por isso, o modelo não passou.

O motivo: numa eleição para governador, o voto muda de forma diferente em cada região do estado. Quando as primeiras urnas vêm todas de uma mesma região, o modelo tira uma conclusão errada sobre o estado inteiro. Para corrigir isso, ele precisa de um nível regional que ainda não tem.

A decisão: desligamos a probabilidade para governador no próprio código, e não só no texto. Se alguém rodar o modelo numa disputa de governador, ele mostra a contagem e avisa que a probabilidade está desativada.

O ensaio geral

Testar com eleições passadas não basta. Também é preciso saber se o programa aguenta uma noite de eleição de verdade.

Por isso rodamos o modelo de ponta a ponta contra a API real do TSE de 2026, como se fosse a noite da apuração. O ensaio encontrou 6 problemas de operação, e tratamos cada um deles.

Um exemplo: se o programa reiniciasse no meio da noite, ele baixava todos os dados de novo, o que levava cerca de 23 minutos. Agora retoma de onde parou.

Como garantimos que o teste é honesto

  • 47 testes automáticos rodam a cada mudança no código.
  • Um deles garante que o modelo nunca "espia" o futuro. Ele troca os votos das urnas ainda não apuradas por zero e por valores aleatórios e confere se a projeção continua exatamente a mesma. Se o modelo estivesse usando qualquer informação que ainda não deveria ter, esse teste quebraria.
  • Revisões independentes do código antes de publicar qualquer resultado.

Próximos passos

  1. Um nível regional para governador, que é o que falta para religar essa parte.
  2. Dados por seção eleitoral para cidades com poucas zonas, que hoje recebem "dados insuficientes".
  3. Testar com a ordem real de apuração de 2026, quando o TSE publicar os boletins de urna nos dados abertos.

O projeto continua

Seguimos melhorando o modelo para 2028 e 2030, com o mesmo critério: só vale o que passa nos testes, inclusive quando o resultado do teste é desligar uma parte.

Quer conhecer melhor o projeto? Fale com a gente pelo Instagram, por mensagem direta: @crmstudiobr.

Fale comigo