1. Carga de librerías y datos


2. Limpieza y exploración inicial de datos

#SELECCIÓN DE VARIABLES DE LA BASE ORIGINAL QUE SE EMPLEARÁN EN EL ANÁLISIS
variables <- c("Factor_CVNL", "nom_mun_mv","sexo_num","genero_num","cp7_1","cp4_1","cp8_1","cp10_1","p2","p75","p164","p99","p100","p108_1","p120","p125","p137","p151","p155","p149","p150","p73","p74","p105","p109_1","p109_3","p116","p122","p126","p127","p131_1","p132_2","p133_4","p133_5","p136","p138","p139","p140_1","p142_3","p143_4","p143_5","p145","p146","p153","p154","p156")

#CREACIÓN DE DATAFRAME CON VARIABLES SELECCIONADAS
eav2024_selected <- eav2024[, variables]


#OBSERVACIÓN DE 8888(no sabe) Y 9999(no contesta) PARA DETERMINAR QUÉ HACER CON ELLOS
m=sapply(eav2024_selected, function(col) sum(col== 8888, na.rm = TRUE))
total1 <- sum(m) #SON EN TOTAL 5480, POR LO QUE NO SE VAN A ELIMINAR
m2=sapply(eav2024_selected, function(col) sum(col== 9999, na.rm = TRUE))
total2 <- sum(m2)  #SON EN TOTAL 702, POR LO QUE SÍ SE VAN A ELIMINAR

#ELIMINACIÓN DE 9999
numericas <- c("genero_num","cp7_1","cp4_1","cp8_1","cp10_1","p2","p164","p120","p125","p132_2","p151","p155","p149","p73","p74","p105","p109_1","p109_3","p116","p122","p126","p127","p131_1","p133_4","p133_5","p136","p137","p138","p139","p140_1","p142_3","p143_4","p143_5","p145","p146","p153","p156") #IDENTIFICACIÓN DE VARIABLES CON 9999
fillas_99 <- rowSums(eav2024_selected[, numericas] == 9999, na.rm = TRUE) == 0 #IDENTIFICACIÓN DE FILAS SIN 9999
eav2024_limpio <- eav2024_selected[fillas_99,] #DATAGRAME SÓLO CON FILAS SIN 9999

#TRANSFORMACIÓN DE VARIABLES CATEGÓRICAS A FACTOR
eav2024_categoricas <- eav2024_limpio  %>%
  mutate(
    sexo = case_when(
      sexo_num == 0 ~ "Hombre",
      sexo_num == 1 ~ "Mujer"
    ),
    sexo = as.factor(sexo), #CREACIÓN DE VARIABLE FACTOR PARA SEXO (CON HOMBRE Y MUJER COMO TEXTO)
    Municipio = as.factor(nom_mun_mv), #CREACIÓN DE VARIABLE FACTOR PARA MUNICIPIO
  ) %>%
  mutate(across(
    .cols = c(
      cp8_1, p131_1, p156, p164, p120, p151,p125, p146, p137, p140_1, cp10_1, p143_4, cp4_1, cp7_1, p155, p149, p73, p74, p126, p132_2
    ), # poner todas las numericas aquí variables
    .fns = as.factor
  )) %>% #CONVERTIR VARIABLES QUE SE LEYERON COMO NUMÉRICAS PERO QUE EN REALIDAD SON CATEGÓRICAS A FACTOR
  select(-sexo_num, -nom_mun_mv) #ELIMINACIÓN DE COLUMNAS NUMÉRICAS QUE YA NO SON NECESARIAS

#RENOMBRADO DE VARIABLES
eav2024_renombre <- eav2024_categoricas %>%
  rename(
   nivel_max_estudios = cp8_1,
    total_mensual_hogar = p164,
    influencia_ciu_mun = p156,
    alcalde_honesto= p131_1,
    voto = p120,
   conoce_diputados = p151,
   aprueba_recuersos_alcalde= p125,
   aprueba_samuel = p146,
   aprueba_trabajo_alcalde = p137,
   samuel_honesto = p140_1,
   tipo_de_escuela = cp10_1,
   promesas_cum_samuel= p143_4,
   edad = cp4_1,
   estudia_actualmente = cp7_1,
   influencia_ciu_estado = p155,
   aprueba_amlo = p149,
   situacion_economica = p73,
   sit_econ_futura = p74,
   aprueba_recursos_samuel = p126,
   alcalde_resolvio = p132_2
  )

