Quien votó por cada Candidato?

El domingo pasado se eligió presidente de Chile, por ende muchos opinólogos intentaron explicar como se repartieron los votos de la primera vuelta a la segunda vuelta. Como el voto es secreto, nadie puede estar mal.

Por eso decidí dar un aproach distinto al standard, recurriendo a un modelo matemático hecho muy rápido el mismo día domingo, publicando así el día lunes el articulo: Estimación repartija de votos segunda vuelta presidenciales Chile 2017 del cual recibí mucho feedback que incorporé en esta versión “mejorada”.

Primero partamos entendiendo el problema, en primera vuelta se votó por 8 candidatos, donde los votos se repartieron del siguiente modo:

Mientras que en la segunda vuelta entre Piñera y Guiller los votos se repartieron del siguiente modo:

Sabemos de que región vienen los votos, comuna, punto de votación, todo disponible en el sitio del servel, pero lo que a todos nos intriga es: ¿ como se repartieron los votos de la primera vuelta en la segunda ?

Para ello hice un modelo matemático con el que llegue al siguiente resultado: (donde total_pv representa los nuevos votantes)

Ahora explicaré como llegué a ese resultado:

Metodología

Crear Dataset:

En el sitio del SERVEL (http://pv.servelelecciones.cl/ y http://www.servelelecciones.cl/), se publican los votos por mesa electoral, por lo que construí un web-scrapper para descargar las los votos por mesa construyendo así un dataset (disponible aqui) con las siguientes columnas:

  • region: Región
  • circ_sen: Circunscripción Senatorial
  • distrito: Distrito
  • comuna: Comuna
  • circ_elec: Circunscripción Electoral
  • local_vot: Local de Votación
  • mesa: Mesa de Votación
  • goic_pv: Numero de votos recibidos por Goic en primera vuelta
  • kast_pv: Numero de votos recibidos por Kast en primera vuelta
  • pinera_pv: Numero de votos recibidos por Piñera en primera vuelta
  • guillier_pv: Numero de votos recibidos por Guillier en primera vuelta
  • sanchez_pv: Numero de votos recibidos por Sanchez en primera vuelta
  • meo_pv: Numero de votos recibidos por MEO en primera vuelta
  • artes_pv: Numero de votos recibidos por Artes en primera vuelta
  • navarro_pv: Numero de votos recibidos por Navarro en primera vuelta
  • nulos_pv: Numero de votos Nulos en primera vuelta
  • blanco_pv: Numero de votos Blancos en primera vuelta
  • noVoto_pv: Numero de personas que no votaron en primera vuelta
  • pinera_sv: Numero de votos recibidos por Piñera en segunda vuelta
  • guillier_sv: Numero de votos recibidos por Guillier en segunda vuelta
  • nulos_sv: Numero de votos Nulos en segunda vuelta
  • blancos_sv : Numero de votos Blancos en segunda vuelta
  • noVoto_sv: Numero de personas que no votaron en segunda vuelta

Metodología

En cada Región, usaremos los resultados de cada mesa electoral para realizar una regresión que nos permitirá estimar los porcentajes de votos que se fueron a cada candidato en la segunda vuelta, los modelos quedarían del siguiente modo:

  • pinera_sv = %votos_goic_pinera*goic_pv + %votos_kast_pinera*kast_pv + … + %noVoto_pinera*noVoto_pv
  • guillier_sv = %votos_goic_guillier*goic_pv + %votos_kast_guillier*kast_pv + … + %noNoto_guillier*noVoto_pv
  • nulos_sv = %votos_goic_guillier*goic_pv + %votos_kast_guillier*kast_pv + … + %noNoto_nulos*noVoto_pv
  • blancos_sv = %votos_goic_guillier*goic_pv + %votos_kast_guillier*kast_pv + … + %noNoto_blancos*noVoto_pv
  • noVoto_sv = %votos_goic_guillier*goic_pv + %votos_kast_guillier*kast_pv + … + %noNoto_noVoto*noVoto_pv

Pero para que el modelo tenga sentido, debemos restringir los porcentajes estimados, las restricciones son las siguientes:

  • Todos los porcentajes son positivos (mayores a 0).
  • la suma de los porcentajes cedidos debe sumar 100%

Calibramos el Modelo utilizando R con el paquete CVXR (Código adjunto al final).

Resultados

Se corrió la regresión por región y se obtuvo un % por región, pero a nivel nacional, los votos de cada candidato en primera vuelta se distribuyeron del siguiente modo (total_pv representa el porcentaje de personas nuevas que votaron en 2nda vuelta):

Las conclusiones son varias:

  • Los que votaron por Piñera y Guiller, repitieron su voto.
  • Piñera no logró captar el 100% de os votos de Kast, seguramente por su cambio al centro.
  • Poco menos de la mitad de lo votos de Sanchez, no votaron en segunda vuelta, esto se puede deber a que el Frente Amplio llamó a no votar por Piñera, pero no a votar por Guiller. Otra forma de verlo es que el Frente Amplio es la Izquierda cansada de la Nueva Mayoría.
  • Artes y Navarro donaron todos sus votos a Guiller.
  • Los votantes de Goic y Meo, votaron menos en segunda vuelta, pero mostraron una preferencia por Guillier.
  • Piñera logró captar mas nuevos votantes que Guiller.

Este mismo gráfico visto en número de votos en vez de porcentaje se ve del siguiente modo (total_pv representa número de personas nuevas que votaron en 2nda vuelta):

Se puede apreciar que el grueso de los votos de Piñera vino primero de sus votos en primera vuelta, luego de nuevos votantes y por ultimo de los votos de Kast.

Ahora si vemos los votos superpuestos según su origen (total_pv representa el número de personas nuevas que votaron en 2nda vuelta):

Se aprecia que si el Frente Amplio (Sanchez) hubiese votado por Guiller (duplicar el ancho del morado), posiblemente hubiesen alcanzado a Piñera. Por otro lado, Piñera podría haber ganado sin los votos de Kast, pero hubiese sido muy estrecho.

Al final el resultado de las elecciones se debió a los nuevos votantes (noVoto_pv) y a que el Frente Amplio no votó en segunda vuelta.

Saludos!

PD: Los archivos del análisis resultados están en Presidenciales, Necesitaran descargar chromedriver o phantomjs para ejecutar el webscraping.

 

Print Friendly, PDF & Email

22 comments

  1. No-ta-ble.
    (p.d. anexo – Tema Grinch: has hecho un aproximado del endeudamiento del chileno promedio para esta fecha? Fue mi sobremesa de ayer, y creo es un tema psicosocial y económico no menor…
    Un abrazo sr! )

  2. Excelente trabajo, estimado.
    ¿qué app de webscrapping ocupaste?
    Te lo pregunto xq quiero complementar tu base de datos con los datos del padrón total de ciudadanos habilitados para votar.

    Saludos!

      1. Soy psicólogo y vengo del barrio de la psicometría (trabajo en metodología cuanti aplicada a la construcción de test psicológicos)
        Por afición y militancia me meto cada día mas en números electorales.
        He empezado a explorar algunas extensiones de R para analizar twitter (wordclouds) y el paso que viene era meterme en webscrapping.
        Quiero aprender, así que si me recomiendas un buen tutorial, te lo agradecería.
        PD.: en la pestaña ‘Participación’ de la web servel se puede llegar al dato inscritos por mesa, pero sin webscrapping sería eterno… ¿que le cuesta a servel publicar los datos de modo más amigable? jejejjejjeje

  3. Completamente de acuerdo. Yo por otro lado llegue a la misma conclusion. No vi que votantes del fa votaran a piñera en segunda, me salia su abstencion y que se sumaron nuevos votantes. La cantidad de votantes entre las dos jornadas, sin contar dos veces a quienes lo hicieron en ambas, supera el 50 y algo por ciento del padron posiblemente

  4. Hola. Qué buenowue hiciste este ejercicio. Hace falta sacarle más punta a la información disponible y tu trabajo lo logra. Especialmente que la información a veces debe scrape-arse y gentil mente pongas el resultadoa disposiciónde los demás.
    Pero creo quehay que tener en cuenta que la técnica de inferencia ecológica que usas (Goodman regression) se sabe que no da buenos resultados, especialmente al inferir más de cuatro combinaciones (tabla de 2×2). Lo complicado es que las otras técnicas que hay son más jodidas de implementar y que en Chile no se pueden hacer estudios de validación contrastar esto con Lo que salga de las encuestas.

      1. Hola. Me refiero a que en una tabla 2×2 se infieren cuatro casillas. Por ejemplo, si votó si/no en primera vuelta versus en votó si/no en segunda vuelta. O Piñera/Guillier versus algo binario en primera vuelta. Los grados de libertad de esa tabla son diferentes. Por eso que los métodos originales de inferencia ecológica (como Goodman regression) eran para tabla 2×2 que luego se generalizaron para cualquier tabla. Mi experiencia en este ejercicio es que los resultados de distintas técnicas son muy dispares, aunque todos en lo grueso dan más o menos las mismas conclusiones.
        Anyway, gracias por proveer este análisis.

  5. Felicitaciones Daniel.
    “a ojo de buen cubero” diría que más que 1/7 de los votos de Goic en 1v se fueron a Piñera, y como debe ser suma cero, menos de MEO a Piñera.

  6. Muy interesante Daniel. Una consulta: tienes el análisis para Puente Alto? Estoy haciendo un análisis comparado con otro modelo de predicción. O quizás se puede extraer de la data que indicas? Me cuentas.
    Saludos,
    Andrés Ávila

  7. Sería posible que en primera vuelta hubo fraude a favor del FA? Y que en el balotaje, gracias al gran número de apoderados, la votación haya sido más limpia e imparcial?

  8. Gracias por la respuesta, revisaré esos datos.
    Antes de la elección de segunda vuelta posteé una predicción que se cumplió, una diferencia de 7 puntos. Ahora estoy haciendo un análisis de por qué se cumplió. Nada de Big Data, básicamente supuestos, sumas y restas, supuestos básicos respecto comportamiento del elector. El posteo previo (en Facebook) fue este:
    https://www.facebook.com/photo.php?fbid=10155066945146846&set=a.10150167185641846.298138.676476845&type=3

    Un análisis algo más elaborado, posterior a la elección, lo publiqué en Medium:
    https://medium.com/@aavila_87950/una-elecci%C3%B3n-predecible-862bfbfbf4ef

    Ahora estoy analizando el por qué de la elección. En mí modelo (ahora ajustado con los resultados de la segunda votación) los datos son coherentes, pero este votante FA votando 80% por Guillier, o con esa abstención, no me cuadran. Revisaré los datos que publicaste.

    Saludos y gracias!
    Andrés

    1. Cuando corrí el modelo por comuna daba resultados raros…
      Se puede hacer algo, para mejorarlos agregando el dato real de votantes que no votaron, pero tengo que scrapearlo… No sé por qué el Servel no puede poner la base completa y listo.

Leave a Reply

Tu dirección de correo electrónico no será publicada.