
vota
vota es un paquete de R para simular resultados electorales en España. Proyecta datos de encuestas nacionales a asignaciones de escaños provinciales usando matrices de transferencia, métodos Monte Carlo y bootstrapping. Implementa el algoritmo VOTA (Vote Outcome Transfer-based Algorithm), específicamente diseñado para el sistema electoral español con el método D’Hondt.
Instalación
Puedes instalar la versión de desarrollo desde GitHub:
# install.packages("devtools")
devtools::install_github("hmeleiro/vota")Visión general
El paquete implementa un pipeline completo de simulación electoral:
- Carga y validación de datos – Lectura de Excel multi-hoja y validación de consistencia entre hojas
- Simulación de matriz de transferencia – Generación de incertidumbre vía MCMC (remuestreo multinomial) o bootstrap
- Algoritmo VOTA – Aplicación de cinco correcciones secuenciales (abstención, nuevos votantes, redistribución de indecisos, partidos pequeños, ajustes manuales)
- Proyección provincial – Proyección de estimaciones nacionales a provincias usando patrones históricos de voto y simulación Dirichlet
- Asignación de escaños D’Hondt – Asignación vectorizada de escaños en todas las provincias y simulaciones
- Agregación y reporting – Intervalos de confianza, probabilidad de victoria y visualizaciones
Inicio Rápido
Crear un proyecto
library(vota)
# Crear un nuevo proyecto electoral con plantillas
setup_electoral_project("mi_simulacion")
# Crea: input/input.xlsx, output/, scripts/main.RVisualizar resultados
# Estimaciones de voto nacional con intervalos de confianza
plot(resultados, "nacional")
# Distribución de escaños en las simulaciones
plot(resultados, "seats_dist")
# Escaños por provincia para un partido específico
plot(resultados, "provincia", partido = "PP")
# Análisis de margen D'Hondt (fragilidad de escaños)
plot(resultados, "dhondt_margin")Datasets Incluidos
El paquete incluye datos de ejemplo de las elecciones generales españolas del 23 de julio de 2023 (23J):
| Dataset | Descripción |
|---|---|
mt |
Matriz de transferencia de ejemplo (recuerdo x intención de voto) |
votos_23J |
Resultados oficiales de votos de las elecciones 23J |
patrones_23J |
Patrones históricos de voto por provincia (23J) |
n_seats |
Número de escaños por provincia española (52 circunscripciones) |
retoques |
Ejemplo de ajustes manuales |
small_parties |
Ejemplo de estimaciones de partidos pequeños |
Funciones Principales
| Función | Propósito |
|---|---|
run_vota() |
Ejecutar el pipeline completo de simulación |
vota() |
Algoritmo VOTA central con 5 correcciones |
fast_dhondt() |
Asignación de escaños D’Hondt vectorizada |
simulate_mt() |
Simulaciones Monte Carlo de matrices de transferencia |
simulate_prov_votes() |
Simulaciones de voto provincial (Dirichlet/logit-normal) |
draw_mt() |
Orquestar la generación de matrices de transferencia |
project_to_districts() |
Proyectar estimaciones nacionales a provincias |
setup_electoral_project() |
Crear estructura de un nuevo proyecto |
create_input_template() |
Generar plantilla Excel de entrada |
plot.electo_fit() |
Visualizar resultados de simulación |
summary.electo_fit() |
Estadísticos resumen y probabilidades de victoria |
Formato de Datos de Entrada
La simulación espera un archivo Excel (.xlsx) con estas hojas:
| Hoja | Columnas Requeridas | Descripción |
|---|---|---|
partidos |
recuerdo, idv
|
Mapeo de códigos de partidos (recuerdo → intención) |
mt_simplificada |
idv + columnas de partidos |
Matriz de transferencia con fila N para tamaños de muestra |
patrones |
codigo_provincia, columnas de partidos |
Patrones de voto provincial (proporciones) |
anteriores_elecciones |
recuerdo, votos_ant
|
Resultados de la elección anterior |
n_diputados |
codigo_provincia, n_diputados
|
Escaños por provincia |
retoques (opcional) |
idv, votos_adicionales
|
Ajustes manuales de votos |
small_parties (opcional) |
idv, votos
|
Estimaciones de voto de partidos pequeños |
Usa create_input_template() para generar una plantilla correctamente formateada con datos de ejemplo.
Parámetros
Parámetros clave de run_vota():
| Parámetro | Por defecto | Descripción |
|---|---|---|
uncertainty_method |
"mcmc" |
"mcmc" o "bootstrap"
|
strategy |
"top_down" |
"top_down" o "bottom_up"
|
nsims |
100 |
Número de simulaciones Monte Carlo |
factor_correccion_abstencion |
3 |
Factor de corrección por abstención |
factor_correccion_jovenes |
2.5 |
Factor de corrección por nuevos votantes |
factor_correccion_otbl |
3 |
Factor de corrección por voto otros/blanco |
tiempo_entre_elecciones |
0.1 |
Años entre elecciones (ajuste demográfico) |
tau |
300 |
Concentración Dirichlet para proyección provincial |
umbral |
0.03 |
Umbral mínimo de voto para asignación de escaños (3%) |
tipo_umbral |
"provincial" |
Tipo de umbral: "provincial", "autonomico" o "mixto"
|
interval_level |
0.9 |
Nivel de confianza para intervalos de incertidumbre |
seed |
NULL |
Semilla para reproducibilidad |