3. Preprocesamiento y creación de variables nuevas

#CREACIÓN DE VARIABLE EDUCACIÓN
niveles_educativos <- c(
  "Ninguno", "Preescolar", "Primaria", "Secundaria",
  "Preparatoria o bachillerato general", "Bachillerato tecnológico",
  "Técnicos con primaria", "Técnicos con secundaria",
  "Técnicos con preparatoria", "Normal con primaria o secundaria",
  "Normal de licenciatura", "Licenciatura",
  "Especialidad", "Maestría", "Doctorado", "No sabe"
)

eav2024_edu <- eav2024_renombre %>%
  mutate(
    nivel_educativo = as.numeric(nivel_max_estudios),
    nivel_educativo = ifelse(
      nivel_educativo %in% 0:15, nivel_educativo, NA
    ),
    nivel_educativo = factor(
      nivel_educativo,
      levels = 0:15,
      labels = niveles_educativos
    )
  ) %>%
  select(-nivel_max_estudios)



eav2024_na1 <- eav2024_edu %>%
  mutate(
    alcalde_honesto = ifelse(alcalde_honesto == 8888, NA, alcalde_honesto),
    aprueba_trabajo_alcalde = ifelse(aprueba_trabajo_alcalde == 8888, NA, aprueba_trabajo_alcalde), # Limpieza de NA
    alcalde_honesto = as.numeric(as.character(alcalde_honesto)),
    aprueba_trabajo_alcalde = as.numeric(as.character(aprueba_trabajo_alcalde)),

    # Reescalar respuestas (asumiendo 2 = Sí, 1 = No)
    alcalde_honesto = ifelse(alcalde_honesto == 1, 0,
                    ifelse(alcalde_honesto == 2, 1, alcalde_honesto)),
    aprueba_trabajo_alcalde = ifelse(aprueba_trabajo_alcalde == 1, 0,
                            ifelse(aprueba_trabajo_alcalde == 2, 1, aprueba_trabajo_alcalde))

  ) %>%
  mutate(
    desempeño_honestidad_num = round(alcalde_honesto * 0.6 + aprueba_trabajo_alcalde * 0.4), # Ponderación (60% honestidad, 40% desempeño)
    desempeño_honestidad_num = ifelse(
      is.na(alcalde_honesto) & is.na(aprueba_trabajo_alcalde), NA, desempeño_honestidad_num
    ),
    desempeño_honestidad_alcalde = factor(
      desempeño_honestidad_num,
      levels = c(0, 1),
      labels = c("No", "Sí") # 0 = No confía, 1 = Sí confía
    )
  )


#CREACIÓN DE VARIABLE INDEPENDIENTE: PERCEPCIÓN  DE INFLUENCIA CIUDADANA
eav2024_na2 <- eav2024_na1 %>%
  mutate(
    influencia_ciu_mun = ifelse(influencia_ciu_mun== 8888, NA, influencia_ciu_mun),
    influencia_ciu_estado = ifelse(influencia_ciu_estado == 8888, NA, influencia_ciu_estado)
  ) #CONVERTIR 8888 EN AMBAS VARIABLES POR NA
eav2024_na3 <- eav2024_na2 %>%
  mutate(
    influencia_ciudadana= influencia_ciu_mun + influencia_ciu_estado 
  ) 



eav2024_na4 <- eav2024_na3 %>%
  mutate(
    total_mensual_hogar = ifelse(total_mensual_hogar == 9999, NA, total_mensual_hogar),
    nivel_socioeconomico = case_when(
      total_mensual_hogar %in% 1:2 ~ "Bajo (Pobreza extrema)",
      total_mensual_hogar %in% 3 ~ "Bajo (Pobreza moderada)",
      total_mensual_hogar %in% 4:5 ~ "Medio bajo",
      total_mensual_hogar %in% 6:8 ~ "Medio",
      total_mensual_hogar %in% 9:10 ~ "Medio alto",
      total_mensual_hogar %in% 11:12 ~ "Alto",
      TRUE ~ NA_character_
    )
  )


