Blog

Testamos um modelo matemático de previsão da apuração: acertos, erros e próximos passos

Na noite de 25 de outubro, enquanto acompanhávamos a apuração do 2º turno na nossa página /apuracao2026, rodamos em paralelo um modelo matemático que tentava estimar, a cada nova leitura do TSE, a chance de cada candidato terminar na frente.

Antes de tudo, o que esse modelo não é:

  • Não é pesquisa eleitoral nem projeção oficial.
  • Não foi publicado durante a apuração. Rodou fora do site, só para nós, como teste interno.
  • Não é um serviço que oferecemos.

O resultado que vale é o do TSE: Lula 51,79% (64.256.232 votos) e Flávio Bolsonaro 48,21% (59.826.041 votos), com 100% das seções totalizadas às 23h27.

Este texto conta como o teste foi. Os acertos ocupam pouco espaço porque foram poucos. Os erros ensinaram mais.

O que o modelo faz

A cada atualização do TSE, ele olha a contagem de cada estado, compara com o resultado do 1º turno naquele estado e estima quanto o voto mudou entre um turno e outro. A partir disso, projeta o resultado final e calcula uma probabilidade para cada lado.

Antes da noite, ele foi testado com as apurações de 2010, 2014, 2018 e 2022, simulando várias ordens de chegada das urnas, inclusive ordens desfavoráveis de propósito. Em nenhuma delas apontou o vencedor errado.

No dia 25, ele fez 65 leituras, das 19h10 às 21h38, de 1,6% a 99,9% das urnas apuradas.

Por que esse modelo é importante, e para que ele serve?

Vamos ser sinceros: uma parte da graça é ver a tecnologia funcionando. Pouca coisa aquece mais o coração de quem desenvolve um sistema do que ver o próprio modelo matemático acompanhando a apuração em tempo real, leitura após leitura. Mas ele vai além do orgulho de quem escreveu o código.

A contagem parcial engana. As urnas não chegam numa ordem aleatória. Algumas regiões apuram mais rápido que outras e, se elas votam de um jeito diferente do resto do país, o placar das primeiras horas pode mostrar um cenário que não se sustenta até o fim. Foi o que aconteceu no domingo: a liderança trocou de lado durante a noite.

O modelo tenta responder à pergunta que todo mundo faz na frente da TV: essa vantagem é para valer ou ainda pode virar? Em vez de olhar só o placar do momento, ele leva em conta de onde vieram as urnas já apuradas e o que ainda falta chegar.

Com mais informação, há menos ansiedade e menos boato. Em noite de apuração apertada, a cada atualização aparece alguém dizendo que "agora virou" ou que "acabou". Um cálculo que mostra o tamanho real da incerteza ajuda a separar o que é sinal do que é barulho.

É um bom teste de transparência. Um modelo que mostra a própria margem de erro precisa ser conferido depois, com o resultado oficial na mão. Este post é essa conferência.

O que deu certo

  • Nunca apontou o vencedor errado. O momento de maior dúvida foi às 19h50, com cerca de 11% apurado, quando a probabilidade calculada para o candidato que acabou vencendo estava em 34%.
  • Indicou o vencedor com 80% das urnas apuradas, às 20h53, com probabilidade acima de 95%. Às 21h, com 87,7% apurado, passou de 99,5%.

O que deu errado

A projeção foi pior que a própria contagem. Durante quase toda a noite, o modelo estimou o resultado final cerca de 2 pontos abaixo do que ele de fato foi. Em cinco das seis faixas de apuração que medimos (na outra houve empate), quem simplesmente olhasse o placar do TSE naquele momento teria chegado mais perto do número final do que o modelo.

