Cenário 1

Simulação com cenário limítrofe, em que 80% dos votos de Simone Tebet, Ciro Gomes e demais candidatos migram para Bolsonaro, considerando insignificante a alteração no número de votos inválidos do 1º turno.

## Primeiro Turno 
## Resultado Oficial 

Lula <- 57259504
Bolsonaro <- 51072345
Tebet <- 4915423
Ciro <- 3599287
Demais <- 600955+559708+81129+53519+45620+25625+16604

Total <- Lula+Bolsonaro+Tebet+Ciro+Demais #votos válidos

## 2º Turno - Cenário Limítrofe

### 80% dos votos de Tebet+Ciro+Demais vão para Bolsonaro
## Os eleitores de Lula e Bolsonaro confirmam o voto do 1º turno
# Votos inválidos sem alteração significante 

Lula2 <- (Lula+(0.2*(Tebet+Ciro+Demais)))/Total
Bolsonaro2 <- (Bolsonaro+(0.8*(Tebet+Ciro+Demais)))/Total

Resultado <-paste("Lula", round(Lula2*100, digits = 2), "X", round(Bolsonaro2*100, digits = 2), "Bolsonaro")
Resultado
## [1] "Lula 50.11 X 49.89 Bolsonaro"

Cenário 2

Simulação com cenário limítrofe, em que 85% dos votos de Simone Tebet, Ciro Gomes e demais candidatos migram para Bolsonaro, considerando insignificante a alteração no número de votos inválidos do 1º turno.

Lula2 <- (Lula+(0.15*(Tebet+Ciro+Demais)))/Total
Bolsonaro2 <- (Bolsonaro+(0.85*(Tebet+Ciro+Demais)))/Total

Resultado <-paste("Bolsonaro", round(Bolsonaro2*100, digits = 2), "X", round(Lula2*100, digits = 2), "Lula")
Resultado
## [1] "Bolsonaro 50.31 X 49.69 Lula"

Conclusão (cenários 1 e 2)

Considerando que os votantes em Lula e Bolsonaro no 1º turno confirmarão o voto no 2º turno e mantida sem alteração sigtnificante a proporção de votos inválidos (brancos e nulos), Lula tem assegurada a vitória se até 80% dos eleitores dos demais candidatos no 1º turno migrarem seu voto para Bolsonaro.

Cenário 3

Considerando a probabilidade de voto em Bolsonaro 54% e em Lula em 46% (Rejeição de Bolsonaro em 46%), com todos os votos inválidos do 1º turno convertidos em votos válidos, assumindo que os eleitores de Lula e Bolsonaro confirmarão o voto.

library(psych)
library(dplyr)

## Total de votos possíveis a conquistar pelos candidatos
## Resultados oficias do primeiro turno 

Tebet <- 4915423
Ciro <- 3599287
Demais <- 600955+559708+81129+53519+45620+25625+16604
Invalidos <- 5452653


n <- Tebet+Ciro+Demais+Invalidos
n
## [1] 15350523
## Simulando todos os n votos como sendo válidos no segundo turno 
## 0 = Lula; 1 = Bolsonaro 

## Voto aleatório = moeda justa cara/coroa

set.seed(123)
votos <- sample(c(0, 1), n, replace = TRUE)
votos <- matrix(votos, ncol = 1)
votos <- as.data.frame(votos)
cenario <- seq(1, n, 1)
cenario <- as.data.frame(cenario)
resultado <- cbind(votos, cenario)
colnames(resultado) <- c("Candidato", "n acumulado")
headTail(resultado, top=10, bottom=5) 
##          Candidato n.acumulado
## 1                0           1
## 2                0           2
## 3                0           3
## 4                1           4
## 5                0           5
## 6                1           6
## 7                1           7
## 8                1           8
## 9                0           9
## 10               0          10
## ...            ...         ...
## 15350519         0    15350519
## 15350520         1    15350520
## 15350521         0    15350521
## 15350522         1    15350522
## 15350523         0    15350523
## Probabilidade acumulada