#BASE DE DATOS CON SÓLO VARIABLES CREADAS
variables_finales <- c("nivel_educativo", "total_mensual_hogar","influencia_ciudadana", "desempeño_honestidad_alcalde",
    "voto","conoce_diputados", "aprueba_samuel", "samuel_honesto", "promesas_cum_samuel", "edad", 
   "estudia_actualmente", "aprueba_amlo", "situacion_economica", "sit_econ_futura", "Factor_CVNL") #SELECCIÓN SÓLO DE VARIABLES NECESARIAS EN EL ANÁLISIS
eav2024_semifinal <- eav2024_na4[, variables_finales]  #CREACIÓN DEL DATAFRAME

#OBSERVACIÓN DE NAs
sum(is.na(eav2024_semifinal)) #OBSERVAR TOTAL DE NA
## [1] 478
colSums(is.na(eav2024_semifinal)) #OBSERVAR CUÁNTOS NA HAY POR CADA VARIABLE
##              nivel_educativo          total_mensual_hogar 
##                          145                            0 
##         influencia_ciudadana desempeño_honestidad_alcalde 
##                          105                          228 
##                         voto             conoce_diputados 
##                            0                            0 
##               aprueba_samuel               samuel_honesto 
##                            0                            0 
##          promesas_cum_samuel                         edad 
##                            0                            0 
##          estudia_actualmente                 aprueba_amlo 
##                            0                            0 
##          situacion_economica              sit_econ_futura 
##                            0                            0 
##                  Factor_CVNL 
##                            0
# Selección de variables con NA + edad como predictor
vars_imputacion <- eav2024_semifinal %>%
  select(nivel_educativo, influencia_ciudadana, desempeño_honestidad_alcalde, edad)

# Asegúrate de que estas variables son factores con múltiples niveles
vars_imputacion$nivel_educativo <- as.factor(vars_imputacion$nivel_educativo) 
vars_imputacion$influencia_ciudadana <- as.factor(vars_imputacion$influencia_ciudadana)
vars_imputacion$desempeño_honestidad_alcalde <- as.factor(vars_imputacion$desempeño_honestidad_alcalde)
vars_imputacion$edad <- as.numeric(vars_imputacion$edad)

# Inicializar configuración
ini <- mice(vars_imputacion, maxit = 0)
predMatrix <- ini$predictorMatrix
meth <- ini$method

# Limpiar predMatrix
predMatrix[,] <- 0

# Solo edad como predictor
predMatrix["nivel_educativo", "edad"] <- 1
predMatrix["influencia_ciudadana", "edad"] <- 1
predMatrix["desempeño_honestidad_alcalde", "edad"] <- 1

# Métodos apropiados
meth["nivel_educativo"] <- "polyreg"  # para más de 2 niveles
meth["influencia_ciudadana"] <- "polyreg"
meth["desempeño_honestidad_alcalde"] <- "logreg"  # esta sí puede ser binaria
meth["edad"] <- ""  # no se imputa

# Ejecutar imputación
imputacion <- mice(vars_imputacion, m = 1, method = meth, predictorMatrix = predMatrix, seed = 123)
## 
##  iter imp variable
##   1   1  nivel_educativo  influencia_ciudadana  desempeño_honestidad_alcalde
##   2   1  nivel_educativo  influencia_ciudadana  desempeño_honestidad_alcalde
##   3   1  nivel_educativo  influencia_ciudadana  desempeño_honestidad_alcalde
##   4   1  nivel_educativo  influencia_ciudadana  desempeño_honestidad_alcalde
##   5   1  nivel_educativo  influencia_ciudadana  desempeño_honestidad_alcalde
# Extraer base imputada
datos_imputados <- complete(imputacion)