Projeção do modelo, contagem e resultado final
Contagem do TSE no momentoProjeção do modeloResultado final
49%50%51%52%0%20%40%60%80%100%Urnas apuradasfinal: 51,78%Contagem: 51,69% com 1,63% apurado (19:10)Contagem: 51,38% com 1,67% apurado (19:12)Contagem: 51,42% com 1,75% apurado (19:14)Contagem: 51,36% com 1,94% apurado (19:16)Contagem: 51,18% com 2,18% apurado (19:19)Contagem: 50,93% com 2,42% apurado (19:21)Contagem: 50,91% com 2,91% apurado (19:23)Contagem: 50,86% com 3,35% apurado (19:25)Contagem: 50,98% com 4,10% apurado (19:27)Contagem: 51,08% com 5,02% apurado (19:29)Contagem: 50,86% com 6,18% apurado (19:32)Contagem: 50,81% com 7,67% apurado (19:34)Contagem: 50,56% com 8,88% apurado (19:36)Contagem: 50,48% com 9,99% apurado (19:38)Contagem: 50,19% com 11,39% apurado (19:41)Contagem: 50,04% com 12,67% apurado (19:43)Contagem: 49,87% com 13,65% apurado (19:45)Contagem: 49,77% com 15,38% apurado (19:50)Contagem: 49,79% com 16,39% apurado (19:52)Contagem: 49,56% com 18,03% apurado (19:55)Contagem: 49,45% com 20,05% apurado (19:57)Contagem: 49,44% com 21,84% apurado (20:00)Contagem: 49,35% com 23,98% apurado (20:02)Contagem: 49,45% com 25,79% apurado (20:04)Contagem: 49,46% com 28,22% apurado (20:06)Contagem: 49,50% com 30,25% apurado (20:09)Contagem: 49,53% com 32,30% apurado (20:11)Contagem: 49,67% com 35,08% apurado (20:13)Contagem: 49,64% com 37,40% apurado (20:15)Contagem: 49,78% com 39,84% apurado (20:18)Contagem: 49,78% com 41,58% apurado (20:20)Contagem: 49,84% com 44,37% apurado (20:22)Contagem: 49,97% com 46,48% apurado (20:24)Contagem: 49,99% com 49,60% apurado (20:27)Contagem: 50,11% com 52,46% apurado (20:29)Contagem: 50,31% com 55,56% apurado (20:32)Contagem: 50,43% com 58,62% apurado (20:34)Contagem: 50,52% com 60,85% apurado (20:37)Contagem: 50,62% com 63,38% apurado (20:39)Contagem: 50,75% com 65,94% apurado (20:41)Contagem: 50,89% com 69,51% apurado (20:44)Contagem: 50,97% com 72,36% apurado (20:46)Contagem: 51,16% com 78,08% apurado (20:51)Contagem: 51,26% com 80,02% apurado (20:53)Contagem: 51,35% com 83,04% apurado (20:55)Contagem: 51,41% com 85,24% apurado (20:58)Contagem: 51,48% com 87,66% apurado (21:00)Contagem: 51,53% com 90,35% apurado (21:02)Contagem: 51,62% com 91,95% apurado (21:04)Contagem: 51,69% com 94,29% apurado (21:06)Contagem: 51,71% com 96,83% apurado (21:09)Contagem: 51,75% com 99,32% apurado (21:11)Contagem: 51,75% com 99,76% apurado (21:13)Contagem: 51,75% com 99,77% apurado (21:15)Contagem: 51,75% com 99,79% apurado (21:17)Contagem: 51,75% com 99,81% apurado (21:19)Contagem: 51,75% com 99,83% apurado (21:21)Contagem: 51,75% com 99,85% apurado (21:23)Contagem: 51,76% com 99,87% apurado (21:25)Contagem: 51,76% com 99,87% apurado (21:28)Contagem: 51,76% com 99,88% apurado (21:30)Contagem: 51,76% com 99,89% apurado (21:32)Contagem: 51,76% com 99,90% apurado (21:34)Contagem: 51,76% com 99,90% apurado (21:36)Contagem: 51,76% com 99,90% apurado (21:38)Projeção: 50,30% com 1,63% apurado (19:10)Projeção: 50,31% com 1,67% apurado (19:12)Projeção: 50,32% com 1,75% apurado (19:14)Projeção: 50,27% com 1,94% apurado (19:16)Projeção: 50,22% com 2,18% apurado (19:19)Projeção: 50,15% com 2,42% apurado (19:21)Projeção: 50,32% com 2,91% apurado (19:23)Projeção: 50,17% com 3,35% apurado (19:25)Projeção: 50,02% com 4,10% apurado (19:27)Projeção: 49,93% com 5,02% apurado (19:29)Projeção: 49,47% com 6,18% apurado (19:32)Projeção: 49,34% com 7,67% apurado (19:34)Projeção: 49,28% com 8,88% apurado (19:36)Projeção: 49,27% com 9,99% apurado (19:38)Projeção: 49,25% com 11,39% apurado (19:41)Projeção: 49,27% com 12,67% apurado (19:43)Projeção: 49,27% com 13,65% apurado (19:45)Projeção: 49,26% com 15,38% apurado (19:50)Projeção: 49,30% com 16,39% apurado (19:52)Projeção: 49,36% com 18,03% apurado (19:55)Projeção: 49,42% com 20,05% apurado (19:57)Projeção: 49,49% com 21,84% apurado (20:00)Projeção: 49,52% com 23,98% apurado (20:02)Projeção: 49,52% com 25,79% apurado (20:04)Projeção: 49,53% com 28,22% apurado (20:06)Projeção: 49,49% com 30,25% apurado (20:09)Projeção: 49,51% com 32,30% apurado (20:11)Projeção: 49,64% com 35,08% apurado (20:13)Projeção: 49,68% com 37,40% apurado (20:15)Projeção: 49,73% com 39,84% apurado (20:18)Projeção: 49,83% com 41,58% apurado (20:20)Projeção: 49,90% com 44,37% apurado (20:22)Projeção: 49,97% com 46,48% apurado (20:24)Projeção: 50,03% com 49,60% apurado (20:27)Projeção: 50,12% com 52,46% apurado (20:29)Projeção: 50,23% com 55,56% apurado (20:32)Projeção: 50,29% com 58,62% apurado (20:34)Projeção: 50,35% com 60,85% apurado (20:37)Projeção: 50,47% com 63,38% apurado (20:39)Projeção: 50,60% com 65,94% apurado (20:41)Projeção: 50,67% com 69,51% apurado (20:44)Projeção: 50,77% com 72,36% apurado (20:46)Projeção: 50,98% com 78,08% apurado (20:51)Projeção: 51,07% com 80,02% apurado (20:53)Projeção: 51,17% com 83,04% apurado (20:55)Projeção: 51,26% com 85,24% apurado (20:58)Projeção: 51,33% com 87,66% apurado (21:00)Projeção: 51,36% com 90,35% apurado (21:02)Projeção: 51,44% com 91,95% apurado (21:04)Projeção: 51,55% com 94,29% apurado (21:06)Projeção: 51,59% com 96,83% apurado (21:09)Projeção: 51,68% com 99,32% apurado (21:11)Projeção: 51,69% com 99,76% apurado (21:13)Projeção: 51,69% com 99,77% apurado (21:15)Projeção: 51,69% com 99,79% apurado (21:17)Projeção: 51,70% com 99,81% apurado (21:19)Projeção: 51,70% com 99,83% apurado (21:21)Projeção: 51,70% com 99,85% apurado (21:23)Projeção: 51,70% com 99,87% apurado (21:25)Projeção: 51,70% com 99,87% apurado (21:28)Projeção: 51,70% com 99,88% apurado (21:30)Projeção: 51,70% com 99,89% apurado (21:32)Projeção: 51,70% com 99,90% apurado (21:34)Projeção: 51,70% com 99,90% apurado (21:36)Projeção: 51,70% com 99,90% apurado (21:38)

