Vamos a analizar la distribución de los gastos de campaña para las elecciones federales de 2021.
La información que vamos a utilizar se puede descargar en las siguientes ligas:
Para el anális las librerías que vamos a ocupar son
library(dplyr)
library(reactable)
library(ggplot2)
library(plotly)En el caso de la base de datos para los cómputos distritales, éstos vienen desagregadas a nivel casilla.
computos <- read.csv("diputaciones.csv", header=T)
dim(computos)## [1] 163666 38
La base se compone de 163666 casillas y 38 variables. Mostramos las primeras casillas de la base de datos
Nuestro interés es analizar cómo los candidatos ganadores distribuyeron el financiamiento recibido por el INE, por lo que agregamos los votos a nivel distrito federal.
Obtenemos los totales por partidos y coalición a partir del nombre de las variables
partidos <- c("PAN","PRI","PRD","PVEM",'PT','MC','MORENA','PES','RSP',
'FXM','CI','PAN.PRI.PRD','PAN.PRI','PAN.PRD','PRI.PRD',
'PVEM.PT.MORENA','PVEM.PT','PVEM.MORENA','PT.MORENA',
'CNR','VOTOS_NULOS')Después generamos una llave única por distrito federal, construida a partir del nombre de la entidad y número de distrito dentro de la entidad
computos$key <- paste0(computos$NOMBRE_ESTADO, computos$ID_DISTRITO)
var <- c('key')
computos2 <- computos %>% select(all_of(c(var,partidos))) %>%
group_by(key) %>%
summarise_at(vars(PAN:VOTOS_NULOS),sum,na.rm=T)Mostramos la información agregada para los primeros distritos federales
En el caso de la base de datos de los gastos de campaña, éstos se reportaron por candidato.
Para hacer el match de la base de cómputos y gastos creamos, en la base de datos de gastos, la llave creada con el nombre de la entidad y número de distrito federal
gastos$key <- paste0(gastos$ESTADO.ELECCION, gastos$DTTO)Así por ejemplo para la base de datos de gastos, la llave VERACRUZ1 indica las candidaturas aprobadas en el distrito 1 de Veracruz.
gastos[gastos$key=="VERACRUZ1",'SUJETO.OBLIGADO']## [1] "MOVIMIENTO CIUDADANO" "VA POR MEXICO"
## [3] "PARTIDO ENCUENTRO SOLIDARIO" "REDES SOCIALES PROGRESISTAS"
## [5] "JUNTOS HACEMOS HISTORIA" "FUERZA POR MÉXICO"
Una vez agregado los votos por distrito federal programamos una función para obtener la candidatura ganadora, por mayoría relativa, y el número de votos obtenidos .
La distribución de ganadores por coalición o partido se muestra en la siguiente gráfica
Una vez definido el candidato ganador hacemos el match con sus gastos de campaña
Para cuantificar el costo de cada voto ajustamos el siguiente modelo de regresión
model <- lm(num.votos~TOTAL.GASTOS , data = computos3)
summary(model)##
## Call:
## lm(formula = num.votos ~ TOTAL.GASTOS, data = computos3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -58447 -17715 -3868 13510 223583
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.478e+04 7.134e+03 7.678 2.33e-13 ***
## TOTAL.GASTOS 3.182e-02 7.117e-03 4.471 1.11e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 29660 on 298 degrees of freedom
## Multiple R-squared: 0.06286, Adjusted R-squared: 0.05971
## F-statistic: 19.99 on 1 and 298 DF, p-value: 1.109e-05
Y obtenemos la ecuación de la recta ajustada por la regresión
Del modelo ajustado se estima que de cada $1,000 gastados en campañana se obtienen 30 votos.
Por otra parte si ahora consideramos los gastos considerando la coalición y partido
De esta gráfica se observa que la campañana menos redituable fue el pri, pues fue el partido que gastó más sin que esto se tradujera en más votos.
Esto implica la necesidad de hacer un análisis específico por partido ó coalición.
En la base de datos de gastos tenemos la distribución de gastos por candidato, en la siguiente gráfica se muestra algunas gráficas de dispersión de acuerdo con el rubro del tipo de gasto realizado