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%.