# Reintegrar a base principal
eav2024_semifinal$nivel_educativo <- datos_imputados$nivel_educativo
eav2024_semifinal$influencia_ciudadana <- datos_imputados$influencia_ciudadana
eav2024_semifinal$desempeño_honestidad_alcalde <- datos_imputados$desempeño_honestidad_alcalde


# Reintegrar a base original
eav2024_semifinal$nivel_educativo <- datos_imputados$nivel_educativo
eav2024_semifinal$influencia_ciudadana <- datos_imputados$influencia_ciudadana
eav2024_semifinal$desempeño_honestidad_alcalde <- datos_imputados$desempeño_honestidad_alcalde



# VERIFICAR NA PARA GARANTIZAR QUE YA NO HAY MÁS
sum(is.na(eav2024_semifinal))
## [1] 0
# GUARDAR BASE FINAL
eav2024_final <- eav2024_semifinal

4. División de datos en entrenamiento y prueba

# PARA EL ENTRENAMIENTO DE MODELOS SE REALIZÓ DIVISÓN EN DATOS DE ENTRENAMIENTO Y PRUEBA
set.seed(123) #PARA GARANTIZAR RESULTADOS QUE SE REPITAN
n <- nrow(eav2024_final)
aleatorios <- sample(1:n, size=0.7*n)

#CREACIÓN DE MODELO DE ENTRENAMIENTO CON PESO 0.7
entrenamiento <- eav2024_final[aleatorios,]

#CREACIÓN DE MODELO DE PRUEBA
prueba <- eav2024_final[-aleatorios,]
# MODELO RANDOM FOREST CON TODA LA BASE
modelo_rf <- randomForest(
  influencia_ciudadana ~ Factor_CVNL + total_mensual_hogar + nivel_educativo + desempeño_honestidad_alcalde,
  data = eav2024_final,
  ntree = 500,
  mtry = 2,
  nodesize = 50,
  importance = TRUE
)

saveRDS saveRDS(modelo_rf_TRAIN, file = “modelo_rf.rds”)

# AJUSTE CON CONJUNTO DE ENTRENAMIENTO
modelo_rf_TRAIN <- randomForest(
  influencia_ciudadana ~ Factor_CVNL + total_mensual_hogar + nivel_educativo + desempeño_honestidad_alcalde,
  data = entrenamiento,
  ntree = 500,
  mtry = 2,
  nodesize = 50,
  importance = TRUE
)
saveRDS(modelo_rf, file = "Modelo_base_Mariana.Rmd")

11. Implementación en Shiny

# UI
library(shiny)
library(glue)

