#Título: Análisis de la encuesta Así Vamos ##Subtitulo: Limpieza de la base de datos
library(readr)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
#file.choose("EncuestaAsiVamos2024.csv")
eav2024 <- read_csv("/Users/ecelestino/Desktop/TEC/Carrera/Métodos cuantitativos/CienciaDatosProyecto/EncuestaAsiVamos2024.csv",show_col_types = FALSE )
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
## dat <- vroom(...)
## problems(dat)
###Problemática: La insatisfacción ciudadana hacia los alcaldes, derivada de su percepción de mal desempeño en la gestión de servicios públicos generando desconfianza en las instituciones y limita el desarrollo sostenible de los municipios.
####Preguntas de investigación: ####¿Cómo influye la gestión de los alcaldes en la percepción de los habitantes según la región geográfica y las características individuales y demográficas de cada municipio en Nuevo León?
####Variables: Las siguientes variables fueron elegidas bajo el criterio de análisis de las preguntas de investigación. En concreto, seleccionamos aquellas que reflejan el nivel socioeconómico de la gente, así como las variables de municipios, las de educación y la opinión pública basada en una métrica cualitativa donde los número representan un nivel de valoración superior o inferior. - num_mun: Código numérico del municipio donde se realizó la encuesta.
Link a la tabla de las variables: https://docs.google.com/document/d/14yySCfv8_eT5kEo2HaRPb-0yCbKoXZcJYLV9NERp4iw/edit?usp=sharing
##Selección de las variables
eav2024_selected <- eav2024%>%
select(sexo_num, num_mun, nom_mun_mv, nom_loc_mv, rangos_edad, cp4_1, cp7_1, cp7_2, cp7_3, cp7_4, cp7_5, cp7_6, cp7_7, cp7_8, cp7_9, cp7_10, cp8_1, cp8_2, cp8_3, cp8_4, cp8_5, cp8_6, cp8_7, cp8_8, cp8_9, cp8_10, cp9_1, cp9_2, cp9_3, cp9_4, cp9_5, cp9_6, cp9_7, cp9_8, cp9_9, cp9_10, p75, p164, p117, p118, p120, p122, p123, p124, p125, p126, p127, p128, p129, p131_1, p132_2, p133_3, p133_4, p133_5, p136, p137, p138, p139, p52_1, p52_2, p52_3, p52_4, p52_5, p156, Factor_CVNL)
head(eav2024_selected)
## # A tibble: 6 × 65
## sexo_num num_mun nom_mun_mv nom_loc_mv rangos_edad cp4_1 cp7_1 cp7_2 cp7_3
## <dbl> <dbl> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 1 9 Cadereyta Jim… Cadereyta… 45-54 50 0 1 NA
## 2 0 9 Cadereyta Jim… Valle del… 35-44 35 0 0 1
## 3 1 9 Cadereyta Jim… Cadereyta… 25-34 32 0 0 1
## 4 0 9 Cadereyta Jim… Cadereyta… 55-64 62 0 0 NA
## 5 0 9 Cadereyta Jim… Cadereyta… 75 o más 80 0 NA NA
## 6 1 21 General Escob… Ciudad Ge… 45-54 51 0 0 0
## # ℹ 56 more variables: cp7_4 <dbl>, cp7_5 <dbl>, cp7_6 <dbl>, cp7_7 <dbl>,
## # cp7_8 <dbl>, cp7_9 <dbl>, cp7_10 <dbl>, cp8_1 <dbl>, cp8_2 <dbl>,
## # cp8_3 <dbl>, cp8_4 <dbl>, cp8_5 <dbl>, cp8_6 <dbl>, cp8_7 <dbl>,
## # cp8_8 <dbl>, cp8_9 <dbl>, cp8_10 <dbl>, cp9_1 <dbl>, cp9_2 <dbl>,
## # cp9_3 <dbl>, cp9_4 <dbl>, cp9_5 <dbl>, cp9_6 <dbl>, cp9_7 <dbl>,
## # cp9_8 <lgl>, cp9_9 <lgl>, cp9_10 <lgl>, p75 <dbl>, p164 <dbl>, p117 <dbl>,
## # p118 <dbl>, p120 <dbl>, p122 <dbl>, p123 <dbl>, p124 <dbl>, p125 <dbl>, …
View(eav2024_selected)
##Limpieza de la base de datos
#Hoy 22 de abril, se consideró quitar las variables 8888 y 9999 para removerlas definitivamente o hacerlas NA
#Hoy 24 de abril, se terminó de modificar las variables como fcatores y números, en vez de characters. Además, se utilizó un comando que permite ver cuántos NAs hay en cada variable. Además, hemos dejado la variable con más NAs disponible, pues tenemos dudas sobre si mantenerla o no. Por otra parte, se ha hecho un modelo usando lm, así como se ha entrenado y se ha probado. También se ha hecho un modelo de predicción. El uso de DeepSeek fue exclusivo para integrar las variables imputadas, de nueva forma, en un nuevo dataframe que toma en cuenta el eav2024_selected_clean y reemplaza las variables con NAs, menos una, de manera manual.
eav2024_selected_clean <- eav2024_selected %>%
mutate(
num_mun = as.character(num_mun),
rangos_edad = as.factor(rangos_edad),
sexo = case_when(sexo_num == 0 ~ "Hombre",
sexo_num == 1 ~ "Mujer"),
sexo = as.factor(sexo),
municipio = as.factor(nom_mun_mv),
edad = as.numeric(cp4_1),
across(cp7_1:cp7_10, ~ case_when(.x %in% c(8888, 9999) ~ 0, TRUE ~ .x)),
Estudiantes = rowSums(select(., cp7_1:cp7_10), na.rm = TRUE),
IngresoSuficiente = as.numeric(p75),
across(p164, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
IngresoDomesticoMensual = factor(case_when(
p164 == 1 ~ "Sin Ingreso (Salario)",
p164 == 2 ~ "x < 1 SM",
p164 == 3 ~ "1-2 SM",
p164 == 4 ~ "2-3 SM",
p164 == 5 ~ "3-4 SM",
p164 == 6 ~ "4-5 SM",
p164 == 7 ~ "5-6 SM",
p164 == 8 ~ "6-7 SM",
p164 == 9 ~ "7-8 SM",
p164 == 10 ~ "8-9 SM",
p164 == 11 ~ "9-10 SM",
p164 == 12 ~ "x ≥ 10 SM",
)),
across(p123, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
GoberFavoritismo = factor(case_when(
p123 == 0 ~ "No",
p123 == 1 ~ "Si",
p123 == 8888 ~ "No sabe",
p123 == 9999 ~ "No contesta")),
across(p124, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
AlcaFavoritismo = factor(case_when(
p124 == 0 ~ "No",
p124 == 1 ~ "Si",
p124 == 8888 ~ "No sabe",
p124 == 9999 ~ "No contesta")),
across(p125, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
AlcaEficiencia = factor(case_when(
p125 == 0 ~ "No",
p125 == 1 ~ "Si",
p125 == 8888 ~ "No sabe",
p125 == 9999 ~ "No contesta")),
across(p126, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
GoberEficiencia = factor(case_when(
p126 == 0 ~ "No",
p126 == 1 ~ "Si",
p126 == 8888 ~ "No sabe",
p126 == 9999 ~ "No contesta")),
across(p127, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
PercepCorruptioEstado = factor(case_when(
p127 == 1 ~ "MuyFrecuente",
p127 == 2 ~ "Frecuente",
p127 == 3 ~ "PocoFrecuente",
p127 == 4 ~ "NoOcurre",
p127 == 8888 ~ "NoSabe",
p127 == 9999 ~ "NoContesta")),
across(p128, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
PercepCorruptioMuni = factor(case_when(
p128 == 1 ~ "MuyFrecuente",
p128 == 2 ~ "Frecuente",
p128 == 3 ~ "PocoFrecuente",
p128 == 4 ~ "NoOcurre",
p128 == 8888 ~ "NoSabe",
p128 == 9999 ~ "NoContesta")),
across(p128, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
CorruptioExperi = factor(case_when(
p129 == 0 ~ "No",
p129 == 1 ~ "Si",
p129 == 8888 ~ "No sabe",
p129 == 9999 ~ "No contesta")),
across(p131_1, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
AlcalHonesto = factor(case_when(
p131_1 == 0 ~ "No",
p131_1 == 1 ~ "Si",
p131_1 == 8888 ~ "No sabe",
p131_1 == 9999 ~ "No contesta")),
across(p132_2, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
AlcalCapaz = factor(case_when(
p132_2 == 0 ~ "No",
p132_2 == 1 ~ "Si",
p132_2 == 8888 ~ "No sabe",
p132_2 == 9999 ~ "No contesta")),
across(p133_3, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
AlcalBuenEquipo = factor(case_when(
p133_3 == 0 ~ "No",
p133_3 == 1 ~ "Si",
p133_3 == 8888 ~ "No sabe",
p133_3 == 9999 ~ "No contesta")),
across(p133_4, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
AlcalCumplidor = factor(case_when(
p133_4 == 0 ~ "No",
p133_4 == 1 ~ "Si",
p133_4 == 8888 ~ "No sabe",
p133_4 == 9999 ~ "No contesta")),
across(p133_5, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
AlcalAcuerdos = factor(case_when(
p133_5 == 0 ~ "No",
p133_5 == 1 ~ "Si",
p133_5 == 8888 ~ "No sabe",
p133_5 == 9999 ~ "No contesta")),
across(p136, ~ case_when(.x %in% c(8888, 9999) ~ 0, TRUE ~ .x)),
Altruismo_Alcalde = factor(case_when(
p136 == 1 ~ "Pensando en el bienestar del municipio",
p136 == 2 ~ "Pensando en intereses particulares/personales",
p136 == 8888 ~ "No sabe",
p136 == 9999 ~ "No contesta")),
across(p156, ~ case_when(.x %in% c(8888, 9999) ~ NA_real_, TRUE ~ .x)),
Influencia_Ciudadana = as.numeric(p156),
p137 = case_when(p137 %in% c(8888, 9999) ~ NA_real_, TRUE ~ p137),
Aprobacion_Alcalde = factor(case_when(
p137 == 0 ~ "Desaprueba",
p137 == 1 ~ "Aprueba",
TRUE ~ "No sabe / No contesta")),
p138 = case_when(p138 %in% c(8888, 9999) ~ 0, TRUE ~ p138),
Percepcion_Municipio = as.numeric(p138),
across(cp9_1:cp9_10, ~ case_when(.x %in% c(8888, 9999) ~ 0, TRUE ~ .x)),
Nivel_Maximo_Estudios = rowSums(select(., cp9_1:cp9_10), na.rm = TRUE),
Nivel_Maximo_Estudios = factor(case_when(
Nivel_Maximo_Estudios == 1 ~ "Preescolar",
Nivel_Maximo_Estudios == 2 ~ "Primaria",
Nivel_Maximo_Estudios == 3 ~ "Secundaria",
Nivel_Maximo_Estudios == 4 ~ "Preparatoria o Bachillerato General",
Nivel_Maximo_Estudios == 5 ~ "Bachillerato Tecnológico",
Nivel_Maximo_Estudios == 6 ~ "Estudios Técnicos o Comerciales con Primaria",
Nivel_Maximo_Estudios == 7 ~ "Estudios Técnicos o Comerciales con Secundaria",
Nivel_Maximo_Estudios == 8 ~ "Estudios Técnicos o Comerciales con Preparatoria",
Nivel_Maximo_Estudios == 9 ~ "Normal con Primaria o Secundaria",
Nivel_Maximo_Estudios == 10 ~ "Normal de Licenciatura",
Nivel_Maximo_Estudios == 11 ~ "Licenciatura",
Nivel_Maximo_Estudios == 12 ~ "Especialidad",
Nivel_Maximo_Estudios == 13 ~ "Maestría",
Nivel_Maximo_Estudios == 14 ~ "Doctorado",
TRUE ~ "No especificado")),
p139 = case_when(p139 %in% c(8888, 9999) ~ 0, TRUE ~ p139),
Evaluacion_Gobierno_Alcalde = as.numeric(p139),
p52_1 = case_when(p52_1 %in% c(9999) ~ 0, TRUE ~ p52_1),
Satisfaccion_Alumbrado_Publico = as.numeric(p52_1),
p52_2 = case_when(p52_2 %in% c(8888, 9999) ~ 0, TRUE ~ p52_2),
Satisfaccion_Calle_Avenidas = as.numeric(p52_2),
p52_3 = case_when(p52_3 %in% c(8888, 9999) ~ 0, TRUE ~ p52_3),
Satisfaccion_Parques_Areas_Verdes = as.numeric(p52_3),
p52_4 = case_when(p52_4 %in% c(8888, 9999) ~ 0, TRUE ~ p52_4),
Satisfaccion_Parques_Areas_Verdes = as.numeric(p52_4),
p52_5 = case_when(p52_5 %in% c(8888, 9999) ~ 0, TRUE ~ p52_5),
Satisfaccion_Parques_Areas_Verdes = as.numeric(p52_5),
across(cp8_1:cp8_10, ~ case_when(.x %in% c(8888, 9999) ~ 0, TRUE ~ .x)),
Nivel_Educativo = rowSums(select(., cp8_1:cp8_10), na.rm = TRUE),
Nivel_Educativo = factor(case_when(
Nivel_Educativo == 1 ~ "Preescolar",
Nivel_Educativo == 2 ~ "Primaria",
Nivel_Educativo == 3 ~ "Secundaria",
Nivel_Educativo == 4 ~ "Preparatoria o Bachillerato General",
Nivel_Educativo == 5 ~ "Bachillerato Tecnológico",
Nivel_Educativo == 6 ~ "Estudios Técnicos o Comerciales con Primaria",
Nivel_Educativo == 7 ~ "Estudios Técnicos o Comerciales con Secundaria",
Nivel_Educativo == 8 ~ "Estudios Técnicos o Comerciales con Preparatoria",
Nivel_Educativo == 9 ~ "Normal con Primaria o Secundaria",
Nivel_Educativo == 10 ~ "Normal de Licenciatura",
Nivel_Educativo == 11 ~ "Licenciatura",
Nivel_Educativo == 12 ~ "Especialidad",
Nivel_Educativo == 13 ~ "Maestría",
Nivel_Educativo == 14 ~ "Doctorado",
TRUE ~ "No especificado")),
across(p117, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
Medio_Informacion = factor(case_when(
p117 == 1 ~ "Redes sociales",
p117 == 2 ~ "Periódico",
p117 == 3 ~ "Televisión",
p117 == 4 ~ "Radio",
p117 == 5 ~ "Portal de noticias en internet",
p117 == 6 ~ "Volanteo o perifoneo",
p117 == 7 ~ "Conversaciones con conocidos",
p117 == 8 ~ "Página web institucional",
p117 == 9 ~ "No se entera",
p117 == 10 ~ "Otro",
TRUE ~ NA_character_)),
across(p118, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
Red_Social_Informacion = factor(case_when(
p118 == 1 ~ "Facebook",
p118 == 2 ~ "X (antes Twitter)",
p118 == 3 ~ "Instagram",
p118 == 4 ~ "TikTok",
p118 == 5 ~ "WhatsApp",
p118 == 6 ~ "YouTube",
p118 == 7 ~ "Telegram",
p118 == 8 ~ "Otra",
TRUE ~ NA_character_
)),
across(p120, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
Voto_Pasadas_Elecciones = factor(case_when(
p120 == 1 ~ "Sí",
p120 == 0 ~ "No",
TRUE ~ NA_character_
)),
across(p122, ~ case_when(.x %in% c(9999) ~ NA_real_, TRUE ~ .x)),
Razon_Voto_Alcalde = factor(case_when(
p122 == 1 ~ "Por sus propuestas",
p122 == 2 ~ "Por su experiencia/ trayectoria",
p122 == 3 ~ "Me identifico con su partido",
p122 == 4 ~ "Recibí un beneficio a cambio",
p122 == 5 ~ "Amenaza de despido laboral",
p122 == 6 ~ "Amenaza con perder apoyo social",
p122 == 7 ~ "No quería que ganara otro candidato",
p122 == 8 ~ "Voto útil",
p122 == 9 ~ "Por su carisma",
p122 == 10 ~ "Lo conozco",
p122 == 11 ~ "Quiero un cambio",
p122 == 12 ~ "Solo por cumplir",
TRUE ~ NA_character_
)),
) %>%
select(-sexo_num, -nom_mun_mv, -cp4_1, -cp7_1:-cp7_10, -cp8_1:-cp8_10, -cp9_1:-cp9_10, -p75, -p164, -p123, -p124, -p125, -p126, -p127, -p128, -p129, -p131_1, -p132_2, -p133_3, -p133_4, -p133_5, -p136, -p137, -p138, -p139, -p156, -p52_1, -p52_2, -p52_3, -p52_4, -p52_5, -cp9_1, -p117, -p118, -p120, -p122)
View(eav2024_selected_clean)
#para deseleccionar
##NA
library(dplyr)
library(tidyr)
na_table <- eav2024_selected_clean %>%
summarise(across(everything(), ~ sum(is.na(.x)))) %>% # cuenta NAs
pivot_longer(everything(),
names_to = "variable",
values_to = "na_total") %>% # de ancho a largo
arrange(desc(na_total))# orden
eav2024_selected_clean[] <- lapply(eav2024_selected_clean, function(x) {
# Si la columna es factor, conviértela a carácter para evitar niveles fantasma
if (is.factor(x)) x <- as.character(x)
x[x %in% c(8888, 9999)] <- NA
x
})
eav2024_selected_clean <- eav2024_selected_clean %>%
mutate(across(everything(), ~ replace(.x, .x %in% c(8888, 9999), NA)))
##Imputación
#No es recomendable si es mayor a 40%.
#Imputar: Mediante el comportamiento de otras variables, predecir las faltantes.
library(mice)
##
## Attaching package: 'mice'
## The following object is masked from 'package:stats':
##
## filter
## The following objects are masked from 'package:base':
##
## cbind, rbind
Imputacion_EstudiosMaximos1 <- eav2024_selected_clean %>% #Imputacion_EstudiosMaximos1 selecciona las variables requeridas para la imputación
mutate(nom_loc_mv = as.factor(nom_loc_mv)) %>%
mutate(sexo = as.factor(sexo)) %>%
mutate(Nivel_Maximo_Estudios = as.factor(Nivel_Maximo_Estudios)) %>%
mutate(IngresoDomesticoMensual = as.factor(IngresoDomesticoMensual)) %>%
mutate(Nivel_Educativo = as.factor(Nivel_Educativo)) %>%
select(Razon_Voto_Alcalde, nom_loc_mv, edad, sexo, PercepCorruptioMuni, Nivel_Educativo, Nivel_Maximo_Estudios, Razon_Voto_Alcalde, IngresoDomesticoMensual, Altruismo_Alcalde, Influencia_Ciudadana, AlcalCapaz, GoberEficiencia, AlcalHonesto, AlcaEficiencia, AlcalCumplidor, Voto_Pasadas_Elecciones, AlcalBuenEquipo, AlcalAcuerdos, AlcaFavoritismo, Medio_Informacion)
imputacion <- mice(Imputacion_EstudiosMaximos1, method = "pmm", m = 5, seed = 13) #El comando mice hace la imputación
##
## iter imp variable
## 1 1 IngresoDomesticoMensual Influencia_Ciudadana
## 1 2 IngresoDomesticoMensual Influencia_Ciudadana
## 1 3 IngresoDomesticoMensual Influencia_Ciudadana
## 1 4 IngresoDomesticoMensual Influencia_Ciudadana
## 1 5 IngresoDomesticoMensual Influencia_Ciudadana
## 2 1 IngresoDomesticoMensual Influencia_Ciudadana
## 2 2 IngresoDomesticoMensual Influencia_Ciudadana
## 2 3 IngresoDomesticoMensual Influencia_Ciudadana
## 2 4 IngresoDomesticoMensual Influencia_Ciudadana
## 2 5 IngresoDomesticoMensual Influencia_Ciudadana
## 3 1 IngresoDomesticoMensual Influencia_Ciudadana
## 3 2 IngresoDomesticoMensual Influencia_Ciudadana
## 3 3 IngresoDomesticoMensual Influencia_Ciudadana
## 3 4 IngresoDomesticoMensual Influencia_Ciudadana
## 3 5 IngresoDomesticoMensual Influencia_Ciudadana
## 4 1 IngresoDomesticoMensual Influencia_Ciudadana
## 4 2 IngresoDomesticoMensual Influencia_Ciudadana
## 4 3 IngresoDomesticoMensual Influencia_Ciudadana
## 4 4 IngresoDomesticoMensual Influencia_Ciudadana
## 4 5 IngresoDomesticoMensual Influencia_Ciudadana
## 5 1 IngresoDomesticoMensual Influencia_Ciudadana
## 5 2 IngresoDomesticoMensual Influencia_Ciudadana
## 5 3 IngresoDomesticoMensual Influencia_Ciudadana
## 5 4 IngresoDomesticoMensual Influencia_Ciudadana
## 5 5 IngresoDomesticoMensual Influencia_Ciudadana
## Warning: Number of logged events: 38
imputacion$method #imputación$method comprueba que se haya hecho la imputación
## Razon_Voto_Alcalde nom_loc_mv edad
## "" "" ""
## sexo PercepCorruptioMuni Nivel_Educativo
## "" "" ""
## Nivel_Maximo_Estudios IngresoDomesticoMensual Altruismo_Alcalde
## "" "pmm" ""
## Influencia_Ciudadana AlcalCapaz GoberEficiencia
## "pmm" "" ""
## AlcalHonesto AlcaEficiencia AlcalCumplidor
## "" "" ""
## Voto_Pasadas_Elecciones AlcalBuenEquipo AlcalAcuerdos
## "" "" ""
## AlcaFavoritismo Medio_Informacion
## "" ""
imputacion_final <- complete(imputacion, 1)
View(imputacion_final)
#PostImputación
# Copiar el dataset original para no modificar el original directamente
eav2024_final <- eav2024_selected_clean
# Reemplazar las columnas imputadas en el nuevo dataset
columnas_imputadas <- names(imputacion_final)
eav2024_final[, columnas_imputadas] <- imputacion_final[, columnas_imputadas]
# Asegurar que los factores se mantengan como factores
eav2024_final <- eav2024_final %>%
mutate(nom_loc_mv = as.factor(nom_loc_mv),
sexo = as.factor(sexo))
# Asegurar que las columnas imputadas reemplacen a las originales
eav2024_final <- eav2024_selected_clean %>%
mutate(across(all_of(names(imputacion_final)), ~ imputacion_final[[cur_column()]]))
# Chequear NAs en las columnas imputadas
colSums(is.na(eav2024_final[, columnas_imputadas]))
## Razon_Voto_Alcalde nom_loc_mv edad
## 871 0 0
## sexo PercepCorruptioMuni Nivel_Educativo
## 0 2 0
## Nivel_Maximo_Estudios IngresoDomesticoMensual Altruismo_Alcalde
## 0 0 188
## Influencia_Ciudadana AlcalCapaz GoberEficiencia
## 0 8 7
## AlcalHonesto AlcaEficiencia AlcalCumplidor
## 7 4 4
## Voto_Pasadas_Elecciones AlcalBuenEquipo AlcalAcuerdos
## 4 3 3
## AlcaFavoritismo Medio_Informacion
## 2 2
# Comparar una columna antes y después
summary(eav2024_selected_clean$IngresoDomesticoMensual)
## Length Class Mode
## 4942 character character
summary(eav2024_final$IngresoDomesticoMensual)
## 1-2 SM 2-3 SM 3-4 SM
## 2121 1155 323
## 4-5 SM 5-6 SM 6-7 SM
## 82 31 21
## 7-8 SM 8-9 SM 9-10 SM
## 22 16 5
## Sin Ingreso (Salario) x < 1 SM x ≥ 10 SM
## 164 997 5
View(eav2024_final)
#Primer modelo básico #Regresión Logística
#Para más de 2 niveles, usa lm o simplemente omitir el family binomial.
lm(Influencia_Ciudadana ~ Nivel_Educativo + Percepcion_Municipio, family = gaussian, data = eav2024_final, weights = Factor_CVNL)
## Warning: In lm.wfit(x, y, w, offset = offset, singular.ok = singular.ok,
## ...) :
## extra argument 'family' will be disregarded
##
## Call:
## lm(formula = Influencia_Ciudadana ~ Nivel_Educativo + Percepcion_Municipio,
## data = eav2024_final, weights = Factor_CVNL, family = gaussian)
##
## Coefficients:
## (Intercept)
## 2.653183
## Nivel_EducativoDoctorado
## -0.050027
## Nivel_EducativoEspecialidad
## -0.120948
## Nivel_EducativoEstudios Técnicos o Comerciales con Preparatoria
## -0.009104
## Nivel_EducativoEstudios Técnicos o Comerciales con Primaria
## 0.035816
## Nivel_EducativoEstudios Técnicos o Comerciales con Secundaria
## 0.024491
## Nivel_EducativoLicenciatura
## -0.152154
## Nivel_EducativoMaestría
## 0.053817
## Nivel_EducativoNo especificado
## -0.144863
## Nivel_EducativoNormal con Primaria o Secundaria
## -0.262170
## Nivel_EducativoNormal de Licenciatura
## -0.156902
## Nivel_EducativoPreescolar
## 1.568262
## Nivel_EducativoPreparatoria o Bachillerato General
## -0.033704
## Nivel_EducativoPrimaria
## -0.032029
## Nivel_EducativoSecundaria
## 0.064365
## Percepcion_Municipio
## -0.073815
set.seed(13)
n <- nrow(eav2024_final)
aleatorios <- sample(1:n, size = 0.7*n)
#Entrenamiento
entrenamiento <- eav2024_final[aleatorios,]#Cuando se usen corchetes, se usa al lado izquierdo.
#Prueba
prueba <- eav2024_final[-aleatorios,]
#En vez de usar el dataframe original, se usa el de entrenamiento
modelo_entrenamiento <- lm(Influencia_Ciudadana ~ Nivel_Educativo + Percepcion_Municipio, data = entrenamiento ,weights = Factor_CVNL)
#Predicción
predicciones <- predict(modelo_entrenamiento, data=prueba, type = "response")
prediccion_binaria <- ifelse(predicciones>0.5, 1, 0)#Si es de si y no, entonces sustituye ambos números