Introducción
El objetivo de este trabajo es analizar la intención de voto de dos encuestas realizadas en Buenos Aires y Córdoba realizada de las Primarias Abiertas Simultaneas y Obligatorias (PASO) del 9 de agosto del 2015 para la materia Investigación Electoral y de Opinión Pública Aplicada I y II. El resultado de las PASO fue el siguiente:
read_excel("Consigna y materiales TP1/Materiales de referencia/Resultados PASO2015.xlsx",
sheet = "Hoja2") |>
mutate(`Buenos Aires` = paste0(round(`Buenos Aires`*100, 2), "%"),
`Córdoba` = paste0(round(`Córdoba`*100, 2), "%")) |>
kable(format = "html", escape = FALSE) |>
kable_styling(bootstrap_options = "striped", font_size = 14)
| Candidato | Buenos Aires | Córdoba |
|---|---|---|
| Daniel Scioli | 12.74% | 42.63% |
| Mauricio Macri | 33.82% | 21.21% |
| Sergio Massa | 5.6% | 19.38% |
| Margarita Stolbizer | 2.69% | 4.29% |
| Nicolás del Caño | 2.37% | 1.67% |
| Rodriguez Saa | 2.92% | 1.1% |
| Jorge Altamira | 3.49% | 2.21% |
| José Manuel De La Zota | 27.91% | 2.14% |
| Sanz | 2.93% | 1.46% |
| Carrio | 2.76% | 2.03% |
| Otros | 2.77% | 1.89% |
El 25 de octubre (Primera vuelta) y el 22 de noviembre (segunda vuelta) de 2015 se sucedieron las elecciones presidenciales de Argentina. Los principales candidatos fueron Daniel Scioli del Frente para la Victoria (FpV), candidato oficialista, y Mauricio Macri de Cambiemos, entonces jefe de gobierno de la Ciudad de Buenos Aires.
En la primera vuelta electoral, que tuvo lugar el 25 de octubre de 2015, ninguno de los candidatos obtuvo más del 45% de los votos ni una diferencia de más de 10 puntos porcentuales sobre el segundo candidato, lo que llevó a la realización de una segunda vuelta electoral.
Daniel Scioli (FpV): 37.08% de los votos.
Mauricio Macri (Cambiemos): 34.15% de los votos.
Daniel Scioli y Mauricio Macri, se enfrentaron en una segunda vuelta electoral el 22 de noviembre de 2015 lo que llevó al segundo a la victoria con el 51.34% de los votos.
Consigna
Sobre la base de los materiales entregados (Cuestionario y Bases de Resultados de los Estudios Electorales de Córdoba Capital y Base Individuos EPH)
1- Procesar las bases de datos de manera independiente aplicando el método de ponderación iterativa visto en clase (Parámetros en Base EPH).
2- En base a los indicadores relevados evaluar el potencial electoral de los principales candidatos a Presidente (Macri y Scioli)
3- Seleccionar un conjunto de indicadores que den cuenta de al menos dos de las perspectivas teóricas vistas en la bibliografía sobre comportamiento electoral y evaluar el impacto de dichos indicadores en la decisión de voto utilizando al menos dos herramientas de análisis. Comparar los resultados obtenidos entre ambas ciudades.
CORDOBA <- read_sav("Consigna y materiales TP1/Bases de datos/CORDOBA_FINAL.sav")
GBA <- read_sav("Consigna y materiales TP1/Bases de datos/GBA_FINAL.sav")
Análisis Exploratorio
Resumen de los Datos
En este apartado se realizará la manipulación y transformación de datos como así también el análisis exploratorio de ambas bases
Buenos Aires
En una primera apreciación de la base de Buenos Aires se puede observar que existen valores nulos. Estos pueden deberse a respuestas faltantes o preguntas que los encuestados optaron por no responder.
skimr::skim(GBA)
| Name | GBA |
| Number of rows | 373 |
| Number of columns | 20 |
| _______________________ | |
| Column type frequency: | |
| character | 7 |
| factor | 12 |
| numeric | 1 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| voto_candidato | 0 | 1.00 | 7 | 20 | 0 | 8 | 0 |
| voto_acotado | 1 | 1.00 | 7 | 19 | 0 | 5 | 0 |
| jamas_votaria | 2 | 0.99 | 7 | 19 | 0 | 5 | 0 |
| representacion_del_cambio | 0 | 1.00 | 7 | 14 | 0 | 5 | 0 |
| agenda_de_temas | 0 | 1.00 | 6 | 35 | 0 | 6 | 0 |
| percepcion_de_ganador | 0 | 1.00 | 4 | 14 | 0 | 5 | 0 |
| votacion_paso | 0 | 1.00 | 5 | 22 | 0 | 8 | 0 |
Variable type: factor
| skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
|---|---|---|---|---|---|
| edad | 0 | 1.00 | TRUE | 4 | 50-: 168, 30-: 94, 18-: 60, >65: 51 |
| sexo | 0 | 1.00 | TRUE | 2 | Muj: 196, Var: 177 |
| niv_educativo | 0 | 1.00 | TRUE | 5 | Sec: 139, Pri: 80, Ter: 64, Uni: 61 |
| gestion_cristina | 0 | 1.00 | TRUE | 3 | Des: 192, Apr: 145, No : 36 |
| economia_pais_2_anos | 0 | 1.00 | TRUE | 4 | Emp: 177, Mej: 110, Se : 80, No : 6 |
| economia_fliar_2_anos | 3 | 0.99 | TRUE | 4 | Emp: 134, Se : 124, Mej: 103, No : 9 |
| continuidad_o_cambio | 3 | 0.99 | TRUE | 4 | Man: 199, Man: 88, Cam: 73, No : 10 |
| influencia_de_cristina_en_scioli | 83 | 0.78 | TRUE | 4 | Bas: 149, Poc: 74, Nin: 38, No : 29 |
| posicionamiento_espacial | 0 | 1.00 | TRUE | 6 | Ni : 224, No : 47, Más: 39, Tot: 28 |
| posicionamiento_respecto_peronismo | 0 | 1.00 | TRUE | 4 | Ni : 209, Per: 124, Ant: 23, No : 17 |
| posicionamiento_respecto_kirchnerismo | 0 | 1.00 | TRUE | 4 | Ni : 151, Ant: 110, Kir: 100, No : 12 |
| ne_bsas | 0 | 1.00 | TRUE | 3 | Sec: 203, Ter: 90, P. : 80 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| ua | 0 | 1 | 187 | 107.82 | 1 | 94 | 187 | 280 | 373 | ▇▇▇▇▇ |
Córdoba
Al igual que con el df de Buenos Aires, vemos que en el dataframe de Córdoba existen valores nulos.
skimr::skim(CORDOBA)
| Name | CORDOBA |
| Number of rows | 320 |
| Number of columns | 20 |
| _______________________ | |
| Column type frequency: | |
| character | 7 |
| factor | 12 |
| numeric | 1 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| voto_candidato | 0 | 1 | 7 | 20 | 0 | 8 | 0 |
| voto_acotado | 0 | 1 | 7 | 19 | 0 | 5 | 0 |
| jamas_votaria | 0 | 1 | 7 | 19 | 0 | 5 | 0 |
| representacion_del_cambio | 0 | 1 | 7 | 14 | 0 | 5 | 0 |
| agenda_de_temas | 1 | 1 | 6 | 35 | 0 | 6 | 0 |
| percepcion_de_ganador | 0 | 1 | 4 | 14 | 0 | 5 | 0 |
| votacion_paso | 0 | 1 | 5 | 22 | 0 | 8 | 0 |
Variable type: factor
| skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
|---|---|---|---|---|---|
| edad | 0 | 1.00 | TRUE | 4 | 50-: 103, 30-: 96, 18-: 64, >65: 57 |
| sexo | 0 | 1.00 | TRUE | 2 | Muj: 179, Var: 141 |
| niv_educativo | 0 | 1.00 | TRUE | 5 | Uni: 120, Sec: 70, Ter: 58, Ter: 38 |
| gestion_cristina | 0 | 1.00 | TRUE | 3 | Des: 210, Apr: 84, No : 26 |
| economia_pais_2_anos | 3 | 0.99 | TRUE | 4 | Emp: 198, Se : 57, Mej: 48, No : 14 |
| economia_fliar_2_anos | 0 | 1.00 | TRUE | 4 | Emp: 143, Se : 97, Mej: 63, No : 17 |
| continuidad_o_cambio | 0 | 1.00 | TRUE | 4 | Man: 180, Cam: 75, Man: 42, No : 23 |
| influencia_de_cristina_en_scioli | 1 | 1.00 | TRUE | 5 | Muc: 118, Bas: 102, Poc: 47, No : 31 |
| posicionamiento_espacial | 0 | 1.00 | TRUE | 6 | Ni : 202, No : 37, Más: 36, Más: 20 |
| posicionamiento_respecto_peronismo | 0 | 1.00 | TRUE | 4 | Ni : 207, Per: 47, Ant: 34, No : 32 |
| posicionamiento_respecto_kirchnerismo | 0 | 1.00 | TRUE | 4 | Ni : 135, Ant: 124, Kir: 33, No : 28 |
| ne_cba | 0 | 1.00 | TRUE | 3 | Ter: 158, Sec: 128, P. : 34 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| ua | 0 | 1 | 160.5 | 92.52 | 1 | 80.75 | 160.5 | 240.25 | 320 | ▇▇▇▇▇ |
Tratamiento de los valores nulos
Para el tratamiento de los mismos se utilizará el paquete {mice} Multiple Imputation by Chained Equations. Este método imputa los datos faltantes a través de una serie iterativa de modelos predictivos
Buenos Aires
En este subpanel se buscará realizar el tratamiento de los valores nulos de la base de Buenos Aires
GBA %>% visdat::vis_dat(warn_large_data = F)
naniar::gg_miss_var(GBA, show_pct = T)
naniar::gg_miss_upset(GBA,nsets = 10)
Como se puede ver en los gráficos anteriores, la variable que más
posee valores nulos es influencia_de_cristina_en_scioli.
Esta variable no se encuentra relacionada directamente con otras. Por lo
que no se debe a un salto por no completar alguna pregunta de la
encuesta.
# Convierto las variables a factor
df_bsas <- GBA |>
mutate_all(as.factor) |>
mutate(ua = as.numeric(ua))
mice_object <- mice(df_bsas, method = "polyreg")
summary(mice_object)
df_gba_sin_NA <- complete(mice_object)
Mostramos el resultado de la imputación
visdat::vis_miss(df_gba_sin_NA)
Como se puede ver en el gráfico ya no hay valores nulos. Los mismos
fueron imputados satisfactoriamente por mice .
Córdoba
En este subpanel se buscará realizar el tratamiento de los valores nulos de la base de Córdoba
CORDOBA %>% visdat::vis_dat(warn_large_data = F)
naniar::gg_miss_var(CORDOBA, show_pct = T)
naniar::gg_miss_upset(CORDOBA,nsets = 10)
A diferencia del dataset de Buenos Aires, se observa menos cantidad de valores nulos. Se procederá a imputar los mismos:
# Convierto las variables a factor
df_cordoba <- CORDOBA |>
mutate_all(as.factor) |>
mutate(ua = as.numeric(ua))
mice_object <- mice(df_cordoba, method = "polyreg")
summary(mice_object)
df_cordoba_sin_NA <- complete(mice_object)
Mostramos el resultado de la imputación:
visdat::vis_miss(df_cordoba_sin_NA)
Explorando los datos
Buenos Aires
A continuación se analizará el dataset de Buenos Aires.El paquete {Hmisc} permite una buena visualización de la distribución de las variables categóricas. Algunas observaciones:
# analizamos los datos
resumen_gba <- Hmisc::describe(df_gba_sin_NA, transpose = FALSE,tabular = FALSE)
resumen_gba
## df_gba_sin_NA
##
## 20 Variables 373 Observations
## --------------------------------------------------------------------------------
## ua
## n missing distinct Info Mean Gmd .05 .10
## 373 0 373 1 187 124.7 19.6 38.2
## .25 .50 .75 .90 .95
## 94.0 187.0 280.0 335.8 354.4
##
## lowest : 1 2 3 4 5, highest: 369 370 371 372 373
## --------------------------------------------------------------------------------
## edad
## n missing distinct
## 373 0 4
##
## Value 18-29 30-49 50-65 >65
## Frequency 60 94 168 51
## Proportion 0.161 0.252 0.450 0.137
## --------------------------------------------------------------------------------
## sexo
## n missing distinct
## 373 0 2
##
## Value Varón Mujer
## Frequency 177 196
## Proportion 0.475 0.525
## --------------------------------------------------------------------------------
## niv_educativo
## n missing distinct
## 373 0 5
##
## Primario completo (80, 0.214), Secundario incompleto o completo (139, 0.373),
## Terciario no univ. incompleto (64, 0.172), Terciario no univ. completo (29,
## 0.078), Universitario incompleto o completo (61, 0.164)
## --------------------------------------------------------------------------------
## voto_candidato
## n missing distinct
## 373 0 8
##
## Adolfo Rodriguez Saa (2, 0.005), Daniel Scioli (144, 0.386), Margarita
## Stolbizer (15, 0.040), Mauricio Macri (111, 0.298), Nicolas Del Caño (4,
## 0.011), Ninguno / En Blanco (8, 0.021), No Sabe (9, 0.024), Sergio Massa (80,
## 0.214)
## --------------------------------------------------------------------------------
## voto_acotado
## n missing distinct
## 373 0 5
##
## Value Daniel Scioli Mauricio Macri Ninguno / En Blanco
## Frequency 141 119 19
## Proportion 0.378 0.319 0.051
##
## Value No Sabe Sergio Massa
## Frequency 15 79
## Proportion 0.040 0.212
## --------------------------------------------------------------------------------
## jamas_votaria
## n missing distinct
## 373 0 5
##
## Value Daniel Scioli Mauricio Macri Ninguno / En Blanco
## Frequency 165 149 24
## Proportion 0.442 0.399 0.064
##
## Value No Sabe Sergio Massa
## Frequency 19 16
## Proportion 0.051 0.043
## --------------------------------------------------------------------------------
## gestion_cristina
## n missing distinct
## 373 0 3
##
## Value Desaprueba Aprueba No sabe
## Frequency 192 145 36
## Proportion 0.515 0.389 0.097
## --------------------------------------------------------------------------------
## economia_pais_2_anos
## n missing distinct
## 373 0 4
##
## Value Mejoró Empeoró Se mantuvo igual No sabe
## Frequency 110 177 80 6
## Proportion 0.295 0.475 0.214 0.016
## --------------------------------------------------------------------------------
## economia_fliar_2_anos
## n missing distinct
## 373 0 4
##
## Value Mejoró Empeoró Se mantuvo igual No sabe
## Frequency 104 135 125 9
## Proportion 0.279 0.362 0.335 0.024
## --------------------------------------------------------------------------------
## continuidad_o_cambio
## n missing distinct
## 373 0 4
##
## Value Mantener políticas actuales Mantener algunas y cambiar otras
## Frequency 91 199
## Proportion 0.244 0.534
##
## Value Cambiar todas No sabe
## Frequency 73 10
## Proportion 0.196 0.027
## --------------------------------------------------------------------------------
## representacion_del_cambio
## n missing distinct
## 373 0 5
##
## Value Daniel Scioli Mauricio Macri Ninguno No sabe
## Frequency 117 127 28 19
## Proportion 0.314 0.340 0.075 0.051
##
## Value Sergio Massa
## Frequency 82
## Proportion 0.220
## --------------------------------------------------------------------------------
## agenda_de_temas
## n missing distinct
## 373 0 6
##
## lowest : Economía Educacion, asistencia social, salud Empleo No sabe Respeto de instituciones
## highest: Educacion, asistencia social, salud Empleo No sabe Respeto de instituciones Seguridad
## --------------------------------------------------------------------------------
## percepcion_de_ganador
## n missing distinct
## 373 0 5
##
## Value Daniel Scioli Mauricio Macri No sabe Otro
## Frequency 173 95 42 6
## Proportion 0.464 0.255 0.113 0.016
##
## Value Sergio Massa
## Frequency 57
## Proportion 0.153
## --------------------------------------------------------------------------------
## influencia_de_cristina_en_scioli
## n missing distinct
## 373 0 4
##
## Value Ninguna Poca Bastante No sabe
## Frequency 50 80 195 48
## Proportion 0.134 0.214 0.523 0.129
## --------------------------------------------------------------------------------
## posicionamiento_espacial
## n missing distinct
## 373 0 6
##
## Totalmente de izquierda (28, 0.075), Más izquierda que derecha (39, 0.105), Ni
## de izquierda ni de derecha (224, 0.601), Más de derecha que de izquierda (24,
## 0.064), Totalmente de derecha (11, 0.029), No sabe (47, 0.126)
## --------------------------------------------------------------------------------
## posicionamiento_respecto_peronismo
## n missing distinct
## 373 0 4
##
## Value Peronista Antiperonista
## Frequency 124 23
## Proportion 0.332 0.062
##
## Value Ni peronista ni anti peronista No sabe
## Frequency 209 17
## Proportion 0.560 0.046
## --------------------------------------------------------------------------------
## posicionamiento_respecto_kirchnerismo
## n missing distinct
## 373 0 4
##
## Kirchnerista (100, 0.268), Anti kirchnerista (110, 0.295), Ni kirchnerista ni
## anti kirchnerista (151, 0.405), No sabe (12, 0.032)
## --------------------------------------------------------------------------------
## ne_bsas
## n missing distinct
## 373 0 3
##
## Value P. Completa Sec. Comp-Terc. Inc Terc/Univ. Completo
## Frequency 80 203 90
## Proportion 0.214 0.544 0.241
## --------------------------------------------------------------------------------
## votacion_paso
## n missing distinct
## 373 0 8
##
## Blanco / No voto (23, 0.062), Daniel Scioli (133, 0.357), José Manuel De La
## Sota (5, 0.013), Margarita Stolbizer (25, 0.067), Mauricio Macri (79, 0.212),
## Otros (33, 0.088), Rodriguez Saa (7, 0.019), Sergio Massa (68, 0.182)
## --------------------------------------------------------------------------------
La mayoría de los encuestados (45%) se encuentra en el rango de
edad de 50-65 años. El 52% según la variable
sexo es mujer. Respecto al nivel educativo
(niv_educativo) el 37.3% posee secundario, el 29% terciario
completo, el 21% primario completo, el 17.2% Terciario incompleto. Y,
por último, el 16.4% posee Universitario completo o incompleto.
Sobre el voto_candidato el 38.6% tiene intenciones de
votar a Daniel Scioli, el 29.8% a Mauricio Macri y, el 21.4% a Sergio
Massa. En esta misma linea, se obsevan los resultados de
voto_acotado . En jamas_votaria rankea Daniel
Scioli con un 44.2%.
El 51.5% desaprueba la gestion_cristina, para el 47.5%
la economía en estos ultimos dos años empeoró
(economia_pais_2_anos), el 36.2% considera que su economía
familiar empeoro (economia_fliar_2_anos). Sin embargo, para
el 53.6% se debería mantener algunas políticas y cambiar otras y el 24%
piensa que habría que mantener todas las políticas
(continuidad_o_cambio). Sobre este punto, el 34% sostiene
que la representación del cambio
(representacion_del_cambio) está en manos de Mauricio Macri
y el 31.4 de Daniel Scioli
Entre la agenda de temas más mencionados se encuentra: Educación,
Asistencia Social, Salud y Empleo (agenda_de_temas). El
46.4% cree que ganará Daniel Scioli (percepcion_de_ganador)
y el 25.5% Mauricio Macri. En este sentido, el 52.5% considera que hay
influencia de CFK sobre Daniel Scioli
(influencia_de_cristina_en_scioli)
En relación con el posicionamiento de los encuestados: El 60% no se
considera ni de izquierda ni de derecha
(posicionamiento_espacial) y el 56% no se define ni como
peronista ni antiperonista
(posicionamiento_respecto_peronismo). Lo mismo sucede con
el posicionamiento respecto al kirchnerismo, el 40.5% no se considera K
ni antiK, el 29% es antiK y el 26.8% es K
Sobre qué votaron en las PASO, el 35.7% votó a Daniel Scioli y el 21.2% a Mauricio Macri
df_categoricas <- df_gba_sin_NA %>%
select_if(is.factor)
# Creo una lista
lista_graficos <- list()
# Armo un loop para graficar todos
for (col in names(df_categoricas)) {
# Calculamos la frecuencia de cada
frecuencias <- df_gba_sin_NA %>%
count(!!sym(col), voto_acotado ) %>%
group_by(voto_acotado) %>%
mutate(porcentaje = n / sum(n) * 100)
# Graficamos
grafico_barras_apilados <- ggplot(frecuencias, aes(x = reorder(!!sym(col), -porcentaje), y = porcentaje, fill = as.factor(voto_acotado))) +
geom_bar(position = 'dodge',stat = "identity") +
labs(title = NULL, x = col, y = " ", fill = "Voto Acotado") +
guides(fill = guide_legend(title = " ")) +
scale_fill_brewer(palette = "Set3") +#
theme_minimal() +
theme(axis.text.x = element_text(hjust = 1, size = 5, angle = 45),
axis.text.x.top = element_text(hjust = 1, size = 5,angle = 45),
axis.text.y = element_text(size = 5),
legend.position = 'top',
legend.text = element_text(size = 4),
legend.key.size = unit(0.4, 'cm'), # es para los cuadraditos
legend.key.width = unit(0.4, 'cm')
) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 10))
# Guardo los gráficos en la lista
lista_graficos[[col]] <- grafico_barras_apilados
}
# Armamos varias grillas para que no se apelmace
num_grillas <- ceiling(length(lista_graficos) / 6)
grillas <- lapply(1:num_grillas, function(i) {
inicio <- (i - 1) * 6 + 1
fin <- min(i * 6, length(lista_graficos))
grid.arrange(grobs = lista_graficos[inicio:fin], ncol = 2)
})
En este gráfico se muestra por variable la distribución del
voto_acotado . En relación con las variables
sociodemográficas podemos decir que dentro del rango de edad
50-65 el “No sabe” lidera las respuestas, en segundo lugar Mauricio
Macri y tercero Daniel Scioli. Entre los 18-29 años el voto en blanco o
ninguno tiene mayor proporcion. Daniel Scioli tiene mayor proporción de
Voto Femenino, y Sergio Massa masculino. Y, Sergio Massa lidera entre
los que poseen secundario completo o incompleto y universitario y
terciario está parejo entre Macri y Scioli
Respecto a las variables económicas: Quienes desaprueban la gestión
cristina en mayor medida votarán a Mauricio Macri y, entre quienes la
aprueban votarána a Daniel Scioli (gestion_cristina). En el
mismo sentido, quienes consideran que su situación económica empeoró
(economia_pais_2_anos y economia_fliar_2_anos)
votarán a la oposición y, a la inversa, al oficialismo
Córdoba
A continuación se analizará el dataset de Córdoba.
resumen_cba <- Hmisc::describe(df_cordoba_sin_NA, transpose = FALSE,tabular = FALSE)
resumen_cba
## df_cordoba_sin_NA
##
## 20 Variables 320 Observations
## --------------------------------------------------------------------------------
## ua
## n missing distinct Info Mean Gmd .05 .10
## 320 0 320 1 160.5 107 16.95 32.90
## .25 .50 .75 .90 .95
## 80.75 160.50 240.25 288.10 304.05
##
## lowest : 1 2 3 4 5, highest: 316 317 318 319 320
## --------------------------------------------------------------------------------
## edad
## n missing distinct
## 320 0 4
##
## Value 18-29 30-49 50-65 >65
## Frequency 64 96 103 57
## Proportion 0.200 0.300 0.322 0.178
## --------------------------------------------------------------------------------
## sexo
## n missing distinct
## 320 0 2
##
## Value Varón Mujer
## Frequency 141 179
## Proportion 0.441 0.559
## --------------------------------------------------------------------------------
## niv_educativo
## n missing distinct
## 320 0 5
##
## Primario completo (34, 0.106), Secundario incompleto o completo (70, 0.219),
## Terciario no univ. incompleto (58, 0.181), Terciario no univ. completo (38,
## 0.119), Universitario incompleto o completo (120, 0.375)
## --------------------------------------------------------------------------------
## voto_candidato
## n missing distinct
## 320 0 8
##
## Adolfo Rodriguez Saa (7, 0.022), Daniel Scioli (75, 0.234), Margarita Stolbizer
## (13, 0.041), Mauricio Macri (150, 0.469), Nicolas Del Caño (5, 0.016), Ninguno
## / En Blanco (14, 0.044), No Sabe (13, 0.041), Sergio Massa (43, 0.134)
## --------------------------------------------------------------------------------
## voto_acotado
## n missing distinct
## 320 0 5
##
## Value Daniel Scioli Mauricio Macri Ninguno / En Blanco
## Frequency 74 155 24
## Proportion 0.231 0.484 0.075
##
## Value No Sabe Sergio Massa
## Frequency 20 47
## Proportion 0.062 0.147
## --------------------------------------------------------------------------------
## jamas_votaria
## n missing distinct
## 320 0 5
##
## Value Daniel Scioli Mauricio Macri Ninguno / En Blanco
## Frequency 203 77 13
## Proportion 0.634 0.241 0.041
##
## Value No Sabe Sergio Massa
## Frequency 15 12
## Proportion 0.047 0.038
## --------------------------------------------------------------------------------
## gestion_cristina
## n missing distinct
## 320 0 3
##
## Value Desaprueba Aprueba No sabe
## Frequency 210 84 26
## Proportion 0.656 0.262 0.081
## --------------------------------------------------------------------------------
## economia_pais_2_anos
## n missing distinct
## 320 0 4
##
## Value Mejoró Empeoró Se mantuvo igual No sabe
## Frequency 48 199 59 14
## Proportion 0.150 0.622 0.184 0.044
## --------------------------------------------------------------------------------
## economia_fliar_2_anos
## n missing distinct
## 320 0 4
##
## Value Mejoró Empeoró Se mantuvo igual No sabe
## Frequency 63 143 97 17
## Proportion 0.197 0.447 0.303 0.053
## --------------------------------------------------------------------------------
## continuidad_o_cambio
## n missing distinct
## 320 0 4
##
## Value Mantener políticas actuales Mantener algunas y cambiar otras
## Frequency 42 180
## Proportion 0.131 0.562
##
## Value Cambiar todas No sabe
## Frequency 75 23
## Proportion 0.234 0.072
## --------------------------------------------------------------------------------
## representacion_del_cambio
## n missing distinct
## 320 0 5
##
## Value Daniel Scioli Mauricio Macri Ninguno No sabe
## Frequency 55 151 36 31
## Proportion 0.172 0.472 0.112 0.097
##
## Value Sergio Massa
## Frequency 47
## Proportion 0.147
## --------------------------------------------------------------------------------
## agenda_de_temas
## n missing distinct
## 320 0 6
##
## lowest : Economía Educacion, asistencia social, salud Empleo No sabe Respeto de instituciones
## highest: Educacion, asistencia social, salud Empleo No sabe Respeto de instituciones Seguridad
## --------------------------------------------------------------------------------
## percepcion_de_ganador
## n missing distinct
## 320 0 5
##
## Value Daniel Scioli Mauricio Macri No sabe Otro
## Frequency 117 120 55 7
## Proportion 0.366 0.375 0.172 0.022
##
## Value Sergio Massa
## Frequency 21
## Proportion 0.066
## --------------------------------------------------------------------------------
## influencia_de_cristina_en_scioli
## n missing distinct
## 320 0 5
##
## Value Ninguna Poca Bastante Mucha No sabe
## Frequency 21 47 102 119 31
## Proportion 0.066 0.147 0.319 0.372 0.097
## --------------------------------------------------------------------------------
## posicionamiento_espacial
## n missing distinct
## 320 0 6
##
## Totalmente de izquierda (15, 0.047), Más izquierda que derecha (36, 0.112), Ni
## de izquierda ni de derecha (202, 0.631), Más de derecha que de izquierda (20,
## 0.062), Totalmente de derecha (10, 0.031), No sabe (37, 0.116)
## --------------------------------------------------------------------------------
## posicionamiento_respecto_peronismo
## n missing distinct
## 320 0 4
##
## Value Peronista Antiperonista
## Frequency 47 34
## Proportion 0.147 0.106
##
## Value Ni peronista ni anti peronista No sabe
## Frequency 207 32
## Proportion 0.647 0.100
## --------------------------------------------------------------------------------
## posicionamiento_respecto_kirchnerismo
## n missing distinct
## 320 0 4
##
## Kirchnerista (33, 0.103), Anti kirchnerista (124, 0.388), Ni kirchnerista ni
## anti kirchnerista (135, 0.422), No sabe (28, 0.088)
## --------------------------------------------------------------------------------
## votacion_paso
## n missing distinct
## 320 0 8
##
## Blanco / No voto (23, 0.072), Daniel Scioli (53, 0.166), José Manuel De La Sota
## (31, 0.097), Margarita Stolbizer (18, 0.056), Mauricio Macri (104, 0.325),
## Otros (33, 0.103), Rodriguez Saa (25, 0.078), Sergio Massa (33, 0.103)
## --------------------------------------------------------------------------------
## ne_cba
## n missing distinct
## 320 0 3
##
## Value P. Completa Sec. Comp-Terc. Inc Terc/Univ. Completo
## Frequency 34 128 158
## Proportion 0.106 0.400 0.494
## --------------------------------------------------------------------------------
En primer lugar, gracias a la imputación ya no hay valores nulos
dentro del df. En total hay 273 observaciones. Al igual que como sucede
en Buenos Aires, la mayoría de las personas encuestadas
pertenecen se encuentran entre 30 y 65 años (edad) y, su
sexo corresponde a mujer (55.9%). El nivel educativo
predominante es universitario completo o incompleto
(niv_educativo).
En voto_candidato el 46.9% votaría a Mauricio Macri y el
23.4% a Daniel Scioli. Esta distribución se mantiene en
voto_acotado . Además, el 63.4% jamás votaría a Daniel
Scioli y el 24.1% a Mauricio Macri.
En relación con la gestión del Gobierno de Cristina
(gestion_cristina) 65.6% de los cordobeses encuestados la
desaprueba y el 62.2% considera que la situación económica del país
empeoró en los últimos dos años (economia_pais_2_anos). No
obstante, si bien el 44% de los encuestados cree que su situación
económica familiar empeoró, el 30% considera que no hubo cambio
(economia_fliar_2_anos)
Al respecto de la continuidad de las políticas de gobierno para el
56.2% se debería mantener algunos y modificar otras
(continuidad_o_cambio). En esta línea, para el 47.2% la
imagen del cambio es Mauricio Macri
(representacion_del_cambio). Los temas mas importantes más
elegidos son: Educación, Asistencia Social, Salud y Empleo
(agenda_de_temas)
Para el 37.5 % el ganador será Mauricio Macri y para el 36.6% será
Daniel Scioli (percepcion_de_ganador). En linea, el 37.2%
considera que hay influencia de CFK en Daniel Scioli
(influencia_de_cristina_en_scioli)
Sobre la posición ideológica de los encuestados:
El 63.1% no se considera ni de izquierda ni de derecha (
posicionamiento_espacial)El 64.7% no es ni peronista ni antiperonista (
posicionamiento_respecto_peronismo)El 42.2% no es K ni AntiK, pero el 38.8% se considera antikirchnerista (
posicionamiento_respecto_kirchnerismo)
Por último, en las PASO el 32.5 votó a Mauricio Macri, y el 16.6% a
Daniel Scioli (votacion_paso)
df_categoricas <- df_cordoba_sin_NA %>%
select_if(is.factor)
# Creo una lista
lista_graficos <- list()
# Armo un loop para graficar todos
for (col in names(df_categoricas)) {
# Calculamos la frecuencia de cada
frecuencias <- df_cordoba_sin_NA %>%
count(!!sym(col), voto_acotado ) %>%
group_by(voto_acotado) %>%
mutate(porcentaje = n / sum(n) * 100)
# Graficamos
grafico_barras_apilados <- ggplot(frecuencias, aes(x = reorder(!!sym(col), -porcentaje), y = porcentaje, fill = as.factor(voto_acotado))) +
geom_bar(position = 'dodge',stat = "identity") +
labs(title = NULL, x = col, y = " ", fill = "Voto Acotato") +
guides(fill = guide_legend(title = " ")) +
scale_fill_brewer(palette = "Set3") +#
theme_minimal() +
theme(axis.text.x = element_text(hjust = 1, size = 5, angle = 45),
axis.text.x.top = element_text(hjust = 1, size = 5,angle = 45),
axis.text.y = element_text(size = 5),
legend.position = 'top',
legend.text = element_text(size = 4),
legend.key.size = unit(0.4, 'cm'), # es para los cuadraditos
legend.key.width = unit(0.4, 'cm')
) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 10))
# Guardo los gráficos en la lista
lista_graficos[[col]] <- grafico_barras_apilados
}
# Armamos varias grillas para que no se apelmace
num_grillas <- ceiling(length(lista_graficos) / 6)
grillas <- lapply(1:num_grillas, function(i) {
inicio <- (i - 1) * 6 + 1
fin <- min(i * 6, length(lista_graficos))
grid.arrange(grobs = lista_graficos[inicio:fin], ncol = 2)
})
En este gráfico se muestra por variable la distribución del
voto_acotado . En relación con las variables
sociodemográficas podemos decir que: Daniel Scioli será más
votado por el rango 30-49 años y Macri por 50-65, Sergio Massa tiene
mayor proporción de Voto Femenino, al igual que Mauricio Macri. Y,
Daniel Scioli lidera entre los universitaruis y Mauricio Macri entre los
que poseen secundario completo o incompleto. Respecto a las variables
económicas y de gestión, las respuestas van en línea con lo visto en
Buenos Aires
Ponderación iterativa
El método de ponderación iterativa consiste en ajustar los valores asignados a cada observación . De esta manera, lo que se busca es corregir el error de muestreo y hacer coincidir la muestra con las características de la población. Para ello, es necesario aumentar la influencia de las unidades subrepresentadas y disminuir la influencia de las unidades sobrerrepresentadas.
Para dicha tarea se utilizará el paquete {anesrake} que permite realizar la calibración (o ajuste) de las muestras a partir de objetivos de población conocidos Aquí se puede acceder a la fuente. Se trata de una función que implementa el método de calibración iterativa.
El método de calibración iterativa se repite varias veces hasta que se alcanza la convergencia. En cada iteración, los pesos de la muestra se ajustan para que las proporciones de las variables calibradas se acerquen a las proporciones de la población objetivo. Luego, se utilizan estos nuevos pesos ajustados para calcular las proporciones nuevamente, y el proceso se repite hasta que las proporciones convergen a los valores deseados
A diferencia de paquetes como {survey} con {anesrake} no es necesario tener un diseño de muestreo creado previamente para utilizarlo sino que puede realizarse directamente con la base de encuestas y definir los objetivos de calibración en forma de una lista.
Para dicha tarea se utilizarán las variables sexo,
edad y niv_educativo . A continuación se
obtienen los valores poblacionales de la Encuesta Permanente de
Hogares - EPH del año 2015 en función de estas variables
demográficas
# cargo archivos
ponderador_sexo <- read_xlsx("Consigna y materiales TP1/Materiales de referencia/Sociodemograficos.xlsx",sheet = "sexo")
ponderador_edad <- read_xlsx("Consigna y materiales TP1/Materiales de referencia/Sociodemograficos.xlsx",sheet = "edad")
ponderador_educa <- read_xlsx("Consigna y materiales TP1/Materiales de referencia/Sociodemograficos.xlsx",sheet = "educa")
Buenos Aires
# listado de ponderadores
targets_baires <- list(pon_sexo_baires,pon_edad_baires,pon_educ_baires)
# nombres del df
names(targets_baires) <- c("sexo","edad","ne_bsas")
# muestro los ponderadores
targets_baires
## $sexo
## Varón Mujer
## 0.479009 0.520991
##
## $edad
## 18-29 30-49 50-65 >65
## 0.2524552 0.4031634 0.2174784 0.1269029
##
## $ne_bsas
## P. Completa Sec. Comp-Terc. Inc Terc/Univ. Completo
## 0.3258950 0.4614199 0.2126851
base_baires <- as.data.frame(df_gba_sin_NA)
# creo ponderacion_eph con anesrake
weights_baires <- anesrake(inputter = targets_baires, dataframe = base_baires, caseid = base_baires$ua, type = "nolim")
## [1] "Raking converged in 31 iterations"
# unimos
base_baires$ponderacion_eph <- unlist(weights_baires[1])
print(paste("la cantidad de iteraciones necesarias para realizar la ponderación de la muestra fue de", weights_baires$iterations, "iteraciones"))
## [1] "la cantidad de iteraciones necesarias para realizar la ponderación de la muestra fue de 31 iteraciones"
La base_baires fue ponderada en 31 iteraciones.
Observamos la distribución en función de la variable
voto_acotado
df_gba_summary <- base_baires %>%
group_by(voto_acotado) %>%
summarise(n = n_distinct(ua),
n_pond = sum(ponderacion_eph)) %>%
mutate(prop_n = (n / sum(n))*100,
prop_pond = (n_pond / sum(n_pond))*100) %>%
pivot_longer(cols = c(prop_n, prop_pond), names_to = "Tipo de ponderación", values_to = "Porcentaje") %>%
mutate(`Tipo de ponderación` = ifelse(`Tipo de ponderación` == "prop_n", "No Ponderado", "Ponderado"))
# Graficamos
ggplot(df_gba_summary, aes(x = voto_acotado, y = Porcentaje, fill = `Tipo de ponderación`)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Voto acotado ponderado y sin ponderar",
x = "Voto acotado",
y = "Porcentaje",
fill = "Tipo de muestra") +
scale_y_continuous(labels = scales::percent_format(scale = 1)) + scale_fill_brewer(palette = "Accent") +
theme_light() +
scale_fill_brewer(palette = "Set3")
Córdoba
Repetimos el procedimiento con el df de Córdoba:
# creo la lista de ponderadores
targets_cordoba <- list(pon_sexo_cordoba,pon_edad_cordoba,pon_educ_cordoba)
# pongo los mismos nombres de las variables del df
names(targets_cordoba) <- c("sexo","edad","ne_cba")
# los ponderadores para iterar
targets_cordoba
## $sexo
## Varón Mujer
## 0.4667904 0.5332096
##
## $edad
## 18-29 30-49 50-65 >65
## 0.2817004 0.3795721 0.2026046 0.1361230
##
## $ne_cba
## P. Completa Sec. Comp-Terc. Inc Terc/Univ. Completo
## 0.2382054 0.3958940 0.3659006
base_cordoba <- as.data.frame(df_cordoba_sin_NA)
# creo ponderacion_eph con anesrake
weights_cordoba <- anesrake(inputter = targets_cordoba, dataframe = base_cordoba, caseid = base_cordoba$ua, type = "nolim")
## [1] "Raking converged in 23 iterations"
print(paste("la cantidad de iteraciones necesarias para realizar la ponderación de la muestra fue de", weights_cordoba$iterations, "iteraciones"))
## [1] "la cantidad de iteraciones necesarias para realizar la ponderación de la muestra fue de 23 iteraciones"
# unimos
base_cordoba$ponderacion_eph <- unlist(weights_cordoba[1])
Vemos que se necesitaron 23 iteraciones para ponderar nuestra
muestra. A continuación se muestra la nueva distribución población en
función de la variable voto_acotado
df_cba_summary <- base_cordoba %>%
group_by(voto_acotado) %>%
summarise(n = n_distinct(ua),
n_pond = sum(ponderacion_eph)) %>%
mutate(prop_n = (n / sum(n))*100,
prop_pond = (n_pond / sum(n_pond))*100) %>%
pivot_longer(cols = c(prop_n, prop_pond), names_to = "Tipo de ponderación", values_to = "Porcentaje") %>%
mutate(`Tipo de ponderación` = ifelse(`Tipo de ponderación` == "prop_n", "No Ponderado", "Ponderado"))
# Graficamos
ggplot(df_cba_summary, aes(x = voto_acotado, y = Porcentaje, fill = `Tipo de ponderación`)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Comparación entre el Voto Acotado ponderado y sin ponderar",
x = "Voto acotado",
y = "Porcentaje",
fill = "Tipo de muestra") +
scale_y_continuous(labels = scales::percent_format(scale = 1)) +
theme_minimal() +
scale_fill_brewer(palette = "Set3")
Potencial Electoral
En este apartado se buscará evaluar el potencial electoral de los principales candidatos a Presidente (Macri y Scioli) mediante la técnica de pisos y techos.
Cálculo del voto Potencial
Se entiende por voto potencial a la estimación del porcentaje máximo de votos que un candidato podría obtener en una elección. Para calcular el voto potencial, se consideran tres grupos de votantes:
Votantes Seguros: Son aquellos que ya han manifestado su intención de votar por un candidato específico y no cambiarán su elección. Para calcular esto se utilizarán las variables
voto_acotadoyvoto_cantidatoVotantes Indecisos: Son aquellos que aún no han decidido por quién votar y están considerando diferentes opciones.
Votantes que No Votarían: Son aquellos que han manifestado que no votarían por un candidato específico bajo ninguna circunstancia. Para ello, se utilizará la variable
jamas_votaría
El voto potencial se calcula restando el porcentaje de votantes que no votarían del 100% y luego restando el porcentaje de votantes seguros. Es decir:
| Voto Potencial = 100% - Porcentaje de Votantes No Votarían - Porcentaje de Votantes Seguros |
El resultado es el porcentaje máximo de votos que un candidato podría obtener si lograra atraer a todos los votantes indecisos. .
Buenos Aires
En primer lugar, se crea la variable voto_final
imputando los valores de voto_acotado para aquellos casos
en donde el encuestado No sabe
#unique(base_baires$voto_candidato)
df_potencial_ba <- base_baires |>
mutate(voto_final = ifelse(voto_candidato == "No Sabe", voto_acotado, voto_candidato),
voto_final = case_when(
voto_final == 1 ~ "Daniel Scioli",
voto_final == 2 ~ "Mauricio Macri",
voto_final == 3 ~ "Sergio Massa",
voto_final == 4 ~ "Margarita Stolbizer",
voto_final == 5 ~ "Nicolas Del Caño",
voto_final == 6 ~ "Adolfo Rodriguez Saa",
voto_final == 8 ~ "Ninguno / En Blanco",
voto_final == 9 ~ "No Sabe"))
# Calculamos la intención de voto
#piso
df_baires_intencion <- df_potencial_ba %>%
group_by(voto_final) %>%
summarise(tot = sum(ponderacion_eph)) |>
mutate(porcentaje_votaria = (tot/sum(df_potencial_ba$ponderacion_eph))*100) %>%
arrange(desc(porcentaje_votaria)) |>
rename("candidato" = voto_final) |>
select(-tot)
#techo
df_baires_techo <- df_potencial_ba %>%
group_by(jamas_votaria) %>%
summarise(tot = sum(ponderacion_eph)) |>
mutate(porcentaje_nunca_votaria = (tot/sum(df_potencial_ba$ponderacion_eph))*100) |>
rename("candidato" = jamas_votaria)|>
select(-tot)
#unimos
df_pe_gba <- left_join(df_baires_techo, df_baires_intencion, by = "candidato")
#potencial
df_pe_gba <-df_pe_gba |>
mutate(porcentaje_potencial = 100-(porcentaje_votaria+porcentaje_nunca_votaria))
# Filtramos por los candidatos solicitados
df_pe_gba <- df_pe_gba %>%
filter(candidato %in% c("Daniel Scioli", "Mauricio Macri"))
# Seleccionar columnas relevantes para el gráfico
cols <- c("porcentaje_votaria", "porcentaje_potencial", "porcentaje_nunca_votaria")
# Graficamos
df_pe_gba |>
pivot_longer(cols, names_to = "tipo_voto",values_to = "prop") |> ggplot() +
aes(x = candidato, y = prop, fill = tipo_voto,label = paste0(round(prop, 1), "%")) +
geom_col() +
scale_fill_manual(values = c(porcentaje_nunca_votaria = "#9E0142",
porcentaje_potencial = "#81CBA6", porcentaje_votaria = "#5E4FA2")) +
labs(x = " ", y = " ", title = "Potencial electoral Buenos Aires",
subtitle = "Mauricio Macri y Daniel Scioli - 2015", fill = "Tipo de voto") +
coord_flip() +
theme_light() +
theme(legend.position = "top", plot.title = element_text(size = 15L, hjust = 0.5), plot.subtitle = element_text(size = 13L,
face = "bold", hjust = 0.5)) +
geom_text(position = position_stack(vjust = 0.5), size = 4, color = "black")
Córdoba
#unique(base_baires$voto_candidato)
df_potencial_cba <- base_cordoba |>
mutate(voto_final = ifelse(voto_candidato == "No Sabe", voto_acotado, voto_candidato),
voto_final = case_when(
voto_final == 1 ~ "Daniel Scioli",
voto_final == 2 ~ "Mauricio Macri",
voto_final == 3 ~ "Sergio Massa",
voto_final == 4 ~ "Margarita Stolbizer",
voto_final == 5 ~ "Nicolas Del Caño",
voto_final == 6 ~ "Adolfo Rodriguez Saa",
voto_final == 8 ~ "Ninguno / En Blanco",
voto_final == 9 ~ "No Sabe"))
# Calculamos la intención de voto
#piso
df_cordoba_intencion <- df_potencial_cba %>%
group_by(voto_final) %>%
summarise(tot = sum(ponderacion_eph)) |>
mutate(porcentaje_votaria = (tot/sum(df_potencial_cba$ponderacion_eph))*100) %>%
arrange(desc(porcentaje_votaria)) |>
rename("candidato" = voto_final) |>
select(-tot)
#techo
df_cordoba_techo <- df_potencial_cba %>%
group_by(jamas_votaria) %>%
summarise(tot = sum(ponderacion_eph)) |>
mutate(porcentaje_nunca_votaria = (tot/sum(df_potencial_ba$ponderacion_eph))*100) |>
rename("candidato" = jamas_votaria)|>
select(-tot)
#unimos
df_pe_cba <- left_join(df_cordoba_techo, df_cordoba_intencion, by = "candidato")
#potencial
df_pe_cba <-df_pe_cba |>
mutate(porcentaje_potencial = 100-(porcentaje_votaria+porcentaje_nunca_votaria))
# Filtramos por los candidatos solicitados
df_pe_cba <- df_pe_cba %>%
filter(candidato %in% c("Daniel Scioli", "Mauricio Macri"))
# Seleccionar columnas relevantes para el gráfico
cols <- c("porcentaje_votaria", "porcentaje_potencial", "porcentaje_nunca_votaria")
# Graficamos
df_pe_cba |>
pivot_longer(cols, names_to = "tipo_voto",values_to = "prop") |> ggplot() +
aes(x = candidato, y = prop, fill = tipo_voto,label = paste0(round(prop, 1), "%")) +
geom_col() +
scale_fill_manual(values = c(porcentaje_nunca_votaria = "#9E0142",
porcentaje_potencial = "#81CBA6", porcentaje_votaria = "#5E4FA2")) +
labs(x = " ", y = " ", title = "Potencial electoral Córdoba",
subtitle = "Mauricio Macri y Daniel Scioli - 2015", fill = "Tipo de voto") +
coord_flip() +
theme_light() +
theme(legend.position = "top", plot.title = element_text(size = 15L, hjust = 0.5), plot.subtitle = element_text(size = 13L,
face = "bold", hjust = 0.5)) +
geom_text(position = position_stack(vjust = 0.5), size = 4, color = "black")
Potencial Electoral Cruzado
A continuación se realiza otra forma de analizar el potencial electoral y es teniendo en cuenta los votos “en disputa”
Votaría al candidato: Representa el porcentaje de personas que tienen la intención de votar por el candidato en cuestión.
En disputa: Representa el porcentaje de personas que todavía no han decidido su voto (indecisos)
Jamás votaría al candidato: Representa el porcentaje de personas que han manifestado que nunca votarían por el candidato.
En este punto lo que se realiza es en los casos en donde no se vota a
ninguno de los candidatos principales en voto_final se
imputa el valor “indeciso” y, para los casos en donde en
jamás_votaría se eligieron candidatos que no son ni
Mauricio Macri y Daniel Scioli se imputa el valor
“indeciso”
Buenos Aires
df_potencial_ba_cruz <- df_potencial_ba %>%
filter(! voto_final == "Ninguno / En Blanco") |>
mutate(voto_final = ifelse(
!(voto_final == "Daniel Scioli" & voto_final == "Mauricio Macri"), "Indeciso", voto_final), # indeciso: voto final no es ni MM ni DS
nunca_final = ifelse(jamas_votaria == "Daniel Scioli" | jamas_votaria == "Mauricio Macri",jamas_votaria, "En disputa"),
nunca_final = ifelse(nunca_final == 1, "Daniel Scioli",
ifelse(nunca_final == 2, "Mauricio Macri",
nunca_final)))# En disputa los que no elijen a MM y DS como jamas votaria
# Calculo totales
ba_cruzado <- df_potencial_ba_cruz %>%
group_by(voto_final, nunca_final) %>%
summarise(tot = sum(ponderacion_eph)) |>
mutate(porcentaje_potencial = round(tot/sum(df_potencial_ba$ponderacion_eph)*100,2)) |>
select(-tot) |>
pivot_wider(names_from = nunca_final, values_from = porcentaje_potencial)
# mostramos
ba_cruzado %>%
kableExtra::kable(caption = "Potencial Electoral Cruzado - Mauricio Macri y Daniel Scioli (2015) - Buenos Aires") %>%
kableExtra::kable_styling(bootstrap_options = "responsive")
| voto_final | Daniel Scioli | En disputa | Mauricio Macri |
|---|---|---|---|
| Indeciso | 29.71 | 14.51 | 35.54 |
Córdoba
df_potencial_cba_cruz <- df_potencial_cba %>%
filter(! voto_final == "Ninguno / En Blanco") |>
mutate(voto_final = ifelse(
voto_final != "Daniel Scioli" & voto_final != "Mauricio Macri", "Indeciso", voto_final), # indeciso: voto final no es ni MM ni DS
nunca_final = ifelse(jamas_votaria == "Daniel Scioli" | jamas_votaria == "Mauricio Macri",jamas_votaria, "En disputa"),
nunca_final = ifelse(nunca_final == 1, "Daniel Scioli",
ifelse(nunca_final == 2, "Mauricio Macri",
nunca_final)))# En disputa los que no elijen a MM y DS como jamas votaria
# Calculo totales
cba_cruzado <- df_potencial_cba_cruz %>%
group_by(voto_final, nunca_final) %>%
summarise(tot = sum(ponderacion_eph)) |>
mutate(porcentaje_potencial = round(tot/sum(df_potencial_ba$ponderacion_eph)*100,2)) |>
select(-tot) |>
pivot_wider(names_from = nunca_final, values_from = porcentaje_potencial)
# mostramos
cba_cruzado %>%
kableExtra::kable(caption = "Potencial Electoral Cruzado - Mauricio Macri y Daniel Scioli (2015) - Córdoba") %>%
kableExtra::kable_styling(bootstrap_options = "responsive")
| voto_final | Daniel Scioli | En disputa | Mauricio Macri |
|---|---|---|---|
| Daniel Scioli | 0.91 | 2.88 | 0.90 |
| Indeciso | 40.24 | 8.54 | 1.40 |
| Mauricio Macri | 1.28 | 1.77 | 17.79 |
Comportamiento electoral
En este apartado se buscará seleccionar un conjunto de indicadores que den cuenta de dos de las perspectivas teóricas vistas en la bibliografía sobre comportamiento electoral y evaluar el impacto de dichos indicadores en la decisión de voto utilizando al menos dos herramientas de análisis comparando los resultados entre ambas ciudades
Existen tres modelos dentro de la teoría del comportamiento electoral: El modelo sociológico, el modelo psico-social y, el modelo racional-económico. Para el desarrollo de este apartado se seleccionó el modelo racional y, el modelo sociológico
Modelo Racional
El Modelo Racional de comportamiento electoral se basa en la idea de que los votantes toman decisiones electorales de manera racional y maximizan sus intereses personales y preferencias al elegir a qué candidato o partido votar. Este enfoque se deriva de la teoría económica y se centra en la idea de que los individuos actúan como “homo economicus”, es decir, como seres racionales y egoístas que buscan maximizar su bienestar personal. En el contexto electoral, el modelo racional asume que los votantes evalúan cuidadosamente las opciones políticas disponibles y toman decisiones en función de cómo creen que cada candidato o partido cumplirá con sus preferencias y necesidades. En este modelo, el electorado responsabiliza a los actores políticos del Estado de la economía y votan en función de la evaluación que realizan al respecto
En este marco, se realizará una clusterización con kmeans de la
muestra para analizar la relación de las variables económicas en el voto
al Frente para la Victoria (FPV). Se elige este partido
con el objetivo de evaluar si, en función de las variables económicas y
de gestión, el electorado elige continuar con el gobierno oficialista o
prefiere cambiar, y qué variables influyen en dicha decisión. Para dicho
análisis se utilizarán las variables gestion_cristina,
economia_pais_2_anos, economia_fliar_2_anos,
continuidad_o_cambio, voto_acotado y
ponderacion_eph
Buenos Aires
En primer lugar, se crea un df con las variables que podrían explicar
el voto al Frente para la Victoria en función del modelo relacional. Se
construirá una variable binaria que sea ¿Vota al Frente para la Victoria
(FPV)? “Sí, No” a partir de la variable voto_acotado
# Observamos las variables y su relación
comp_elect_bsas <- df_potencial_ba |>
mutate(voto_oficialista = ifelse(voto_acotado == "Daniel Scioli" , "Si", "No")) |>
select(gestion_cristina, economia_fliar_2_anos, economia_pais_2_anos, continuidad_o_cambio,voto_oficialista, ua, ponderacion_eph, voto_final)
Analizamos la relación entre las variables y
voto_oficialista
comp_elect_bsas |>
group_by(voto_oficialista, gestion_cristina) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(comp_elect_bsas$ponderacion_eph),
porcentaje = porcentaje*100) |>
ggplot() +
aes(x = gestion_cristina, y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#CE276C", Si = "#4FA292")) +
labs(x = " ", y = " ", title = "Valoración de la gestión de CFK según voto al Frente para la Victoria",
subtitle = "Buenos Aires - Ponderado en función de la eph", fill = "¿Vota al FPV?") +
theme_light() +
theme(legend.position = "top",
plot.title = element_text(size = 15L, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 12L,
face = "italic", hjust = 0.5))
Se observa que quienes votan al FPV en voto_acotado, el
32% aprueba la gestión de cristina 2007-2015. Y, el 44,8% que no aprueba
el desempeño en la gestión no votará al FPV
comp_elect_bsas |>
group_by(voto_oficialista, economia_fliar_2_anos) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(comp_elect_bsas$ponderacion_eph),
porcentaje = porcentaje*100) |>
ggplot() +
aes(x = reorder(economia_fliar_2_anos,porcentaje), y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#eafd17", Si = "#fd1777")) +
labs(x = " ", y = " ", title = "Valoración de la economía familiar en los últimos dos \n años según voto al Frente para la Victoria",
subtitle = "Buenos Aires - Ponderado en función de la eph", fill = "¿Vota al FPV?") +
theme_light() +
theme(legend.position = "top",
plot.title = element_text(size = 15L, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 12L,
face = "italic", hjust = 0.5))
En la misma linea, la mayoría de los que considera que empeoró su situación económica familiar no votará al FPV
comp_elect_bsas |>
group_by(voto_oficialista, economia_pais_2_anos) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(comp_elect_bsas$ponderacion_eph),
porcentaje = porcentaje*100) |>
ggplot() +
aes(x = reorder(economia_pais_2_anos,porcentaje), y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#17fd9d", Si = "#9d17fd")) +
labs(x = " ", y = " ",
title = "Valoración de la economía en los últimos dos \n años según voto al Frente para la Victoria",
subtitle = "Buenos Aires - Ponderado en función de la eph", fill = "¿Vota al FPV?") +
theme_light() +
theme(legend.position = "top",
plot.title = element_text(size = 15L, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 12L,
face = "italic", hjust = 0.5))
En este caso, sucede igual que con la variable anterior, entre quienes votarán al FPV hay valoraciones más positivas de la situación económica de los últimos dos años
comp_elect_bsas |>
group_by(voto_oficialista, continuidad_o_cambio) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(comp_elect_bsas$ponderacion_eph),
porcentaje = porcentaje*100) |>
ggplot() +
aes(x = reorder(continuidad_o_cambio,porcentaje), y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#9dfd17", Si = "#7717fd")) +
labs(x = " ", y = " ",
title = "Valoración de la economía en los últimos dos \n años según voto al Frente para la Victoria",
subtitle = "Buenos Aires - Ponderado en función de la eph", fill = "¿Vota al FPV?") +
theme_light() +
theme(legend.position = "top",
plot.title = element_text(size = 15L, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 12L,
face = "italic", hjust = 0.5))
En este gráfico vemos que los que votarían al FPV consideran que se deben mantener las políticas actuales y mantener algunas y cambiar otras a diferencia de quienes no los votarían
#unique(df_potencial_ba$voto_final)
comp_elect_bsas <- df_potencial_ba |>
mutate(voto_oficialista = ifelse(voto_acotado == "Daniel Scioli" , 1, 0))
# armo df para crear dummys
df_dummys <- df_potencial_ba |>
dplyr::select(gestion_cristina, economia_fliar_2_anos, economia_pais_2_anos, continuidad_o_cambio)
#Creo variables dummys
dummy<- data.frame(sapply(df_dummys,function(x) data.frame(model.matrix(~x-1,data =df_dummys))[,-1])) |>
clean_names()
# uno dfs
comp_elect_bsas <- comp_elect_bsas|>
dplyr::select(ua, voto_oficialista, ponderacion_eph)|>
cbind(dummy)
Cómo no es posible ponderar desde la propia función de kmeans, se replicarán las filas de la base en función de la ponderación. Además se crearon variables dummy con las ya mencionadas para poder realizar el análisis.
df_cluster <- comp_elect_bsas
# replicamos
df_cluster <- df_cluster[rep(seq_len(nrow(df_cluster)), df_cluster$ponderacion_eph), ]
# mostramos
df_cluster |>
head() |>
kable()
| ua | voto_oficialista | ponderacion_eph | gestion_cristina_x_aprueba | gestion_cristina_x_no_sabe | economia_fliar_2_anos_x_empeoro | economia_fliar_2_anos_x_se_mantuvo_igual | economia_fliar_2_anos_x_no_sabe | economia_pais_2_anos_x_empeoro | economia_pais_2_anos_x_se_mantuvo_igual | economia_pais_2_anos_x_no_sabe | continuidad_o_cambio_x_mantener_algunas_y_cambiar_otras | continuidad_o_cambio_x_cambiar_todas | continuidad_o_cambio_x_no_sabe | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1.537161 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
| 4 | 4 | 1 | 1.265581 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| 5 | 5 | 0 | 1.454980 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
| 8 | 8 | 1 | 1.265581 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 9 | 9 | 1 | 1.215594 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 11 | 11 | 0 | 1.767203 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
df_cluster <- df_cluster |>
dplyr::select(-ponderacion_eph, -ua)
# armamos el plot
k_values <- 2:10
wss <- numeric(length(k_values))
for (k in k_values) {
km <- kmeans(df_cluster,centers = k, nstart = 10)
wss[k-1] <- sum(km$withinss)
}
# Realizo el método de Elbow para saber cuantos clusters realizar
elbow_plot <- data.frame(K = k_values, WSS = wss) %>%
ggplot(aes(x = K, y = WSS)) +
geom_line(colour = "#440154") +
geom_point(colour = "#014454") +
labs(x = "Número de clústeres (K)", y = "Suma de cuadrados dentro del clúster (WSS)",
title = "Método del Codo para determinar \n el número óptimo de clústeres") +
theme_light() +
theme(
plot.title = element_text(size = 16L,
face = "bold",
hjust = 0.5),
plot.subtitle = element_text(face = "italic",
hjust = 0.5)
)
elbow_plot
Vamos a realizar el análisis con 3 clusters
# semilla
set.seed(123)
# realizamos el cluster
kmeans_result <- kmeans(df_cluster, centers = 3 )
# lo agregamos al dataset
df_cluster$cluster <- kmeans_result$cluster
# resumen
aggregate(. ~ cluster, data = df_cluster, FUN = mean) |>
kable()
| cluster | voto_oficialista | gestion_cristina_x_aprueba | gestion_cristina_x_no_sabe | economia_fliar_2_anos_x_empeoro | economia_fliar_2_anos_x_se_mantuvo_igual | economia_fliar_2_anos_x_no_sabe | economia_pais_2_anos_x_empeoro | economia_pais_2_anos_x_se_mantuvo_igual | economia_pais_2_anos_x_no_sabe | continuidad_o_cambio_x_mantener_algunas_y_cambiar_otras | continuidad_o_cambio_x_cambiar_todas | continuidad_o_cambio_x_no_sabe |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0.0327869 | 0.0655738 | 0.2459016 | 0.0327869 | 0.8196721 | 0.0655738 | 0.4262295 | 0.4426230 | 0.0000000 | 0.8688525 | 0.0983607 | 0.0327869 |
| 2 | 0.9204545 | 0.8863636 | 0.0227273 | 0.0568182 | 0.3409091 | 0.0227273 | 0.0568182 | 0.3295455 | 0.0000000 | 0.3977273 | 0.0000000 | 0.0000000 |
| 3 | 0.0000000 | 0.1044776 | 0.1194030 | 0.9104478 | 0.0000000 | 0.0000000 | 0.8059701 | 0.0149254 | 0.0895522 | 0.4029851 | 0.5074627 | 0.0895522 |
Queda así los encuestados divididos en tres grupos:
Un primer grupo de encuestados al que podríamos llamar
Los Escépticos. En este cluster solo un 3% en promedio
tiene la intención de votar al FPV. En este sentido, este grupo tiene
una baja proporción de aprobación de la gestión de cristina
(gestion_cristina_x_aprueba) y una alta proporción de
gestion_cristina_x_no_sabe. En cuanto a la percepción
económica, tienen una baja proporción de
economia_fliar_2_anos_x_empeoro y
economia_pais_2_anos_x_empeoro, lo que sugiere que no creen
que la economía familiar o la del país haya empeorado en los años
previos. En términos de preferencia por la continuidad o cambio, tienen
una alta proporción de
continuidad_o_cambio_x_mantener_algunas_y_cambiar_otras.
Esto indica que prefieren mantener algunas políticas y cambiar
otras.
Un segundo cluster al que denominaremos Los
Leales con un 92% de intención de votar al Frente para la
Victoria. Este grupo se caracteriza por tener una alta proporción de
aprobación de la gestión del gobierno de CFK,una baja proporción de
economia_fliar_2_anos_x_empeoro y
economia_pais_2_anos_x_empeoro lo que sugiere que no creen
que la economía familiar o la del país hayan empeorado en los últimos 2
años. En términos de preferencia por la continuidad o cambio, tienen una
baja proporción de
continuidad_o_cambio_x_mantener_algunas_y_cambiar_otras y
continuidad_o_cambio_x_cambiar_todas, lo que indica que
prefieren mantener las políticas actuales
Y, por último, Un tercer grupo de Los
desencantados que no votará por el FPV con una baja proporción
de gestion_cristina_x_aprueba y
gestion_cristina_x_no_sabe, lo que indica que desaprueban
la gestión de CFK. Respecto a la percepción económica, tienen una alta
proporción de economia_fliar_2_anos_x_empeoro y
economia_pais_2_anos_x_empeoro, lo que sugiere que creen
que la economía familiar y la del país empeoró en los últimos años.
Respecto a las políticas, tienen una alta proporción de
continuidad_o_cambio_x_cambiar_todas
# Le ponemos los nombres a los clusters
cluster_names <- c("1-Escepticos", "2-Leales", "3-Desencantados")
kmeans_result$cluster <- cluster_names[kmeans_result$cluster]
# Visualizamos
fviz_cluster(kmeans_result, data = df_cluster, geom = "point") +
theme_light() + theme(legend.position = "bottom") +
labs(title = "Resultados clustering K-means - Buenos Aires")
Córdoba
Se realizará el mismo procedimiento que con el df de Buenos
Aires. En primer lugar se crea un df con las variables que
podrían explicar el voto al FPV en función del modelo
racional. Se construirá una variable binaria que sea ¿Vota al Frente
para la Victoria (FPV)? “Sí, No” a partir de la variable
voto_acotado
# Observamos las variables y su relación
comp_elect_cba <- df_potencial_cba |>
mutate(voto_oficialista = ifelse(voto_acotado == "Daniel Scioli" , "Si", "No")) |>
select(gestion_cristina, economia_fliar_2_anos, economia_pais_2_anos, continuidad_o_cambio,voto_oficialista, ua, ponderacion_eph, voto_final)
Analizamos la relación entre las variables y
voto_oficialista
comp_elect_cba |>
group_by(voto_oficialista, gestion_cristina) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(comp_elect_cba$ponderacion_eph),
porcentaje = porcentaje*100) |>
ggplot() +
aes(x = gestion_cristina, y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#CE276C", Si = "#4FA292")) +
labs(x = " ", y = " ", title = "Valoración de la gestión de CFK según voto al Frente para la Victoria",
subtitle = "Córdoba - Ponderado en función de la eph", fill = "¿Vota al FPV?") +
theme_light() +
theme(legend.position = "top",
plot.title = element_text(size = 15L, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 12L,
face = "italic", hjust = 0.5))
Se observa que quienes votan al FPV en voto_acotado, el
19% aprueba la gestión de cristina 2007-2015. Y, el 59% que no aprueba
el desempeño en la gestión no votará al FPV
comp_elect_cba |>
group_by(voto_oficialista, economia_fliar_2_anos) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(comp_elect_cba$ponderacion_eph),
porcentaje = porcentaje*100) |>
ggplot() +
aes(x = reorder(economia_fliar_2_anos,porcentaje), y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#eafd17", Si = "#fd1777")) +
labs(x = " ", y = " ", title = "Valoración de la economía familiar en los últimos dos \n años según voto al Frente para la Victoria",
subtitle = "Córdoba - Ponderado en función de la eph", fill = "¿Vota al FPV?") +
theme_light() +
theme(legend.position = "top",
plot.title = element_text(size = 15L, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 12L,
face = "italic", hjust = 0.5))
En este item, hay una alta proporción que considera que su situación económica familiar empeoró 43% y no votará al oficialismo
comp_elect_cba |>
group_by(voto_oficialista, economia_pais_2_anos) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(comp_elect_cba$ponderacion_eph),
porcentaje = porcentaje*100) |>
ggplot() +
aes(x = reorder(economia_pais_2_anos,porcentaje), y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#17fd9d", Si = "#9d17fd")) +
labs(x = " ", y = " ",
title = "Valoración de la economía en los últimos dos \n años según voto al Frente para la Victoria",
subtitle = "Córdoba- Ponderado en función de la eph", fill = "¿Vota al FPV?") +
theme_light() +
theme(legend.position = "top",
plot.title = element_text(size = 15L, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 12L,
face = "italic", hjust = 0.5))
En este caso sucede igual que con la variable anterior, entre quienes votarán al FPV hay valoraciones más positivas de la situación económica de los últimos dos años
comp_elect_cba |>
group_by(voto_oficialista, continuidad_o_cambio) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(comp_elect_cba$ponderacion_eph),
porcentaje = porcentaje*100) |>
ggplot() +
aes(x = reorder(continuidad_o_cambio,porcentaje), y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#9dfd17", Si = "#7717fd")) +
labs(x = " ", y = " ",
title = "Valoración de la economía en los últimos dos \n años según voto al Frente para la Victoria",
subtitle = "Córdoba - Ponderado en función de la eph", fill = "¿Vota al FPV?") +
theme_light() +
theme(legend.position = "top",
plot.title = element_text(size = 15L, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 12L,
face = "italic", hjust = 0.5))
En este gráfico vemos que si bien hay un alto porcentaje entre los que no votarían al FPV que desea cambiar las políticas (24%) la mayoría prediere mantener algunas y cambiar otras.
#unique(df_potencial_ba$voto_final)
comp_elect_cba <- df_potencial_cba |>
mutate(voto_oficialista = ifelse(voto_acotado == "Daniel Scioli" , 1, 0))
# armo df para crear dummys
df_dummys <- comp_elect_cba |>
dplyr::select(gestion_cristina, economia_fliar_2_anos, economia_pais_2_anos, continuidad_o_cambio)
#Creo las variables dummys
dummy<- data.frame(sapply(df_dummys,function(x) data.frame(model.matrix(~x-1,data =df_dummys))[,-1])) |>
clean_names()
# uno dfs
comp_elect_cba <- comp_elect_cba|>
dplyr::select(ua, voto_oficialista, ponderacion_eph)|>
cbind(dummy)
Al igual que con la base de Buenos Aires, cómo no es posible ponderar desde la propia función de kmeans, se replicarán las filas de la base en función de la ponderación. Además se crearon variables dummy con las ya mencionadas para poder realizar el análisis.
df_cluster <- comp_elect_cba
# replicamos
df_cluster <- df_cluster[rep(seq_len(nrow(df_cluster)), df_cluster$ponderacion_eph), ]
# mostramos
df_cluster |>
head() |>
kable()
| ua | voto_oficialista | ponderacion_eph | gestion_cristina_x_aprueba | gestion_cristina_x_no_sabe | economia_fliar_2_anos_x_empeoro | economia_fliar_2_anos_x_se_mantuvo_igual | economia_fliar_2_anos_x_no_sabe | economia_pais_2_anos_x_empeoro | economia_pais_2_anos_x_se_mantuvo_igual | economia_pais_2_anos_x_no_sabe | continuidad_o_cambio_x_mantener_algunas_y_cambiar_otras | continuidad_o_cambio_x_cambiar_todas | continuidad_o_cambio_x_no_sabe | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 1.527288 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
| 3 | 3 | 0 | 1.035000 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
| 11 | 11 | 0 | 1.561429 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
| 12 | 12 | 0 | 1.209796 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
| 13 | 13 | 0 | 1.035000 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
| 14 | 14 | 0 | 1.058137 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
Al igual que con el df de Buenos Aires, vemos que al replicar con el ponderador hubo una disminución en la cantidad de registros
df_cluster <- df_cluster |>
dplyr::select(-ponderacion_eph, -ua)
# armamos el plot
k_values <- 2:10
wss <- numeric(length(k_values))
for (k in k_values) {
km <- kmeans(df_cluster,centers = k, nstart = 10)
wss[k-1] <- sum(km$withinss)
}
# Realizo el método de Elbow para saber cuantos clusters realizar
elbow_plot <- data.frame(K = k_values, WSS = wss) %>%
ggplot(aes(x = K, y = WSS)) +
geom_line(colour = "#440154") +
geom_point(colour = "#014454") +
labs(x = "Número de clústeres (K)", y = "Suma de cuadrados dentro del clúster (WSS)",
title = "Método del Codo para determinar \n el número óptimo de clústeres") +
theme_light() +
theme(
plot.title = element_text(size = 16L,
face = "bold",
hjust = 0.5),
plot.subtitle = element_text(face = "italic",
hjust = 0.5)
)
elbow_plot
Vamos a realizar el análisis con 4 clusters
# semilla
set.seed(123)
# realizamos el cluster
kmeans_result <- kmeans(df_cluster, centers = 4 )
# lo agregamos al dataset
df_cluster$cluster <- kmeans_result$cluster
# resumen
aggregate(. ~ cluster, data = df_cluster, FUN = mean) |>
kable()
| cluster | voto_oficialista | gestion_cristina_x_aprueba | gestion_cristina_x_no_sabe | economia_fliar_2_anos_x_empeoro | economia_fliar_2_anos_x_se_mantuvo_igual | economia_fliar_2_anos_x_no_sabe | economia_pais_2_anos_x_empeoro | economia_pais_2_anos_x_se_mantuvo_igual | economia_pais_2_anos_x_no_sabe | continuidad_o_cambio_x_mantener_algunas_y_cambiar_otras | continuidad_o_cambio_x_cambiar_todas | continuidad_o_cambio_x_no_sabe |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0.0000000 | 0.0000000 | 1.0000000 | 0.0714286 | 0.0000000 | 0.9285714 | 0.0000000 | 0.0000000 | 1 | 0.2142857 | 0.0000000 | 0.7857143 |
| 2 | 0.6666667 | 0.5454545 | 0.0606061 | 0.0303030 | 0.5454545 | 0.0909091 | 0.0000000 | 0.9696970 | 0 | 0.3939394 | 0.0606061 | 0.2727273 |
| 3 | 1.0000000 | 1.0000000 | 0.0000000 | 0.0000000 | 0.1000000 | 0.0333333 | 0.0000000 | 0.0000000 | 0 | 0.1666667 | 0.0000000 | 0.2000000 |
| 4 | 0.0190476 | 0.0476190 | 0.0095238 | 0.7333333 | 0.1523810 | 0.0095238 | 0.9238095 | 0.0380952 | 0 | 0.5333333 | 0.4190476 | 0.0285714 |
Queda así los encuestados divididos en cuatro grupos:
Cluster 1: Los desencantados Este grupo tiene un bajo voto por el FPV con un valor promedio cercano a 0. El apoyo a la gestión de Cristina es muy bajo, casi nulo. La percepción de la economía familiar en los últimos dos años es mayoritariamente negativa (71%) y consideran que empeoró. También tienen una percepción ambigüa de la economía del país, con un 92% que no sabe si mejoró o empeoró. Además, un 78$ no sabe si deberian continuar o cambiar las políticas
Cluster 2: Los Moderados En este grupo, el voto por el FPV es más alto, con un valor promedio de aproximadamente 0.66. Tienen una percepción mixta sobre la gestión de Cristina, con un 53% que aprueba su gestión. La percepción de la economía familiar en los últimos dos años es variada, con aproximadamente el 56% que cree que se mantuvo igual y el 31% que piensa que empeoró. Respecto a la economía del país, la mayoría (97%) cree que se mantuvo igual. La actitud hacia el cambio es menos pronunciada en este grupo.
Cluster 3: Los Leales Este grupo muestra un apoyo completo al FPV, con un voto promedio cercano a 1, lo que indica un alto apoyo a este partido político. Todos en este grupo aprueban la gestión de Cristina. En cuanto a la economía, la percepción sobre la economía familiar es predominantemente positiva, con solo el 10% que cree que se encuentra igual Además, creen que la economía del país también ha mejorado en su mayoría. Mostraron una fuerte preferencia por mantener algunas políticas actuales y cambiar otras.
Cluster 4: Los escepticos En este grupo, el voto por el FPV es bajo, con un valor promedio de aproximadamente 0.02. La aprobación de la gestión de Cristina es baja, con solo el 4% que aprueba. La percepción de la economía familiar en los últimos dos años es mayoritariamente negativa, con un 73% que cree que empeoró. También consideran que la economía del país empeoró en un 92%. Tienen una preferencia por cambiar algunas políticas actuales y mantener otras.
# Le ponemos los nombres a los clusters
cluster_names <- c("1-Desencantados", "2-Moderados", "3-Leales", "4-Escepticos")
kmeans_result$cluster <- cluster_names[kmeans_result$cluster]
# Visualizamos
fviz_cluster(kmeans_result, data = df_cluster, geom = "point") +
theme_light() + theme(legend.position = "bottom") +
labs(title = "Resultados clustering K-means - Córdoba")
Conclusiones
Se puede afirmar entonces que en el caso de la Provincia de Buenos Aires y Córdoba hay una relación entre la percepción de la situación económica y el voto o no por la continuidad del gobierno oficialista. Es decir, quienes consideran que su situación económica empeoró en lineas generales eligen votar candidatos de otros frentes y prefieren cambios en las políticas públicas elaboradas. Por otro lado, a diferencia de Buenos Aires donde hay grupos más marcados que votarían y no votarían al FPV, en el caso de córdoba existe un cuarto grupo más moderado que muestra un voto relativamente alto por el FPV y una percepción mixta sobre la gestión de Cristina.
Modelo sociológico
El Modelo Sociológico por otro lado se enfoca en cómo factores sociales y demográficos influyen en las decisiones de voto de los ciudadanos Esta teoría considera que los contextos sociales y las características de los votantes tienen un impacto significativo en sus preferencias políticas y en su comportamiento electoral. De esta manera, el elector forma sus opiniones y opciones políticas en función de las posiciones y características de su grupo de pertenencia en la sociedad en general
Para analizar la intención de voto en función de la teoría de
comportamiento electoral sociológica se utilizarán las variables
edad, sexo,niv_educativo. Se
llevará a cabo una regresión logística con el objetivo
de analizar la relación entre estas variables predictoras y la variable
de resultado (voto_oficialista) y determinar si existe una
asociación significativa entre ellas.
Buenos Aires
#colnames(df_potencial_ba)
df_socio_pba <- df_potencial_ba |>
select(ua,edad,sexo,niv_educativo,ponderacion_eph, voto_acotado) |>
mutate(voto_oficialista = ifelse(voto_acotado == "Daniel Scioli", "Si","No")) |>
select(-voto_acotado)
rownames(df_socio_pba) <- df_socio_pba$ua
# Graficamos
df_socio_pba |>
group_by(voto_oficialista, edad) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(df_socio_pba$ponderacion_eph),
porcentaje = porcentaje*100) %>%
ggplot() +
aes(x = edad, y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#66C2A5",
Si = "#9F13C5")) +
labs(x = " ", y = "%", title = "Voto al oficialismo según la edad de los encuestados",
subtitle = "Buenos Aires - Ponderado con eph", fill = "¿Vota al oficialismo?") +
theme_light() +
theme(legend.position = "top", plot.title = element_text(size = 16L, face = "bold", hjust = 0.5),
plot.subtitle = element_text(size = 14L, face = "italic", hjust = 0.5))
Entre los que votan al oficialismo el rango etario se encuentra más distribuido entre los 18 y 65 años. Por el otro lado, los votantes de la oposición se concentran entre los 30-49 en mayor medida
df_socio_pba |>
group_by(voto_oficialista, sexo) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(df_socio_pba$ponderacion_eph),
porcentaje = porcentaje*100) %>%
ggplot() +
aes(x = sexo, y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#7ec492",
Si = "#c47e92")) +
labs(x = " ", y = "%", title = "Voto al oficialismo según el sexo de los encuestados",
subtitle = "Buenos Aires - Ponderado con eph", fill = "¿Vota al oficialismo?") +
theme_light() +
theme(legend.position = "top", plot.title = element_text(size = 16L, face = "bold", hjust = 0.5),
plot.subtitle = element_text(size = 14L, face = "italic", hjust = 0.5))
Entre los votantes del FDT hay mayor proporción de mujeres. En cambio en el voto no oficialista la distribución se encuentra más pareja
df_socio_pba |>
group_by(voto_oficialista, niv_educativo) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(df_socio_pba$ponderacion_eph),
porcentaje = porcentaje*100) %>%
ggplot() +
aes(x = niv_educativo, y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#ffce1c",
Si = "#1cceff")) +
labs(x = " ", y = "%", title = "Voto al oficialismo según el nivel \n educativo de los encuestados",
subtitle = "Buenos Aires - Ponderado con eph", fill = "¿Vota al oficialismo?") +
theme_light() +
theme(legend.position = "top", plot.title = element_text(size = 16L, face = "bold", hjust = 0.5),
plot.subtitle = element_text(size = 14L, face = "italic", hjust = 0.5)) +
coord_flip()
El voto no oficialista se concentra mayormente entre quienes tienen primario completo y secundario. Y, el voto oficialista entre quienes tienen secundario, primario y terciario.
Realizamos la regresión logística para analizar la relación entre las variables y el voto al oficialismo
# Creo variables dummys
# armo df para crear dummys
df_dummys <- df_socio_pba |> dplyr::select(-ponderacion_eph, -ua, -voto_oficialista,-sexo)
#Creating Dummy Variables
dummy<- data.frame(sapply(df_dummys,function(x) data.frame(model.matrix(~x-1,data =df_dummys))[,-1])) |>
clean_names()
# uno dfs
df_logit_ba <- df_socio_pba|>
dplyr::select(ponderacion_eph, sexo, voto_oficialista)|>
mutate(sexo = ifelse(sexo == "Mujer", 1, 0),
voto_oficialista = ifelse(voto_oficialista == "Si", 1, 0)) |>
cbind(dummy)
#colnames(df_logit_ba)
# Modelo con todas las variables
modelo <- glm(voto_oficialista ~ edad_x30_49 + edad_x50_65 + edad_x_65 +sexo + niv_educativo_x_secundario_incompleto_o_completo + niv_educativo_x_terciario_no_univ_incompleto + niv_educativo_x_terciario_no_univ_completo + niv_educativo_x_universitario_incompleto_o_completo + voto_oficialista , data = df_logit_ba, family = binomial, weights = ponderacion_eph)
summary(modelo)
##
## Call:
## glm(formula = voto_oficialista ~ edad_x30_49 + edad_x50_65 +
## edad_x_65 + sexo + niv_educativo_x_secundario_incompleto_o_completo +
## niv_educativo_x_terciario_no_univ_incompleto + niv_educativo_x_terciario_no_univ_completo +
## niv_educativo_x_universitario_incompleto_o_completo + voto_oficialista,
## family = binomial, data = df_logit_ba, weights = ponderacion_eph)
##
## Coefficients:
## Estimate Std. Error z value
## (Intercept) -0.6796 0.3149 -2.158
## edad_x30_49 -0.5910 0.2769 -2.135
## edad_x50_65 -0.2955 0.3325 -0.889
## edad_x_65 -0.5365 0.4055 -1.323
## sexo 0.4162 0.2327 1.788
## niv_educativo_x_secundario_incompleto_o_completo 0.2870 0.3065 0.936
## niv_educativo_x_terciario_no_univ_incompleto 0.4330 0.3713 1.166
## niv_educativo_x_terciario_no_univ_completo 0.9043 0.5057 1.788
## niv_educativo_x_universitario_incompleto_o_completo 0.6501 0.3720 1.748
## Pr(>|z|)
## (Intercept) 0.0309 *
## edad_x30_49 0.0328 *
## edad_x50_65 0.3742
## edad_x_65 0.1859
## sexo 0.0737 .
## niv_educativo_x_secundario_incompleto_o_completo 0.3490
## niv_educativo_x_terciario_no_univ_incompleto 0.2435
## niv_educativo_x_terciario_no_univ_completo 0.0737 .
## niv_educativo_x_universitario_incompleto_o_completo 0.0805 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 494.18 on 372 degrees of freedom
## Residual deviance: 477.14 on 364 degrees of freedom
## AIC: 453.67
##
## Number of Fisher Scoring iterations: 4
Utilizando todas las variables sociodemográficas se observa que el
nivel educativo es estadísticamente significativo para
predecir el voto al oficialismo para los niveles universitario y
terciario. Es decir que, a mayor nivel educativo mayor es el voto por el
FPV. El sexo, por otro lado con un p-value de 0.0186 indica que
manteniendo constantes las demás variables en el modelo, las mujeres (1)
tienen más probabilidades de votar por el oficialismo en comparación con
los hombres. A la inversa ocurre con edad_x30_49
A continuación, se utilizará el método STEPAIC que permite realizar el proceso de selección de variables mediante el Akaike (AIC). El AIC es una métrica que se utiliza para ocmparar diferentes modelos y seleccionar el mejor ajustado para los datos
#Usamos stepAIC para generar el mejor modelo
final_model <- MASS::stepAIC(modelo)
## Start: AIC=453.67
## voto_oficialista ~ edad_x30_49 + edad_x50_65 + edad_x_65 + sexo +
## niv_educativo_x_secundario_incompleto_o_completo + niv_educativo_x_terciario_no_univ_incompleto +
## niv_educativo_x_terciario_no_univ_completo + niv_educativo_x_universitario_incompleto_o_completo +
## voto_oficialista
##
##
## Step: AIC=453.67
## voto_oficialista ~ edad_x30_49 + edad_x50_65 + edad_x_65 + sexo +
## niv_educativo_x_secundario_incompleto_o_completo + niv_educativo_x_terciario_no_univ_incompleto +
## niv_educativo_x_terciario_no_univ_completo + niv_educativo_x_universitario_incompleto_o_completo
##
## Df Deviance AIC
## - edad_x50_65 1 477.93 452.46
## - niv_educativo_x_secundario_incompleto_o_completo 1 478.01 452.55
## - niv_educativo_x_terciario_no_univ_incompleto 1 478.49 453.02
## - edad_x_65 1 478.92 453.45
## <none> 477.14 453.67
## - niv_educativo_x_universitario_incompleto_o_completo 1 480.19 454.72
## - niv_educativo_x_terciario_no_univ_completo 1 480.31 454.85
## - sexo 1 480.35 454.89
## - edad_x30_49 1 481.71 456.25
##
## Step: AIC=451.27
## voto_oficialista ~ edad_x30_49 + edad_x_65 + sexo + niv_educativo_x_secundario_incompleto_o_completo +
## niv_educativo_x_terciario_no_univ_incompleto + niv_educativo_x_terciario_no_univ_completo +
## niv_educativo_x_universitario_incompleto_o_completo
##
## Df Deviance AIC
## - edad_x_65 1 479.02 450.36
## - niv_educativo_x_secundario_incompleto_o_completo 1 479.52 450.86
## <none> 477.93 451.27
## - niv_educativo_x_terciario_no_univ_incompleto 1 479.97 451.31
## - sexo 1 480.94 452.28
## - niv_educativo_x_terciario_no_univ_completo 1 481.45 452.79
## - edad_x30_49 1 481.76 453.09
## - niv_educativo_x_universitario_incompleto_o_completo 1 482.08 453.42
##
## Step: AIC=449.24
## voto_oficialista ~ edad_x30_49 + sexo + niv_educativo_x_secundario_incompleto_o_completo +
## niv_educativo_x_terciario_no_univ_incompleto + niv_educativo_x_terciario_no_univ_completo +
## niv_educativo_x_universitario_incompleto_o_completo
##
## Df Deviance AIC
## <none> 479.02 449.24
## - niv_educativo_x_secundario_incompleto_o_completo 1 481.28 449.49
## - sexo 1 481.60 449.81
## - niv_educativo_x_terciario_no_univ_incompleto 1 481.78 450.00
## - edad_x30_49 1 482.11 450.33
## - niv_educativo_x_terciario_no_univ_completo 1 482.88 451.09
## - niv_educativo_x_universitario_incompleto_o_completo 1 484.29 452.51
# mostramos
summary(final_model)
##
## Call:
## glm(formula = voto_oficialista ~ edad_x30_49 + sexo + niv_educativo_x_secundario_incompleto_o_completo +
## niv_educativo_x_terciario_no_univ_incompleto + niv_educativo_x_terciario_no_univ_completo +
## niv_educativo_x_universitario_incompleto_o_completo, family = binomial,
## data = df_logit_ba, weights = ponderacion_eph)
##
## Coefficients:
## Estimate Std. Error z value
## (Intercept) -0.9545 0.2291 -4.167
## edad_x30_49 -0.4115 0.2356 -1.746
## sexo 0.3655 0.2280 1.603
## niv_educativo_x_secundario_incompleto_o_completo 0.4292 0.2865 1.498
## niv_educativo_x_terciario_no_univ_incompleto 0.5862 0.3518 1.666
## niv_educativo_x_terciario_no_univ_completo 0.9885 0.5016 1.971
## niv_educativo_x_universitario_incompleto_o_completo 0.8087 0.3526 2.293
## Pr(>|z|)
## (Intercept) 3.09e-05 ***
## edad_x30_49 0.0808 .
## sexo 0.1089
## niv_educativo_x_secundario_incompleto_o_completo 0.1341
## niv_educativo_x_terciario_no_univ_incompleto 0.0956 .
## niv_educativo_x_terciario_no_univ_completo 0.0487 *
## niv_educativo_x_universitario_incompleto_o_completo 0.0218 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 494.18 on 372 degrees of freedom
## Residual deviance: 479.02 on 366 degrees of freedom
## AIC: 449.24
##
## Number of Fisher Scoring iterations: 4
Para este modelo la variable nivel educativo (universitario y terciario) es la que más podría predecir el voto al oficialismo junto con el rango de edad de 30-49 (a la inversa). Es decir, quienes se encuentran en ese rango de edad tienen menos probabilidad de votar al FPV
Córdoba
Repetimos el procedimiento para la base de Córdoba
#colnames(df_potencial_cba)
df_socio_cba <- df_potencial_cba |>
select(ua,edad,sexo,niv_educativo,ponderacion_eph, voto_acotado) |>
mutate(voto_oficialista = ifelse(voto_acotado == "Daniel Scioli", "Si","No")) |>
select(-voto_acotado)
rownames(df_socio_cba) <- df_socio_cba$ua
df_socio_cba |>
group_by(voto_oficialista, edad) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(df_socio_cba$ponderacion_eph),
porcentaje = porcentaje*100) %>%
ggplot() +
aes(x = edad, y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#66C2A5",
Si = "#9F13C5")) +
labs(x = " ", y = "%", title = "Voto al oficialismo según la edad de los encuestados",
subtitle = "Córdoba - Ponderado con eph", fill = "¿Vota al oficialismo?") +
theme_light() +
theme(legend.position = "top", plot.title = element_text(size = 16L, face = "bold", hjust = 0.5),
plot.subtitle = element_text(size = 14L, face = "italic", hjust = 0.5))
Entre los que votan al oficialismo el rango etario con mayor proporción es el de 30-49 años. Por el otro lado, los votantes de la oposición se concentran entre los 18-65 en mayor medida
df_socio_cba |>
group_by(voto_oficialista, sexo) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(df_socio_cba$ponderacion_eph),
porcentaje = porcentaje*100) %>%
ggplot() +
aes(x = sexo, y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#7ec492",
Si = "#c47e92")) +
labs(x = " ", y = "%", title = "Voto al oficialismo según el sexo de los encuestados",
subtitle = "Córdoba - Ponderado con eph", fill = "¿Vota al oficialismo?") +
theme_light() +
theme(legend.position = "top", plot.title = element_text(size = 16L, face = "bold", hjust = 0.5),
plot.subtitle = element_text(size = 14L, face = "italic", hjust = 0.5))
En ambos tipos de votantes (oficialistas y no oficialistas) hay una distribución bastante pareja entre los géneros
df_socio_cba |>
group_by(voto_oficialista, niv_educativo) |>
summarise(total = sum(ponderacion_eph)) |>
mutate(porcentaje = total/sum(df_socio_cba$ponderacion_eph),
porcentaje = porcentaje*100) |>
select(-total)%>%
ggplot() +
aes(x = niv_educativo, y = porcentaje, fill = voto_oficialista) +
geom_col() +
scale_fill_manual(values = c(No = "#ffce1c",
Si = "#1cceff")) +
labs(x = " ", y = "%", title = "Voto al oficialismo según el nivel \n educativo de los encuestados",
subtitle = "Córdoba - Ponderado con eph", fill = "¿Vota al oficialismo?") +
theme_light() +
theme(legend.position = "top", plot.title = element_text(size = 16L, face = "bold", hjust = 0.5),
plot.subtitle = element_text(size = 14L, face = "italic", hjust = 0.5)) +
coord_flip()
El voto oficialista se concentra mayormente entre quienes tienen primario completo y universitario Y, el voto no oficialista entre quienes tienen secundario, primario y terciario.
Realizamos la regresión logística para analizar la relación entre las variables
# Creo variables dummys
# armo df para crear dummys
df_dummys <- df_socio_cba |> dplyr::select(-ponderacion_eph, -ua, -voto_oficialista,-sexo)
# creo dummys
dummy<- data.frame(sapply(df_dummys,function(x) data.frame(model.matrix(~x-1,data =df_dummys))[,-1])) |>
clean_names()
# uno dfs
df_logit_cba <- df_socio_cba|>
dplyr::select(ponderacion_eph, sexo, voto_oficialista)|>
mutate(sexo = ifelse(sexo == "Mujer", 1, 0),
voto_oficialista = ifelse(voto_oficialista == "Si", 1, 0)) |>
cbind(dummy)
#colnames(df_logit_ba)
# Modelo con todas las variables
modelo <- glm(voto_oficialista ~ edad_x30_49 + edad_x50_65 + edad_x_65 +sexo + niv_educativo_x_secundario_incompleto_o_completo + niv_educativo_x_terciario_no_univ_incompleto + niv_educativo_x_terciario_no_univ_completo + niv_educativo_x_universitario_incompleto_o_completo + voto_oficialista , data = df_logit_cba, family = binomial, weights = ponderacion_eph)
summary(modelo)
##
## Call:
## glm(formula = voto_oficialista ~ edad_x30_49 + edad_x50_65 +
## edad_x_65 + sexo + niv_educativo_x_secundario_incompleto_o_completo +
## niv_educativo_x_terciario_no_univ_incompleto + niv_educativo_x_terciario_no_univ_completo +
## niv_educativo_x_universitario_incompleto_o_completo + voto_oficialista,
## family = binomial, data = df_logit_cba, weights = ponderacion_eph)
##
## Coefficients:
## Estimate Std. Error
## (Intercept) -0.647359 0.312113
## edad_x30_49 0.366038 0.350193
## edad_x50_65 -0.827042 0.457562
## edad_x_65 -1.799367 0.652313
## sexo 0.063499 0.291093
## niv_educativo_x_secundario_incompleto_o_completo -1.380655 0.532217
## niv_educativo_x_terciario_no_univ_incompleto -0.681470 0.444911
## niv_educativo_x_terciario_no_univ_completo -0.021171 0.529485
## niv_educativo_x_universitario_incompleto_o_completo -0.003058 0.394030
## z value Pr(>|z|)
## (Intercept) -2.074 0.03807 *
## edad_x30_49 1.045 0.29591
## edad_x50_65 -1.807 0.07068 .
## edad_x_65 -2.758 0.00581 **
## sexo 0.218 0.82732
## niv_educativo_x_secundario_incompleto_o_completo -2.594 0.00948 **
## niv_educativo_x_terciario_no_univ_incompleto -1.532 0.12560
## niv_educativo_x_terciario_no_univ_completo -0.040 0.96811
## niv_educativo_x_universitario_incompleto_o_completo -0.008 0.99381
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 361.04 on 319 degrees of freedom
## Residual deviance: 324.94 on 311 degrees of freedom
## AIC: 333.3
##
## Number of Fisher Scoring iterations: 5
Utilizando todas las variables sociodemográficas, a diferencia del
análisis en Buenos Aires se observa que, en este primer
modelo, el sexo no es estadísticamente significativo para
predecir el voto al oficialismo. El
niv_educativo_x_secundario_incompleto_o_completo, por otro
lado con un p-value de 0.00948 indica que manteniendo constantes las
demás variables en el modelo, las personas con secundario tienen menos
probabilidades de votar por el oficialismo en comparación con el resto.
De la misma manera ocurre con edad_x_65 y
edad_x50_65 .
A continuación se utilizará el método STEPAIC que permite realizar el proceso de selección de variables mediante el Akaike (AIC).
#Usamos stepAIC para generar el mejor modelo
final_model <- MASS::stepAIC(modelo)
## Start: AIC=333.3
## voto_oficialista ~ edad_x30_49 + edad_x50_65 + edad_x_65 + sexo +
## niv_educativo_x_secundario_incompleto_o_completo + niv_educativo_x_terciario_no_univ_incompleto +
## niv_educativo_x_terciario_no_univ_completo + niv_educativo_x_universitario_incompleto_o_completo +
## voto_oficialista
##
##
## Step: AIC=333.3
## voto_oficialista ~ edad_x30_49 + edad_x50_65 + edad_x_65 + sexo +
## niv_educativo_x_secundario_incompleto_o_completo + niv_educativo_x_terciario_no_univ_incompleto +
## niv_educativo_x_terciario_no_univ_completo + niv_educativo_x_universitario_incompleto_o_completo
##
## Df Deviance AIC
## - niv_educativo_x_universitario_incompleto_o_completo 1 324.94 331.30
## - niv_educativo_x_terciario_no_univ_completo 1 324.94 331.30
## - sexo 1 324.98 331.34
## - edad_x30_49 1 326.04 332.40
## <none> 324.94 333.30
## - niv_educativo_x_terciario_no_univ_incompleto 1 327.33 333.69
## - edad_x50_65 1 328.42 334.78
## - niv_educativo_x_secundario_incompleto_o_completo 1 332.45 338.81
## - edad_x_65 1 335.46 341.82
##
## Step: AIC=331.3
## voto_oficialista ~ edad_x30_49 + edad_x50_65 + edad_x_65 + sexo +
## niv_educativo_x_secundario_incompleto_o_completo + niv_educativo_x_terciario_no_univ_incompleto +
## niv_educativo_x_terciario_no_univ_completo
##
## Df Deviance AIC
## - niv_educativo_x_terciario_no_univ_completo 1 324.94 329.30
## - sexo 1 324.98 329.35
## - edad_x30_49 1 326.18 330.55
## <none> 324.94 331.30
## - edad_x50_65 1 328.54 332.91
## - niv_educativo_x_terciario_no_univ_incompleto 1 328.63 333.00
## - niv_educativo_x_secundario_incompleto_o_completo 1 335.49 339.86
## - edad_x_65 1 335.50 339.87
##
## Step: AIC=329.33
## voto_oficialista ~ edad_x30_49 + edad_x50_65 + edad_x_65 + sexo +
## niv_educativo_x_secundario_incompleto_o_completo + niv_educativo_x_terciario_no_univ_incompleto
##
## Df Deviance AIC
## - sexo 1 324.98 327.37
## - edad_x30_49 1 326.22 328.61
## <none> 324.94 329.33
## - edad_x50_65 1 328.59 330.98
## - niv_educativo_x_terciario_no_univ_incompleto 1 328.84 331.23
## - edad_x_65 1 335.51 337.90
## - niv_educativo_x_secundario_incompleto_o_completo 1 335.94 338.33
##
## Step: AIC=327.27
## voto_oficialista ~ edad_x30_49 + edad_x50_65 + edad_x_65 + niv_educativo_x_secundario_incompleto_o_completo +
## niv_educativo_x_terciario_no_univ_incompleto
##
## Df Deviance AIC
## - edad_x30_49 1 326.55 326.83
## <none> 324.98 327.27
## - edad_x50_65 1 328.59 328.88
## - niv_educativo_x_terciario_no_univ_incompleto 1 328.84 329.13
## - edad_x_65 1 335.51 335.80
## - niv_educativo_x_secundario_incompleto_o_completo 1 335.98 336.26
##
## Step: AIC=326.8
## voto_oficialista ~ edad_x50_65 + edad_x_65 + niv_educativo_x_secundario_incompleto_o_completo +
## niv_educativo_x_terciario_no_univ_incompleto
##
## Df Deviance AIC
## <none> 326.55 326.80
## - niv_educativo_x_terciario_no_univ_incompleto 1 330.07 328.32
## - edad_x50_65 1 334.18 332.44
## - niv_educativo_x_secundario_incompleto_o_completo 1 337.46 335.71
## - edad_x_65 1 342.97 341.23
# mostramos
summary(final_model)
##
## Call:
## glm(formula = voto_oficialista ~ edad_x50_65 + edad_x_65 + niv_educativo_x_secundario_incompleto_o_completo +
## niv_educativo_x_terciario_no_univ_incompleto, family = binomial,
## data = df_logit_cba, weights = ponderacion_eph)
##
## Coefficients:
## Estimate Std. Error z value
## (Intercept) -0.4130 0.1743 -2.369
## edad_x50_65 -1.0448 0.4080 -2.561
## edad_x_65 -2.0138 0.6254 -3.220
## niv_educativo_x_secundario_incompleto_o_completo -1.3565 0.4587 -2.958
## niv_educativo_x_terciario_no_univ_incompleto -0.6365 0.3493 -1.822
## Pr(>|z|)
## (Intercept) 0.01784 *
## edad_x50_65 0.01044 *
## edad_x_65 0.00128 **
## niv_educativo_x_secundario_incompleto_o_completo 0.00310 **
## niv_educativo_x_terciario_no_univ_incompleto 0.06844 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 361.04 on 319 degrees of freedom
## Residual deviance: 326.55 on 315 degrees of freedom
## AIC: 326.8
##
## Number of Fisher Scoring iterations: 5
En línea con el modelo anterior, las variables estadísticamente
significativas son:
niv_educativo_x_secundario_incompleto_o_completo y
niv_educativo_x_terciario_no_univ_incompleto lo que indica
que a medida que aumenta el nivel educativo (hasta el nivel
universitario), la probabilidad de votar al oficialismo disminuye.
Respecto a la edad, a medida que aumenta la edad a partir de los 50 años
es menos probable que se vote al FPV.
Conclusiones
Los resultados que arrojan los modelos para Buenos Aires y Córdoba son parecidos respecto a las variables estadísticamente significativas. En este sentido, son la edad y el nivel educativo las variables que podrían explicar el voto al oficialismo. En Buenos Aires a mayor nivel educativo mayor voto al oficialismo, y el rango etario que influye inversamente es el de 30-49. En cambio, en córdoba sucede al revés, a partir de los 50 años a medida que aumenta la edad disminuye la probabilidad de votar al FPV, y lo mismo ocurre con el nivel educativo.