ui <- fluidPage(
  
#Titulo de nuestro proyecto 
  fluidRow(
    column(width = 4, tags$img(src = "fotoNL.jpg", width = "100%")),
    column(width = 8, titlePanel("Educación, Ingresos y Participación Ciudadana en Nuevo León")),
    p("Desarrollado por Isabella Boquin y Mariana Luna"),
  ),
  
  tabsetPanel(
    
# Intro y Glosario
    tabPanel("Contexto",
             h2("Introducción al problema y pregunta de Investigación"),
             p("En el estado de Nuevo León, donde coexisten altos niveles de desarrollo industrial con marcadas
               desigualdades sociales, surge la necesidad de comprender cómo estas condiciones impactan la manera
               en que los ciudadanos se informan, opinan y participan en los asuntos públicos. Con esto en mente queremos saber:
               ¿cómo influyen el nivel educativo y socioeconómico en la percepción de los ciudadanos de Nuevo León sobre su 
               capacidad de incidir en las decisiones públicas?"),
             
             h2("Glosario de Variables"),
             p("En este apartado definimos las 6 variables mas importantes para nuestra investigación. Cómo estamos 
               buscando relación e influencia de variables que se relacionan con la educación, los ingresos y la participación
               ciudadana, nos guiamos por las variables en la encuesta que se relacionaran a estos temas. 
               Había mucho de donde elegir, pero las mejores variables y las que creémos que nos dan mas insight 
               en la investigación son estas"),
             
             tags$ul(
               tags$li("nivel_max_estudios: Nivel más alto de estudios del encuestado."),
               tags$li("voto: Si votó en las últimas elecciones o no."),
               tags$li("total_mensual_hogar: Ingreso mensual total del hogar del encuestado."),
               tags$li("influencia_ciu_mun: Percepción de influencia en el municipio del encuestado."),
               tags$li("conoce_diputados: Si conoce a los diputados locales de su municipio."),
               tags$li("situacion_economica: Cómo el encuestado percibe su situación económica.")
             ),
             tags$img(src = "partici.jpg", width = "80%"),
             
    ),
    
# Simulador / Ingreso de datos
    tabPanel("Panel de ingreso de datos",
             sidebarLayout(
               sidebarPanel(
                 numericInput("bins", "Edad (en años):", min = 1, max = 100, value = 30),
                 selectInput("cups", "Municipio en el que vives:", c("Abasolo" = "01", "Agualeguas" = "02", "Allende" = "03", "Anáhuac" = "04", "Apodaca" = "05", "Aramberri" = "06", "Bustamante" = "07", "Cadereyta Jiménez" = "08", "Carmen" = "09", "Cerralvo" = "10", "China" = "11", "Ciénega de Flores" = "12", "Doctor Arroyo" = "13", "Doctor Coss" = "14", "Doctor González" = "15", "Galeana" = "16", "García" = "17", "San Pedro Garza García" = "18", "General Bravo" = "19", "General Escobedo" = "20", "General Terán" = "21", "General Treviño" = "22", "General Zaragoza" = "23", "General Zuazua" = "24", "Guadalupe" = "25", "Hidalgo" = "26", "Higueras" = "27", "Hualahuises" = "28", "Iturbide" = "29", "Juárez" = "30", "Lampazos de Naranjo" = "31", "Linares" = "32", "Los Aldamas" = "33", "Los Herreras" = "34", "Los Ramones" = "35", "Marín" = "36", "Melchor Ocampo" = "37", "Mier y Noriega" = "38", "Mina" = "39", "Montemorelos" = "40", "Monterrey" = "41", "Parás" = "42", "Pesquería" = "43", "Rayones" = "44", "Sabinas Hidalgo" = "45", "Salinas Victoria" = "46", "San Nicolás de los Garza" = "47", "Santa Catarina" = "48", "Santiago" = "49", "Vallecillo" = "50", "Villaldama" = "51")),
                 radioButtons("nivel_estudios", "Nivel máximo de estudios:", choices = c("Primaria", "Secundaria", "Bachillerato", "Profesional", "Posgrado", "Doctorado", "No contesta")),
                 textInput("ingresos", "Total mensual del hogar (en pesos):"),
                 radioButtons("influencia_mun", "¿Percibes influencia ciudadana en tu municipio?", choices = c("Sí", "No")),
                 radioButtons("honestidad_alcalde", "¿Consideras que el alcalde es honesto?", choices = c("Sí", "No", "No sabe", "No responde")),
                 radioButtons("voto", "¿Votaste en las últimas elecciones?", choices = c("Sí", "No", "No responde")),
                 radioButtons("conoces_diputados", "¿Conoces a tus diputados?", choices = c("Sí", "No", "No sabe", "No responde")),
                 radioButtons("aprueba_gasto_alcalde", "¿Apruebas el uso de recursos del alcalde?", choices = c("Sí", "No", "No sabe", "No responde")),
                 radioButtons("aprueba_samuel", "¿Apruebas a Samuel García como gobernador?", choices = c("Sí", "No", "No sabe", "No responde")),
                 radioButtons("trabajo_alcalde", "¿Apruebas el trabajo del alcalde?", choices = c("Sí", "No", "No sabe", "No responde")),
                 radioButtons("samuel_honesto", "¿Consideras que Samuel es honesto?", choices = c("Sí", "No", "No sabe", "No responde")),
                 radioButtons("estudia_actualmente", "¿Estudias actualmente?", choices = c("Sí", "No", "No sabe", "No responde")),
                 radioButtons("aprueba_amlo", "¿Apruebas a AMLO?", choices = c("Sí", "No", "No sabe", "No responde")),
                 radioButtons("situacion_economica", "Describe tu situación económica:", choices = c("Muy buena", "Buena", "Regular", "Mala", "Muy mala")),
                 radioButtons("situacion_futura", "¿Cómo crees que será tu situación económica a futuro?", choices = c("Muy buena", "Buena", "Regular", "Mala", "Muy mala")),
                 radioButtons("resolvio_problemas", "¿Consideras que el alcalde resolvió los problemas de tu municipio?", choices = c("Sí", "No", "No sabe", "No responde")),
                 actionButton("calcular", "Calcular predicción")
               ),
               mainPanel(
            tags$img(src = "inf.png", width = "20%"),
                 h3("Resumen de tu información"),
                 verbatimTextOutput("resultado")
               )
             )
    ),
    
# Resultados y Predicciones
    tabPanel("Resultados y Predicciones",
             h2("Resultados de la predicción"),
    tags$img(src = "predi.jpg", width = "20%"),
             p("Aquí se mostrarán los resultados generados por el modelo predictivo una vez ingreses tus datos 
               en el simulador."),
             verbatimTextOutput("prediccion_modelo"),
    ),
    
# Explicación y Recomendaciones
    tabPanel("Explicación y Recomendaciones",
             h2("Cómo funciona"),
             p("Usamos un modelo entrenado con los datos de la Encuesta Asi Vamos NL 2024 para estimar percepciones
               ciudadanas a partir de variables clave como educación, ingresos y opinión sobre instituciones.Este modelo 
               tiene la habilidad de predecir comportamientos basado en factores socioeconómicos,participativos y de percepción."),
             p(" ---- "),
             
             h2("Recomendaciones"),
             p("En caso de que quieras revisar el código que fue utilizado para el desarrollo de esta Shiny App o 
               el desarrollo del modelo que usamos y entrenamos, haz click en el botón que se encuentra abajo para tener 
               acceso a nuestra publicación de RPubs que cuenta con el código completo."),
    tags$img(src = "tecno.jpg", width = "30%"),
             
             h2("Link a RPubs"),
             p("En caso de que quieras revisar el código que fue utilizado para el desarrollo de esta Shiny App o 
               el desarrollo del modelo que usamos y entrenamos, haz click en el botón que se encuentra abajo para tener 
               acceso a nuestra publicación de RPubs que cuenta con el código completo."),
    tags$a(href = "LINK",
           "Ver procedimiento en RPubs",
           class = "btn btn-primary",
           target = "_blank"),
    )
  )
)
# SERVER
server <- function(input, output, session) {
    municipios <- c("01" = "Abasolo", "02" = "Agualeguas", "03" = "Allende", "04" = "Anáhuac",
                    "05" = "Apodaca", "06" = "Aramberri", "07" = "Bustamante", "08" = "Cadereyta Jiménez",
                    "09" = "Carmen", "10" = "Cerralvo", "11" = "China", "12" = "Ciénega de Flores",
                    "13" = "Doctor Arroyo", "14" = "Doctor Coss", "15" = "Doctor González", "16" = "Galeana",
                    "17" = "García", "18" = "San Pedro Garza García", "19" = "General Bravo",
                    "20" = "General Escobedo", "21" = "General Terán", "22" = "General Treviño",
                    "23" = "General Zaragoza", "24" = "General Zuazua", "25" = "Guadalupe",
                    "26" = "Hidalgo", "27" = "Higueras", "28" = "Hualahuises", "29" = "Iturbide",
                    "30" = "Juárez", "31" = "Lampazos de Naranjo", "32" = "Linares", "33" = "Los Aldamas",
                    "34" = "Los Herreras", "35" = "Los Ramones", "36" = "Marín", "37" = "Melchor Ocampo",
                    "38" = "Mier y Noriega", "39" = "Mina", "40" = "Montemorelos", "41" = "Monterrey",
                    "42" = "Parás", "43" = "Pesquería", "44" = "Rayones", "45" = "Sabinas Hidalgo",
                    "46" = "Salinas Victoria", "47" = "San Nicolás de los Garza", "48" = "Santa Catarina",
                    "49" = "Santiago", "50" = "Vallecillo", "51" = "Villaldama")
  
  output$resultado <- renderText({
    glue("Basado en tus respuestas, tienes {input$bins} años, vives en el municipio de {municipios[input$cups]}, \
          estudiaste hasta nivel {input$nivel_estudios}, reportas un ingreso mensual de {input$ingresos} pesos, \
          {input$influencia_mun} percibes influencia ciudadana, {input$honestidad_alcalde} consideras que el alcalde es honesto, \
          {input$voto} votaste en las últimas elecciones, {input$conoces_diputados} conoces a tus diputados, \
          {input$aprueba_gasto_alcalde} apruebas el gasto del alcalde,{input$aprueba_samuel} apruebas a Samuel García, \
          {input$trabajo_alcalde} apruebas el trabajo del alcalde, {input$samuel_honesto} consideras que Samuel es honesto, \
          {input$estudia_actualmente} estudias actualmente,{input$aprueba_amlo}apruebas a AMLO, \
          describes tu situación económica como {input$situacion_economica} y esperas que en el futuro sea {input$situacion_futura}, \
          además {input$resolvio_problemas} opinas que el alcalde resolvió los problemas de tu municipio.")
  })
}
  modelo_rf <- readRDS("Modelo_base_Mariana.Rmd")
  
shinyApp(ui = ui, server = server)

12. Conclusiones

Describe aquí tus hallazgos, interpretación de métricas y recomendaciones para la política o la aplicación práctica del modelo.

## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
Tabla resumen de limpieza y transformación de variables
Elemento Hallazgo_Descripción Acción_tomada Justificación
Variables de Educación Se detectaron muchos valores faltantes (N/A) en distintas variables relacionadas con el nivel educativo. Se eliminaron las variables con demasiados datos faltantes y se sustituyeron por otras más completas y representativas. El nivel educativo es clave en la investigación, así que fue necesario contar con datos sólidos. Al usar variables más completas, se asegura una mejor medición de su influencia en la participación y opinión.
Variables Socioeconómicas Se identificaron variables con buena calidad de datos y distribución representativa entre niveles. Se agregaron al análisis para complementar la dimensión educativa. El nivel socioeconómico es el otro gran eje de análisis. Incluir estas variables permite observar cómo se relaciona con la participación ciudadana y percepción pública con los ingresos de los ciudadanos.
Percepción de seguridad y entorno Se encontraron variables relacionadas con la percepción del entorno y seguridad que aportan contexto. Se agregaron al análisis como variables complementarias. La percepción de seguridad, en conjunto con el nivel educativo y socioeconómico, condiciona cómo las personas se informan, opinan y participan. Queremos ver si quienes viven en contextos inseguros o con menor acceso a educación y recursos suelen mostrar menor confianza en las instituciones y menor participación ciudadana.
Percepción política Existen variables que reflejan la percepción de las personas hacia la política y hacia los gobernantes. Se incluyeron en el análisis Son directamente relevantes para medir la percepción pública, que es uno de los componentes centrales de la pregunta de investigación.Queremos ver que tan involucrados se sienten en procesos democráticos
Regresiones Este es el hallazgo mas importante. El modelo demuestra una correlación entre ingreso y percepción. Se tuvo que decartar la regresión lineal por una logística No sabíamos que modelo nos iba a funcionar mejor, por eso corrimos ambos modelos y al analizar los valores decidimos que la regresión logística representaba los resultados que esperabamos de manera mas eficiente.
Cambios, imputaciones, variables nuevas Tuvimos la necesidad de crear la variable de influencia alta para ver si existía correlación. No imputamos ningun dato y los únicos cambios que hicimos fueron los de cambiarle el nombre a las variables en la base de datos original. Cambiamos todos los nombres de las variables a unos que entendieramos mejor. El problema con la base original era que no era tan legible sin el diccionario, por eso cambiamos todos los nombres en la limpieza. No fue necesario imputar nada ya que los datos que habiamos elegido contaban con menos de 40% de N/A, entonces no nos afectaba en la investigación.