resultado[,"cum_Bolsonaro"] <- cumsum(resultado$Candidato)
resultado <- resultado %>% mutate(p_Bolsonaro = cum_Bolsonaro/cenario)
headTail(resultado, top=5, bottom=5) 
##          Candidato n.acumulado cum_Bolsonaro           cenario
## 1                0           1             0                 0
## 2                0           2             0                 0
## 3                0           3             0                 0
## 4                1           4             1              0.25
## 5                0           5             1               0.2
## ...            ...         ...           ...              <NA>
## 15350519         0    15350519       7673838 0.499907397267806
## 15350520         1    15350520       7673839 0.499907429846025
## 15350521         0    15350521       7673839 0.499907397279871
## 15350522         1    15350522       7673840 0.499907429858086
## 15350523         0    15350523       7673840 0.499907397291936
##  Simulando probabilidade de rejeição de Bolsonaro em 46%

set.seed(123)
votos2 <- sample(c(0, 1), n, replace = TRUE, prob = c(.46, .54))
votos2 <- matrix(votos2, ncol = 1)
votos2 <- as.data.frame(votos2)
cenario2 <- seq(1, n, 1)
cenario2 <- as.data.frame(cenario2)
resultado2 <- cbind(votos2, cenario2)
colnames(resultado2) <- c("Candidato", "n acumulado")
headTail(resultado2, top=5, bottom=5) 
##          Candidato n.acumulado
## 1                1           1
## 2                0           2
## 3                1           3
## 4                0           4
## 5                0           5
## ...            ...         ...
## 15350519         1    15350519
## 15350520         1    15350520
## 15350521         0    15350521
## 15350522         1    15350522
## 15350523         0    15350523
## Probabilidade acumulada

resultado2[,"cum_Bolsonaro2"] <- cumsum(resultado2$Candidato)
resultado2 <- resultado2 %>% mutate(p_Bolsonaro2 = cum_Bolsonaro2/cenario2)
headTail(resultado2, top=5, bottom=5) 
##          Candidato n.acumulado cum_Bolsonaro2          cenario2
## 1                1           1              1                 1
## 2                0           2              1               0.5
## 3                1           3              2 0.666666666666667
## 4                0           4              2               0.5
## 5                0           5              2               0.4
## ...            ...         ...            ...              <NA>
## 15350519         1    15350519        8291450 0.540141346360993
## 15350520         1    15350520        8291451 0.540141376318196
## 15350521         0    15350521        8291451 0.540141341131027
## 15350522         1    15350522        8291452 0.540141371088227
## 15350523         0    15350523        8291452 0.540141335901063
plus_B <- tail(resultado2$cum_Bolsonaro2, 1)
## Plus de Bolsonaro
plus_B
## [1] 8291452
plus_L <- n - plus_B
## Plus de Lula
plus_L
## [1] 7059071
## Simulação de Cenário
## Todos os votos válidos com 46% de rejeição de Bolsonaro

Lula <- 57259504
Bolsonaro <- 51072345
Tebet <- 4915423
Ciro <- 3599287
Demais <- 600955+559708+81129+53519+45620+25625+16604
Invalidos <- 5452653

Total <- Lula+Bolsonaro+Tebet+Ciro+Demais+Invalidos #Cenário hipotético extremo com 0 voto inválido


Lula2 <- (Lula+plus_L)/Total
Bolsonaro2 <- (Bolsonaro+plus_B)/Total

Resultado <-paste("Lula", round(Lula2*100, digits = 2), "X", round(Bolsonaro2*100, digits = 2), "Bolsonaro")
Resultado
## [1] "Lula 52 X 48 Bolsonaro"

Conclusão (Cenário 3)

Considerando que os votantes em Lula e Bolsonaro no 1º turno confirmarão o voto no 2º turno e convertidos todos os votos inválidos do 1º turno em votos válidos no 2º turno, mantida sem alteração significante a proporção de abstinência, na hipótese de até 54% de rejeição de Lula dentre os eleitores dos demais candidatos, Lula tem assegurada a vitória pelo placar mínimo de 52% x 48%.