Percentual de Lula nos votos válidos dos 27 estados (o modelo não considerava o exterior). A linha tracejada é o resultado final nesses estados. Teste interno, não publicado durante a apuração.

Distância média até o resultado final, por faixa de apuração
Projeção do modeloContagem do TSE no momento
0 a 10% apurado
1,82 Projeção do modelo
0,74 Contagem do TSE
10 a 30%
2,40 Projeção do modelo
2,11 Contagem do TSE
30 a 50%
2,03 Projeção do modelo
2,03 Contagem do TSE
50 a 70%
1,39 Projeção do modelo
1,26 Contagem do TSE
70 a 90%
0,68 Projeção do modelo
0,51 Contagem do TSE
90 a 100%
0,13 Projeção do modelo
0,05 Contagem do TSE

Em pontos percentuais. Quanto menor a barra, mais perto do resultado final. Em todas as faixas, exceto 30 a 50% (empate), a contagem do momento ficou mais perto do que o modelo.

No fim, ficou confiante demais. A partir de 99,3% apurado, a margem de incerteza do modelo encolheu a zero, e a projeção ficou 0,1 ponto distante do resultado final. Parece pouco, mas um modelo que diz ter certeza absoluta não pode errar nem por isso.

Por que errou

Entre o 1º e o 2º turno, o voto mudou de forma quase igual em todo o país: cerca de 2,9 pontos na mesma direção em todos os 27 estados, com diferença de meio ponto entre um estado e outro.

O modelo tem um cuidado embutido. Ele sabe que, no começo da apuração, as primeiras urnas podem vir de regiões que favorecem um dos lados, e que isso some quando o resto chega. Por isso desconfia de mudanças grandes logo no início.

Em 2026, esse cuidado custou caro. A versão que usamos só enxergava dados por estado e não tinha como separar as duas coisas: "o eleitor mudou de voto" e "as primeiras urnas vieram de um lado só". Diante de uma mudança real, grande e uniforme, tratou boa parte dela como efeito da ordem de chegada e a descartou. Com 5% apurado, aceitou só um terço da mudança que estava vendo. Foi aceitando o resto aos poucos, conforme a apuração avançava, e daí veio a projeção sempre abaixo do resultado.

Nos testes com eleições passadas, esse cuidado foi justamente o que impediu o modelo de errar o vencedor quando as urnas chegavam numa ordem enganosa. A noite de 2026 mostrou o outro lado da mesma escolha.

O que estamos ajustando

  1. Dados por município ou por seção, e não só por estado. É a correção principal: com dado mais fino, dá para medir se as primeiras urnas vieram de um lado só, em vez de supor. A coleta passa a buscar só o que mudou desde a última leitura.
  2. Recalibrar com 2026. Ela vira a quinta eleição de calibração e a primeira com uma mudança de voto tão uniforme.
  3. Um piso de incerteza. Enquanto houver seção por apurar, a margem do modelo não pode chegar a zero.
  4. Registro completo de cada leitura, estado por estado. Desta vez guardamos o detalhe por estado só da última leitura, o que limita o quanto conseguimos reprocessar a noite.
  5. Teste na ordem real de chegada das urnas de 2026, quando o TSE publicar esses dados nos dados abertos. É o teste que o modelo ainda não fez.
  6. Funcionar em qualquer turno, para que a mesma base sirva às eleições municipais de 2028 e às gerais de 2030.

Não para por aqui

O teste de domingo deixou claro onde o modelo precisa melhorar. Vamos seguir trabalhando nisso até as próximas eleições, sempre com o mesmo critério: só vale o que passar nos testes com eleições passadas, e o resultado oficial continua sendo o do TSE.

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

Fale comigo