El presente trabajo presenta los resultados de las Elecciones Generales, para los años 2015 y 2019. Se analiza la categoría a Gobernador y Vice en la provincia de Entre Ríos, considerando las dos fuerzas políticas con mayor caudal de votos.
La información disponible se la organizó a partir del contexto situado en los procesos de nacionalización y/o desnacionalización, a los efectos de caracterizar la elección desde patrones electorales que pudiesen identificarse.
El objetivo fundamental del trabajo es Interpretar la distribución electoral de las dos fuerzas políticas con mayor caudal de votos en la categoría de gobernador y Vice de la provincia de Entre Ríos, durante los años 2015 y 2019. Para ello, inicialmente se comparan los datos, para avanzar luego en la identificación de las dos fuerzas políticas con mayor caudal de votos.
Los datos espaciales utilizados han sido aportados desde la cátedra de Geografía Política. Por otra parte, los datos de las elecciones han sido obtenidos de la Cámara Nacional Electoral (CNE), y corresponden a una escala de agregación por Circuito Electoral. El dataset con la cantidad de electores, los votos correspondientes a cada opción partidaria, los votos en blanco y los anulados, provienen del Tribunal Electoral de la Provincia de Entre Ríos.
Se analiza el desempeño de las dos principales fuerzas partidarias que obtuvieron mayor cantidad de votos, para 2015 el Frente para la Victoria y Cambiemos, mientras que para 2019 el Frente Justicialista y Cambiemos.
Según la bibliografía consultada, Anselín (1988), Calvo y Escolar (2003, 2005), Scaramella (2015), los análisis de autocorrelación espacial demuestran la existencia o carencia de patrones a través de los votos emitidos en una elección particular.
Por otra parte, los antecedentes en lo que refiere a geoestadística y autocorrelación espacial exponen que, una variable regionalizada cambia su valor de un lugar a otro con algún grado de continuidad, por lo que es posible observar que los registros tomados en puntos vecinos no son independientes en el sentido estadístico, sino que un valor observado en un sitio puede proporcionar información sobre los valores en los sitios que se encuentran cerca. En este sentido, para el presente trabajo se utilizará el Índice de Morán, expresado formalmente mediante la siguiente ecuación:
\[ I = \frac{N}{W} \frac{\sum_i \sum_j w_{ij} (X_i - \bar{X}) (X_j - \bar{X})}{\sum_i (X_i - \bar{X})^2}\]
\[ I = \frac{Covarianza \space ponderada}{Varianza \space de \space los \space valores}\]
Este índice no considera el valor de la unidad central, solo la relación con los vecinos. No es una medida universal, sino que depende del criterio de vecindad seleccionado.
Seguidamente, se aplica el Índice Espacial de Autocorrelación Local (LISA), para observar si existen circuitos que, por sus valores extremos, excluyendo los outliers, presentan un nivel de asociación y, por ende, la existencia de enclaves geográficas con comportamiento electoral similar.
Se instalan los paquetes necesarios para el trabajo:
# Instalar paquetes
#install.packages("sf")
#install.packages("tmap")
#install.packages("tidyverse")
#install.packages("spdep")
Se cargan las siguientes librerías de trabajo:
# Cargar librerías de trabajo
library(sf)
library(tmap)
library(tidyverse)
library(spdep)
library(readxl)
Se carga el dataset con datos espaciales y valores de las votaciones.
# 1ro. Cargar los circuitos electorales con sus datos asociados
ER15grales <- st_read("er15grales.shp")
## Reading layer `er15grales' from data source
## `C:\Users\micaa\OneDrive\Documentos\R\UADER\TP Final Politica Milano - Schonfeld\Geografia_Politica-Milano_Schonfeld\er15grales.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 321 features and 21 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -60.78589 ymin: -34.03878 xmax: -57.80215 ymax: -30.16097
## Geodetic CRS: WGS 84
glimpse(ER15grales)
## Rows: 321
## Columns: 22
## $ gid <dbl> 350, 347, 334, 373, 339, 378, 379, 406, 407, 409, 429, 432,~
## $ distrito <chr> "08", "08", "08", "08", "08", "08", "08", "08", "08", "08",~
## $ provincia <chr> "Entre Ríos", "Entre Ríos", "Entre Ríos", "Entre Ríos", "En~
## $ departamen <chr> "Paraná", "Paraná", "Paraná", "La Paz", "Paraná", "Diamante~
## $ circuito <chr> "c00038", "c00035", "c00016", "c00068", "c00026", "c00080",~
## $ localidad <chr> "El Pingo", "María Grande 1°", "Paraná", "Alcaraz 2°", "Col~
## $ circ_nombr <chr> "El Pingo", "María Grande 1°", "Santa Ana", "Alcaraz 2°", "~
## $ seccion <chr> "s00001", "s00001", "s00001", "s00003", "s00001", "s00004",~
## $ NIVEL <chr> "Provincial", "Provincial", "Provincial", "Provincial", "Pr~
## $ CATEGORIA <chr> "Gobernador", "Gobernador", "Gobernador", "Gobernador", "Go~
## $ vUP <dbl> 30, 19, 1947, 11, 16, 179, 38, 35, 139, 414, NA, 11, 0, 0, ~
## $ vPS <dbl> 6, 1, 525, 3, 3, 21, 0, 3, 5, 68, NA, 1, 5, 0, 10, 783, 30,~
## $ vFPV <dbl> 334, 62, 3132, 168, 26, 485, 175, 166, 108, 1158, NA, 61, 1~
## $ vCAMB <dbl> 196, 127, 4382, 221, 81, 399, 73, 137, 92, 1165, NA, 72, 14~
## $ vBLANCO <dbl> 43, 15, 1061, 27, 15, 100, 44, 37, 9, 1073, NA, 19, 96, 4, ~
## $ POSITIVOS <dbl> 609, 224, 11047, 430, 141, 1184, 330, 378, 353, 3878, 0, 16~
## $ UP <dbl> 4.93, 8.48, 17.62, 2.56, 11.35, 15.12, 11.52, 9.26, 39.38, ~
## $ PS <dbl> 0.99, 0.45, 4.75, 0.70, 2.13, 1.77, 0.00, 0.79, 1.42, 1.75,~
## $ FPV <dbl> 54.84, 27.68, 28.35, 39.07, 18.44, 40.96, 53.03, 43.92, 30.~
## $ CAMB <dbl> 32.18, 56.70, 39.67, 51.40, 57.45, 33.70, 22.12, 36.24, 26.~
## $ BLANCO <dbl> 7.06, 6.70, 9.60, 6.28, 10.64, 8.45, 13.33, 9.79, 2.55, 27.~
## $ geometry <MULTIPOLYGON [°]> MULTIPOLYGON (((-59.9501 -3..., MULTIPOLYGON (~
# 2do. Variables de trabajo
# Eliminar variables innecesarias
ER15grales <- ER15grales[,-2] # Distrito
ER15grales <- ER15grales[,-8] # Sección
# Crear nuevas variables
ER15grales <- ER15grales %>%
rowwise() %>%
mutate(VALIDOS = sum(c_across(13:14))) # Votos Válidos= Votos Positivos + Blancos (+ Recurridos pero no se tiene esa información)
# Calcular porcentajes de votos
ER15grales <- ER15grales %>%
mutate(pUP = ((vUP*100)/VALIDOS)) %>% # Porcentaje Union Popular
mutate(pPS = ((vPS*100)/VALIDOS)) %>% # Porcentaje Partido Socialista
mutate(pFPV = ((vFPV*100)/VALIDOS)) %>% # Porcentaje Frente Para la Victoria
mutate(pCAMB = ((vCAMB*100)/VALIDOS)) %>% # Porcentaje Cambiemos
mutate(pBLANCO = ((vBLANCO*100)/VALIDOS)) %>%
select(gid,provincia,departamen,circuito,localidad,circ_nombr,CATEGORIA,vUP,vPS,vPS,vFPV,vCAMB,vBLANCO,POSITIVOS,VALIDOS,pUP,pPS,pFPV,pCAMB,pBLANCO)
# Eliminar filas con valores nulos
ER15grales <- na.omit(ER15grales)
# 3ro. Cargar los circuitos electorales con sus datos asociados
ER19grales <- st_read("ER19grales.shp")
## Reading layer `er19grales' from data source
## `C:\Users\micaa\OneDrive\Documentos\R\UADER\TP Final Politica Milano - Schonfeld\Geografia_Politica-Milano_Schonfeld\er19grales.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 321 features and 19 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -60.78589 ymin: -34.03878 xmax: -57.80215 ymax: -30.16097
## Geodetic CRS: WGS 84
glimpse(ER19grales)
## Rows: 321
## Columns: 20
## $ circ <chr> "c00038", "c00035", "c00016", "c00068", "c00026", "c00080",~
## $ distrito <chr> "d08", "d08", "d08", "d08", "d08", "d08", "d08", "d08", "d0~
## $ provincia <chr> "ENTRE RIOS", "ENTRE RIOS", "ENTRE RIOS", "ENTRE RIOS", "EN~
## $ seccion <chr> "s00001", "s00001", "s00001", "s00003", "s00001", "s00004",~
## $ departamen <chr> "PARANA", "PARANA", "PARANA", "LA PAZ", "PARANA", "DIAMANTE~
## $ localidad <chr> "EL PINGO", "MARIA GRANDE 1RA", "PARANA", "ALCARAZ 2DO", "C~
## $ circuito <chr> "EL PINGO", "MARIA GRANDE 1RA", "SANTA ANA", "ALCARAZ 2DO",~
## $ mesas19 <chr> "3", "1", "39", "2", "1", "6", "2", "2", "2", "14", "1", "1~
## $ electores1 <chr> "773", "238", "13365", "563", "166", "1764", "409", "426", ~
## $ g19ser <chr> "3", "3", "163", "4", "2", "265", "4", "0", "4", "17", "0",~
## $ g19cver <chr> "1", "4", "449", "1", "4", "10", "5", "0", "14", "8", "0", ~
## $ g19ps <chr> "5", "0", "330", "3", "0", "7", "4", "5", "0", "78", "1", "~
## $ g19ni <chr> "5", "2", "323", "3", "0", "8", "6", "1", "0", "28", "1", "~
## $ g19fj <chr> "361", "65", "5387", "294", "46", "775", "199", "193", "153~
## $ g19camb <chr> "276", "87", "2834", "122", "64", "158", "35", "147", "106"~
## $ g19blancos <chr> "33", "2", "930", "17", "13", "59", "8", "5", "31", "1136",~
## $ g19nulos <chr> "5", "4", "172", "9", "0", "12", "16", "0", "3", "21", "0",~
## $ g19imp <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",~
## $ g19rec <chr> "2", "0", "3", "0", "0", "0", "0", "0", "0", "5", "0", "0",~
## $ geometry <MULTIPOLYGON [°]> MULTIPOLYGON (((-59.9501 -3..., MULTIPOLYGON (~
Se observa que los valores correspondientes a los votos por partido se encuentran con formato “character”, por lo que antes de seguir con la limpieza de los datos, se deben realizar las transformaciones necesarias.
# 4to. Transformar datos "character" a "numeric"
ER19grales$electores1 <- as.numeric(ER19grales$electores1) # Electores
ER19grales$g19ser <- as.numeric(ER19grales$g19ser) # Ser
ER19grales$g19cver <- as.numeric(ER19grales$g19cver) # Confluencia Vecinalista
ER19grales$g19ps <- as.numeric(ER19grales$g19ps) # Partido Socialista
ER19grales$g19ni <- as.numeric(ER19grales$g19ni) # Nueva Izquierda
ER19grales$g19fj <- as.numeric(ER19grales$g19fj) # Frente Justicialista
ER19grales$g19camb <- as.numeric(ER19grales$g19camb) # Cambiemos
ER19grales$g19blancos <- as.numeric(ER19grales$g19blancos) # Votos en Blanco
ER19grales$g19nulos <- as.numeric(ER19grales$g19nulos) # Votos Nulos
ER19grales$g19imp <- as.numeric(ER19grales$g19imp) # Votos Impugnados
ER19grales$g19rec <- as.numeric(ER19grales$g19rec) # Votos Recurridos
glimpse(ER19grales)
## Rows: 321
## Columns: 20
## $ circ <chr> "c00038", "c00035", "c00016", "c00068", "c00026", "c00080",~
## $ distrito <chr> "d08", "d08", "d08", "d08", "d08", "d08", "d08", "d08", "d0~
## $ provincia <chr> "ENTRE RIOS", "ENTRE RIOS", "ENTRE RIOS", "ENTRE RIOS", "EN~
## $ seccion <chr> "s00001", "s00001", "s00001", "s00003", "s00001", "s00004",~
## $ departamen <chr> "PARANA", "PARANA", "PARANA", "LA PAZ", "PARANA", "DIAMANTE~
## $ localidad <chr> "EL PINGO", "MARIA GRANDE 1RA", "PARANA", "ALCARAZ 2DO", "C~
## $ circuito <chr> "EL PINGO", "MARIA GRANDE 1RA", "SANTA ANA", "ALCARAZ 2DO",~
## $ mesas19 <chr> "3", "1", "39", "2", "1", "6", "2", "2", "2", "14", "1", "1~
## $ electores1 <dbl> 773, 238, 13365, 563, 166, 1764, 409, 426, 397, 4569, 14, 1~
## $ g19ser <dbl> 3, 3, 163, 4, 2, 265, 4, 0, 4, 17, 0, 0, 0, 0, 0, 1, 172, 0~
## $ g19cver <dbl> 1, 4, 449, 1, 4, 10, 5, 0, 14, 8, 0, 0, 0, 0, 0, 0, 111, 9,~
## $ g19ps <dbl> 5, 0, 330, 3, 0, 7, 4, 5, 0, 78, 1, 0, 0, 6, 0, 3, 133, 50,~
## $ g19ni <dbl> 5, 2, 323, 3, 0, 8, 6, 1, 0, 28, 1, 0, 1, 5, 0, 6, 266, 17,~
## $ g19fj <dbl> 361, 65, 5387, 294, 46, 775, 199, 193, 153, 1243, 1, 64, 11~
## $ g19camb <dbl> 276, 87, 2834, 122, 64, 158, 35, 147, 106, 1189, 1, 57, 75,~
## $ g19blancos <dbl> 33, 2, 930, 17, 13, 59, 8, 5, 31, 1136, 0, 12, 9, 1, 0, 43,~
## $ g19nulos <dbl> 5, 4, 172, 9, 0, 12, 16, 0, 3, 21, 0, 0, 0, 3, 0, 3, 183, 3~
## $ g19imp <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0,~
## $ g19rec <dbl> 2, 0, 3, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 1, 2, 2, 0, 0,~
## $ geometry <MULTIPOLYGON [°]> MULTIPOLYGON (((-59.9501 -3..., MULTIPOLYGON (~
# 5to. Variables de trabajo
# Eliminar variables innecesarias
ER19grales <- ER19grales[,-2] # Distrito
ER19grales <- ER19grales[,-3] # Sección
ER19grales <- ER19grales[,-6] # Mesas
# Crear nuevas variables
ER19grales <- ER19grales %>%
rowwise() %>%
mutate(positivos = sum(c_across(7:12))) %>% # Votos Positivos
mutate(validos = sum(c_across(7:13))) %>% # Votos Válidos= Votos Positivos + Blancos + Recurridos
mutate(novalidos = sum(c_across(14:16))) %>% # Votos No válidos = Nulos + imputados
mutate(totales = sum(c_across(validos:novalidos))) # Votos Totales
# Calcular porcentajes de votos
ER19grales <- ER19grales %>%
mutate(porcfj = ((g19fj*100)/positivos)) %>% # Porcentaje Frente Justicialista
mutate(porccamb = ((g19camb*100)/positivos)) %>% # Porcentaje Cambiemos
mutate(porcblancos = ((g19blancos*100)/positivos)) # Porcentaje Votos en Blanco
# Eliminar filas con valores nulos
ER19grales <- na.omit(ER19grales)
Identificación de los partidos políticos que conforman las coaliciones electorales en la elección provincial 2015 a nivel Gobernador y Vice.
par(mfrow=c(2, 2))
# UNIÓN POPULAR ---------------------------------------------------------------
hist(ER15grales$pUP,
xlim=c(0,100),
ylim=c(0,0.1),
probability = TRUE, ylab = "", xlab = "% de votos",
col = "grey", main = "Unión Popular")
# Eje
axis(1)
# Densidad
lines(density(ER15grales$pUP), col = "red", lwd = 2)
# Boxplot
par(new = TRUE)
boxplot(ER15grales$pUP, horizontal = TRUE, axes = FALSE,
lwd = 2, col = rgb(0, 1, 1, alpha = 0.15))
# PARTIDO SOCIALISTA ----------------------------------------------------------
hist(ER15grales$pPS,
xlim=c(0,100),
ylim=c(0,0.1),
probability = TRUE, ylab = "", xlab = "% de votos",
col = "grey", main = "Partido Socialista")
# Eje
axis(1)
# Densidad
lines(density(ER15grales$pPS), col = "red", lwd = 2)
# Boxplot
par(new = TRUE)
boxplot(ER15grales$pPS, horizontal = TRUE, axes = FALSE,
lwd = 2, col = rgb(0, 1, 1, alpha = 0.15))
# FRENTE PARA LA VICTORIA ----------------------------------------------------
hist(ER15grales$pFPV,
xlim=c(0,100),
ylim=c(0,0.1),
probability = TRUE, ylab = "", xlab = "% de votos",
col = "grey", main = "Frente para la Victoria")
# Eje
axis(1)
# Densidad
lines(density(ER15grales$pFPV), col = "red", lwd = 2)
# Boxplot
par(new = TRUE)
boxplot(ER15grales$pFPV, horizontal = TRUE, axes = FALSE,
lwd = 2, col = rgb(0, 1, 1, alpha = 0.15))
axis (1, col.axis = "blue")
# CAMBIEMOS ------------------------------------------------------------------
hist(ER15grales$pCAMB,
xlim=c(0,100),
ylim=c(0,0.1),
probability = TRUE, ylab = "", xlab = "% de votos",
col = "grey", main = "Cambiemos")
# Eje
axis(1)
# Densidad
lines(density(ER15grales$pCAMB), col = "red", lwd = 2)
# Boxplot
par(new = TRUE)
boxplot(ER15grales$pCAMB, horizontal = TRUE, axes = FALSE,
lwd = 2, col = rgb(0, 1, 1, alpha = 0.15))
Se observa que las dos fuerzas principales en las elecciones 2015 fueron el “Frente para la Victoria” y “Cambiemos”.
En cuanto al Frente para la Victoria, muestra una media de votos en torno al 40% en cada distrito electoral, con algún que otro donde obtuvo un 75% de los votos (outliers). Tanto la media como la mediana son cercanas, lo que permite estimar que la distribución para estos datos son relativamente simétricos u homogéneos.
— Cabe aclarar que el gráfico correspondiente al Frente para la Victoria debe ser analizado con detenimiento, teniendo en cuenta que el histograma vs. el boxplot difieren en los valores del eje x. Así, los valores pertenecientes al boxplot se encuentran en color azul, ya que no fue posible enmendar dicho error.
par(mfrow=c(1, 2))
# FRENTE PARA LA VICTORIA ----------------------------------------------------
hist(ER15grales$pFPV,
xlim=c(0,100),
ylim=c(0,0.1),
probability = TRUE, ylab = "", xlab = "% de votos",
col = "grey", main = "Frente para la Victoria")
# Eje
axis(1)
# Densidad
lines(density(ER15grales$pFPV), col = "red", lwd = 2)
# Boxplot
par(new = TRUE)
boxplot(ER15grales$pFPV, horizontal = TRUE, axes = FALSE,
lwd = 2, col = rgb(0, 1, 1, alpha = 0.15))
axis (1, col.axis = "blue")
# CAMBIEMOS ------------------------------------------------------------------
hist(ER15grales$pCAMB,
xlim=c(0,100),
ylim=c(0,0.1),
probability = TRUE, ylab = "", xlab = "% de votos",
col = "grey", main = "Cambiemos")
# Eje
axis(1)
# Densidad
lines(density(ER15grales$pCAMB), col = "red", lwd = 2)
# Boxplot
par(new = TRUE)
boxplot(ER15grales$pCAMB, horizontal = TRUE, axes = FALSE,
lwd = 2, col = rgb(0, 1, 1, alpha = 0.15))
Para las elecciones de este año, el análisis revela que las dos fuerzas principales fueron “Frente Justicialista” y “Cambiemos”.
par(mfrow = c(1, 1))
# Histograma
hist(ER19grales$porcfj, probability = TRUE, ylab = "", xlab = "Porcentaje de votos",
col = "grey", main = "Distribución de Votos a Gobernador y Vice para el Frente Justicialista")
# Eje
axis(1)
# Densidad
lines(density(ER19grales$porcfj), col = "red", lwd = 2)
# Boxplot
par(new = TRUE)
boxplot(ER19grales$porcfj, horizontal = TRUE, axes = FALSE,
lwd = 2, col = rgb(0, 1, 1, alpha = 0.15))
Según el análisis realizado para 2019 en la provincia de Entre Ríos, la distribución porcentual de los votos permite observar que el Frente Justicialista obtuvo más votos, dado su breve desplazamiento hacia la derecha, evidenciado por valores mayores al 50%.
par(mfrow = c(1, 1))
# Histograma
hist(ER19grales$porccamb, probability = TRUE, ylab = "", xlab = "% de votos",
col = "grey", axes = FALSE, main = "Distribución de votos a Gobernador y Vice para Cambiemos")
# Eje
axis(1)
# Densidad
lines(density(ER19grales$porccamb), col = "red", lwd = 2)
# Boxplot
par(new = TRUE)
boxplot(ER19grales$porccamb, horizontal = TRUE, axes = FALSE,
lwd = 2, col = rgb(0, 1, 1, alpha = 0.15))
En contraste, la concentración de votos para Cambiemos se inclina hacia la izquierda, con valores en su mayoría menores al 50%, demostrando que son pocos los circuitos en que obtuvo rendimientos superiores al 70%, ya que los mismos se constituyen como outliers.
Seguidamente se observa la cartografía electoral de cada una de las fuerzas principales, expresando los votos obtenidos por cada una en porcentajes. A efectos comparativos, las escalas y colores son idénticas para ambas.
# Frente para la Victoria
tm_shape(ER15grales) +
tm_fill("pFPV", palette = "Reds") +
tm_borders(alpha = 0.1) +
tm_layout(main.title = "Frente para la Victoria", main.title.size = 0.7 ,
legend.position = c("right", "bottom"), legend.title.size = 0.8) +
tm_legend(outside=TRUE)+
tmap_options(check.and.fix = TRUE)
# Cambiemos
tm_shape(ER15grales) +
tm_fill("pCAMB", palette = "Reds") +
tm_borders(alpha = 0.1) +
tm_layout(main.title = "Cambiemos", main.title.size = 0.7 ,
legend.position = c("right", "bottom"), legend.title.size = 0.8) +
tm_legend(outside=TRUE)
# Frente Justicialista
tm_shape(ER19grales) +
tm_fill("porcfj", palette = "Reds") +
tm_borders(alpha = 0.1) +
tm_layout(main.title = "Frente Justicialista", main.title.size = 0.7 ,
legend.position = c("right", "bottom"), legend.title.size = 0.8) +
tm_legend(outside=TRUE)+
tmap_options(check.and.fix = TRUE)
# Cambiemos
tm_shape(ER19grales) +
tm_fill("porccamb", palette = "Reds") +
tm_borders(alpha = 0.1) +
tm_layout(main.title = "Cambiemos", main.title.size = 0.7 ,
legend.position = c("right", "bottom"), legend.title.size = 0.8) +
tm_legend(outside=TRUE)
En línea con Contursi (2022), no se identifican patrones de comportamiento electoral para el Frente para la Victoria ni para el Frente Justicialista, tanto en las elecciones 2015 como en 2019, respectivamente. Si bien es posible identificar una concetración de votos por encima del 40% en los distritos electorales del noroeste de la provincia y, conjuntamente, una tendencia al aumento de votos para el Frente, mas, en lo que respecta al resto del territorio, la amplia variabilidad de datos entre circuitos parecería expresar que no existe una correlación espacial significativa.
En lo que respecta a Cambiemos, Contursi (2022) expresa que los votos obtenidos son complementos en espejo de los obtenidos por el Frente Justicialista. En donde obtuvo pocos votos, su contrincante obtuvo un porcentaje considerable y viceversa. Por lo tanto, tampoco se observa un patrón electoral en la implantación geográfica de los votos propios de Cambiemos.
Para confirmar la afirmación de que no existe un patrón de comportamiento electoral para ninguna de las dos fuerzas políticas principales, se procede a calcular un índice de autocorrelación espacial para cada alianza política, el Índice Global de Moran.
En primera instancia, se construye la estructura del vecindario. Se selecciona la contigüidad física entre los circuitos electorales, el orden de vecindad, privilegiando el diseño tipo reina y la distancia, en este caso entre los centroides de cada circuito electoral.
Se calcula la matriz de pesos espaciales, utilizando como indentificador único el código del circuito electoral. Debido a que la matriz es simétrica, estamos frente a una matriz simétrica de dimensiones 315 x 315.
# Matriz de pesos espaciales
sf_use_s2(FALSE)
x <- poly2nb(ER15grales, row.names = "circuito", queen = TRUE)
summary(x)
## Neighbour list object:
## Number of regions: 315
## Number of nonzero links: 1660
## Percentage nonzero weights: 1.672965
## Average number of links: 5.269841
## Link number distribution:
##
## 1 2 3 4 5 6 7 8 9 10 11 13 14
## 9 13 33 62 71 54 29 21 13 4 4 1 1
## 9 least connected regions:
## 39 87 116 170 208 227 228 235 294 with 1 link
## 1 most connected region:
## 188 with 14 links
Se observan, en el siguiente mapa, los vecinos existentes entre los circuitos electorales.
# Vecinos de 1er. orden y contigüidad tipo Reina.
plot(st_geometry(ER15grales), border="grey")
plot(x, coordinates(as(ER15grales, "Spatial")), add=TRUE, col="blue")
Se continúa con los cálculos para la Matriz de Pesos, en este caso binaria y estandarizada.
# Matriz de pesos binarios
xmatb <- nb2mat(x, style='B')
# Matriz de pesos estandarizada
xmatW <- nb2mat(x, style='W')
# Matriz de pesos en formato ListW
lxb <- nb2listw(x, style='B')
lxb
## Characteristics of weights list object:
## Neighbour list object:
## Number of regions: 315
## Number of nonzero links: 1660
## Percentage nonzero weights: 1.672965
## Average number of links: 5.269841
##
## Weights style: B
## Weights constants summary:
## n nn S0 S1 S2
## B 315 99225 1660 3320 40544
Se aplican los pasos anteriores para los datos 2019.
# Matriz de pesos espaciales
w <- poly2nb(ER19grales, row.names = "circ", queen = TRUE)
summary(w)
## Neighbour list object:
## Number of regions: 316
## Number of nonzero links: 1684
## Percentage nonzero weights: 1.686428
## Average number of links: 5.329114
## Link number distribution:
##
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14
## 9 14 29 64 69 53 33 19 14 6 3 1 1 1
## 9 least connected regions:
## 41 89 117 171 210 229 230 237 295 with 1 link
## 1 most connected region:
## 190 with 14 links
Vecinos existentes entre los circuitos electorales.
# Vecinos de 1er. orden y contigüidad tipo Reina.
plot(st_geometry(ER19grales), border="grey")
plot(w, coordinates(as(ER19grales, "Spatial")), add=TRUE, col="blue")
Matriz de Pesos
# Matriz de pesos binarios
wmatb <- nb2mat(w, style='B')
# Matriz de pesos estandarizada
wmatW <- nb2mat(w, style='W')
# Matriz de pesos en formato ListW
lwb <- nb2listw(w, style='B')
lwb
## Characteristics of weights list object:
## Neighbour list object:
## Number of regions: 316
## Number of nonzero links: 1684
## Percentage nonzero weights: 1.686428
## Average number of links: 5.329114
##
## Weights style: B
## Weights constants summary:
## n nn S0 S1 S2
## B 316 99856 1684 3368 41688
# I-Moran para el Frente para la Victoria
moran.test(ER15grales$pFPV, lxb)
##
## Moran I test under randomisation
##
## data: ER15grales$pFPV
## weights: lxb
##
## Moran I statistic standard deviate = 5.9744, p-value = 1.155e-09
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.201871713 -0.003184713 0.001178037
Considerando que el dominio del Índice de Moran es entre -1 y +1, el valor obtenido para el Frente para la Victoria es de 0.20, por lo tanto, hay ausencia de autocorrelación.
# I-Moran para Cambiemos
moran.test(ER15grales$pCAMB, lxb)
##
## Moran I test under randomisation
##
## data: ER15grales$pCAMB
## weights: lxb
##
## Moran I statistic standard deviate = 6.4475, p-value = 5.685e-11
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.217519865 -0.003184713 0.001171763
Al igual que su antecesor, el valor obtenido para Cambiemos expresa claramente la inexistencia de autocorrelación espacial, 0.21.
# I-Moran para el Frente Justicialista
moran.test(ER19grales$porcfj, lwb)
##
## Moran I test under randomisation
##
## data: ER19grales$porcfj
## weights: lwb
##
## Moran I statistic standard deviate = 2.3873, p-value = 0.008487
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.077964117 -0.003174603 0.001155175
El valor obtenido para el Frente Justicialista es de 0.078, por lo tanto, hay ausencia de autocorrelación, asimismo, el grado de autocorrelación es menor que en las elecciones 2015.
# I-Moran para Cambiemos
moran.test(ER19grales$porccamb, lwb)
##
## Moran I test under randomisation
##
## data: ER19grales$porccamb
## weights: lwb
##
## Moran I statistic standard deviate = 2.8474, p-value = 0.002204
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.093567409 -0.003174603 0.001154332
El valor obtenido para Cambiemos expresa nuevamente la inexistencia de autocorrelación espacial, 0.09.
# Frente para la Victoria
moran.plot(ER15grales$pFPV, lxb, zero.policy=TRUE, labels=as.character(ER15grales$circuito),
main="Diagrama de Dispersión del Frente Justicialista - I-Moran")
# Cambiemos
moran.plot(ER15grales$pCAMB, lxb, zero.policy=TRUE, labels=as.character(ER15grales$circuito),
main="Diagrama de Dispersión de Cambiemos - I-Moran")
# Frente Justicialista
moran.plot(ER19grales$porcfj, lwb, zero.policy=TRUE, labels=as.character(ER19grales$"circ"),
main="Diagrama de Dispersión del Frente Justicialista - I-Moran")
# Cambiemos
moran.plot(ER19grales$porccamb, lwb, zero.policy=TRUE, labels=as.character(ER19grales$"circ"),
main="Diagrama de Dispersión de Cambiemos - I-Moran")
Los valores del vecindario y los porcentajes de votación permiten observar que los datos no siguen ningún patrón particular, sino que se distribuyen aleatoriamente. También, en los gráficos se observa la presencia de una recta de regresión lineal, la inclinación de la misma es el valor del Índice de Moran. Para las elecciones 2015, la inclinación es mínima, a modo de recordatorio 0.078 y 0.09; no obstante, para 2015, con valores de 0.20 y 0.21, la recta se inclina levemente de forma positiva; es decir, indica que hay una mayor autocorrelación; sin embargo, en términos del I de Morán, sigue siendo poco significativa.
Ya se ha concluido que no existe autocorrelación espacial a nivel global. Ahora, se explora si existe la presencia de espacios geográficos asociados a una escala menor. Para ello, se continúa con el índice de Morán, pero, esta vez, en su versión desagregada, Índice Local de Morán.
# Frente para la Victoria
pFPV_lm_lwb <- localmoran(ER15grales$pFPV, lxb)
head(pFPV_lm_lwb)
## Ii E.Ii Var.Ii Z.Ii Pr(z != E(Ii))
## 1 -1.0262666 -0.0323738970 9.9807291 -0.3145997 0.75306557
## 2 -1.9558793 -0.0089855074 2.7810491 -1.1674491 0.24302907
## 3 1.6997446 -0.0076158740 2.3647348 1.1102838 0.26687675
## 4 0.9045792 -0.0007773354 0.2385816 1.8535364 0.06380551
## 5 2.8648975 -0.0318694619 9.8474191 0.9231076 0.35595111
## 6 -0.3004270 -0.0005695234 0.1782197 -0.7102922 0.47752297
# Cambiemos
pCAMB_lm_lwb <- localmoran(ER15grales$pCAMB, lxb)
head(pCAMB_lm_lwb)
## Ii E.Ii Var.Ii Z.Ii Pr(z != E(Ii))
## 1 -1.38704196 -2.358297e-03 0.73070933 -1.6198628 0.1052617
## 2 -1.24627500 -2.685336e-02 8.28643005 -0.4236139 0.6718474
## 3 -0.05187152 -5.152982e-05 0.01602429 -0.4093624 0.6822737
## 4 1.43087785 -2.155503e-02 6.60044564 0.5653396 0.5718428
## 5 2.56389497 -1.942734e-02 6.01793108 1.0530645 0.2923114
## 6 -0.07652642 -7.696265e-04 0.24082146 -0.1543739 0.8773149
Se combinan los datos de Morán Local con los circuitos electorales para mapearlos.
# Frente para la Victoria
moran_map_pFPV <- cbind(ER15grales, pFPV_lm_lwb)
# Cambiemos
moran_map_pCAMB <- cbind(ER15grales, pCAMB_lm_lwb)
Se copian los Valores-P en la variable $p.
# Frente para la Victoria
moran_map_pFPV$p <- moran_map_pFPV$Pr.z....E.Ii..
# Cambiemos
moran_map_pCAMB$p <- moran_map_pCAMB$Pr.z....E.Ii..
Se calculan los cuadrante para los clusters con autocorrelación positiva. Atendiendo a estandarizar los valores para una mejor comparación.
# Frente para la Victoria
z_pFPV <- moran_map_pFPV$pFPV - mean(moran_map_pFPV$pFPV)
lag_pFPV <- lag.listw(lxb, moran_map_pFPV$pFPV)
z_lag_pFPV <-lag_pFPV - mean(lag_pFPV)
quad_FPV <- vector(mode="numeric",length=nrow(moran_map_pFPV))
quad_FPV[z_pFPV > 0 & z_lag_pFPV > 0] <- 1 #alto-alto HH rojo
quad_FPV[z_pFPV > 0 & z_lag_pFPV < 0] <- 2 #alto-bajo HL rosado
quad_FPV[z_pFPV < 0 & z_lag_pFPV > 0] <- 3 #bajo-alto LH celeste
quad_FPV[z_pFPV < 0 & z_lag_pFPV < 0] <- 4 #bajo-bajo LL azul
quad_FPV[moran_map_pFPV$p > 0.05] <- 5 #No Significativo blanco
moran_map_pFPV$quad <- quad_FPV
# Cambiemos
z_pCAMB <- moran_map_pCAMB$pCAMB - mean(moran_map_pCAMB$pCAMB)
lag_pCAMB <- lag.listw(lxb, moran_map_pCAMB$pCAMB)
z_lag_pCAMB <-lag_pCAMB - mean(lag_pCAMB)
quad_CAMB <- vector(mode="numeric",length=nrow(moran_map_pCAMB))
quad_CAMB[z_pCAMB > 0 & z_lag_pCAMB > 0] <- 1 #alto-alto HH rojo
quad_CAMB[z_pCAMB > 0 & z_lag_pCAMB < 0] <- 2 #alto-bajo HL rosado
quad_CAMB[z_pCAMB < 0 & z_lag_pCAMB > 0] <- 3 #bajo-alto LH celeste
quad_CAMB[z_pCAMB < 0 & z_lag_pCAMB < 0] <- 4 #bajo-bajo LL azul
quad_CAMB[moran_map_pCAMB$p > 0.05] <- 5 #No Signifificativo blanco
moran_map_pCAMB$quad <- quad_CAMB
LISA <- c("red", "lightpink","skyblue2","blue", "white")
— Los mapas resultantes se encuentran al final del apartado 2019 a modo de una mejor comparativa.
# Frente Justicialista
porcfj_lm_lwb <- localmoran(ER19grales$porcfj, lwb)
head(porcfj_lm_lwb)
## Ii E.Ii Var.Ii Z.Ii Pr(z != E(Ii))
## 1 0.02983359 -9.903463e-06 0.003079656 0.5377725 0.5907341
## 2 -2.04009247 -2.126580e-02 6.589547792 -0.7864502 0.4316038
## 3 0.07795466 -7.507324e-05 0.023420586 0.5098721 0.6101411
## 4 3.98646442 -2.292582e-02 7.041999077 1.5108813 0.1308187
## 5 0.81234124 -1.940982e-02 6.031861616 0.3386629 0.7348637
## 6 -0.23425632 -1.715786e-03 0.539997873 -0.3164482 0.7516623
# Cambiemos
porccamb_lm_lwb <- localmoran(ER19grales$porccamb, lwb)
head(porccamb_lm_lwb)
## Ii E.Ii Var.Ii Z.Ii Pr(z != E(Ii))
## 1 0.2461393 -0.0009531279 0.2963453 0.4539002 0.6499007
## 2 -1.0991848 -0.0193415504 5.9952176 -0.4410200 0.6591985
## 3 2.1730966 -0.0060926669 1.8984407 1.5815992 0.1137411
## 4 1.6720114 -0.0142967564 4.3956787 0.8043109 0.4212174
## 5 1.5427647 -0.0186563527 5.7985896 0.6484237 0.5167110
## 6 1.2142623 -0.0197015536 6.1447313 0.4977955 0.6186282
Se combinan los datos de Morán Local con los circuitos electorales para mapearlos.
# Frente Justicialista
moran_map_porcfj <- cbind(ER19grales, porcfj_lm_lwb)
# Cambiemos
moran_map_porccamb <- cbind(ER19grales, porccamb_lm_lwb)
Se copian los Valores-P en la variable $p.
# Frente Justicialista
moran_map_porcfj$p <- moran_map_porcfj$Pr.z....E.Ii..
# Cambiemos
moran_map_porccamb$p <- moran_map_porccamb$Pr.z....E.Ii..
Se calculan los cuadrante para los clusters con autocorrelación positiva. Atendiendo a estandarizar los valores para una mejor comparación.
# Frente Justicialista
z_porcfj <- moran_map_porcfj$porcfj - mean(moran_map_porcfj$porcfj)
lag_porcfj <- lag.listw(lwb, moran_map_porcfj$porcfj)
z_lag_porcfj <-lag_porcfj - mean(lag_porcfj)
quad_fj <- vector(mode="numeric",length=nrow(moran_map_porcfj))
quad_fj[z_porcfj > 0 & z_lag_porcfj > 0] <- 1 #alto-alto HH rojo
quad_fj[z_porcfj > 0 & z_lag_porcfj < 0] <- 2 #alto-bajo HL rosado
quad_fj[z_porcfj < 0 & z_lag_porcfj > 0] <- 3 #bajo-alto LH celeste
quad_fj[z_porcfj < 0 & z_lag_porcfj < 0] <- 4 #bajo-bajo LL azul
quad_fj[moran_map_porcfj$p > 0.05] <- 5 #No Significativo blanco
moran_map_porcfj$quad <- quad_fj
# Cambiemos
z_porccamb <- moran_map_porccamb$porccamb - mean(moran_map_porccamb$porccamb)
lag_porccamb <- lag.listw(lwb, moran_map_porccamb$porccamb)
z_lag_porccamb <-lag_porccamb - mean(lag_porccamb)
quad_camb <- vector(mode="numeric",length=nrow(moran_map_porcfj))
quad_camb[z_porccamb > 0 & z_lag_porccamb > 0] <- 1 #alto-alto HH rojo
quad_camb[z_porccamb > 0 & z_lag_porccamb < 0] <- 2 #alto-bajo HL rosado
quad_camb[z_porccamb < 0 & z_lag_porccamb > 0] <- 3 #bajo-alto LH celeste
quad_camb[z_porccamb < 0 & z_lag_porccamb < 0] <- 4 #bajo-bajo LL azul
quad_camb[moran_map_porccamb$p > 0.05] <- 5 #No Signifificativo blanco
moran_map_porccamb$quad <- quad_camb
LISA <- c("red", "lightpink","skyblue2","blue", "white")
Se realiza el mapeo con los datos para LISA 2015.
# Frente para la Victoria
tm_shape(moran_map_pFPV) +
tm_fill(col="quad", palette = LISA, style = "fixed", breaks = c(1,2,3,4,5,6),
labels = c("Alto-Alto", "Bajo-Alto", "Alto-Bajo","Bajo-Bajo", "No significativo"),title="Frente Justicialista 2015 | LISA") +
tm_legend(outside=TRUE)+
tm_borders(col = "Grey")
# Cambiemos
tm_shape(moran_map_pCAMB) +
tm_fill(col="quad", palette = LISA, style = "fixed", breaks = c(1,2,3,4,5,6),
labels = c("Alto-Alto", "Bajo-Alto", "Alto-Bajo","Bajo-Bajo", "No significativo"),title="Cambiemos 2015 | LISA") +
tm_legend(outside=TRUE)+
tm_borders(col = "Grey")
Se realiza el mapeo con los datos para LISA 2019.
# Frente Justicialista
tm_shape(moran_map_porcfj) +
tm_fill(col="quad", palette = LISA, style = "fixed", breaks = c(1,2,3,4,5,6),
labels = c("Alto-Alto", "Bajo-Alto", "Alto-Bajo","Bajo-Bajo", "No significativo"),title="Frente Justicialista 2019 | LISA") +
tm_legend(outside=TRUE)+
tm_borders(col = "Grey")
# Cambiemos
tm_shape(moran_map_porccamb) +
tm_fill(col="quad", palette = LISA, style = "fixed", breaks = c(1,2,3,4,5,6),
labels = c("Alto-Alto", "Bajo-Alto", "Alto-Bajo","Bajo-Bajo", "No significativo"),title="Cambiemos 2019 | LISA") +
tm_legend(outside=TRUE)+
tm_borders(col = "Grey")
Para 2015 el índice local deja a la vista dos clusters de asociación Alto-Alto para el Frente para la Victoria, uno al norte de la provincia conformado por la localidad de San José de Feliciano como centro, rodeado por La Esmeralda, Palo a Pique, Montiel, Atencio, La Hierra, El Cimarrón y Federal. El segundo cluster más al sureste conformado por Médanos, Ñancay y Paranácito, sin incluir la localidad de Ceibas que queda rodeada por los anteriores. En lo que respecta a Cambiemos, los distritos donde obtuvo valores Alto-Alto se concentran en torno a la localidad de Chajarí rodeada por Villa del Rosario, San Pedro y Santa Ana.
Siguiendo la linea temporal, en las elecciones 2019 el circuito electoral correspondiente a Chajarí y sus alrededores, existen grados de asociación Bajo-Bajo para el Frente Justicialista, como una acción en espejo, valores Alto-Alto para Cambiemos. Chajarí, como centro, rodeado de las localidades Colonia Freitas, Mandisoví, Villa del Rosario, San Roque, Santa Ana y Cañada del Cerro, constituye el único cluster durante la elección general a Gobernador de Entre Ríos en 2019. Por lo tanto, observamos que no hay asociaciones significativas en el resto de la provincia (Contursi, 2022).
Atento al análisis de los datos electorales 2015 y 2019, en la Elección General a la candidatura a Gobernador y Vice de la provincia de Entre Ríos, se puede interpretar que no se han detectado patrones de comportamiento electoral con referencia a las dos principales fuerzas políticas; referido al año 2019, se retoma lo concluido por Contursi (2022) en cuanto a la existencia de una alta volatilidad electoral en el territorio provincial por parte de sus ciudadanos.
En tanto, en términos de escala, existe un único cluster que se mantiene en ambas elecciones, ubicado al noreste de la provincia, específicamente, compuesto por la localidad de Chajarí y sus vecinos Mandisoví, Colonia Alemana, Villa del Rosario, San Pedro y Santa Ana. Dicho cluster muestra un creciemiento tanto en superficie como en los votos de 2015 a 2019 con un amplio apoyo a Cambiemos y, por consiguiente un bajo apoyo al Frente Justicialista. No obstante, al ser el único cluster, no presenta asociaciones significativas en el resto de la provincia. A modo de contextualizar, cabe recordar que en las elecciones generales de 2015, el Frente para la Victoria presentó como candidato a Presidente de la Nación a Daniel Scioli, resultando la fuerza más votada en la primera vuelta de las elecciones presidenciales, sin embargo, en la segunda vuelta presidencial, Scioli obtuvo 48,66% ante Mauricio Macri, de la coalición Cambiemos, quien resultó ganador con 51,34%. Por lo tanto, ante la inexistencia de patrones espaciales, puede decirse que los resultados correspondientes a los partidos Frente para la Victoria o Frente Justicialista y Cambiemos no presentan una autocorrelación espacial global, ni local, con excepción del cluster mencionado en los párrafos anteriores.