Este es mi analisis exploratorio de datos sobre “Opinion Publica Colombia” para mi clase de Estadistica Inferencial. El conjunto de datos “Opinión Pública Colombia” contiene información proveniente de una encuesta nacional sobre percepciones políticas, sociales y económicas de la ciudadanía. Incluye 1500 observaciones y 37 variables, que abarcan aspectos demográficos, niveles de confianza en instituciones, uso de redes sociales, percepción de la economía y la seguridad, entre otros.
library(tidyverse)# Incluye paquetes de importación, visualización entre otros
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.2 ✔ tibble 3.3.0
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.1.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)# Manipulación de Datos
library(ggplot2)# Visualización de datos
library(readxl)# Importación de datos
library(tibble)# Tablas
library(readr) #Para cargar la base de datos
En este apartado estaremos cargando los datos sobre opinión pública
datos <- read.csv("C:/Users/greyr/Downloads/opinion_publica_Colmbia.csv")
ver los nombres de las variables
head(datos)# visualizar los primeros 6 datos
## id fecha_entrevista region departamento municipio
## 1 1 2025-07-15 Andina Norte de Santander Municipio_21
## 2 2 2025-08-14 Caribe Bolívar Municipio_127
## 3 3 2025-08-22 Caribe Atlántico Municipio_225
## 4 4 2025-07-21 Pacífico Cauca Municipio_225
## 5 5 2025-07-14 Insular San Andrés y Providencia Municipio_269
## 6 6 2025-07-09 Andina Boyacá Municipio_268
## estrato_muestral cluster_psu peso_muestral sexo edad estrato
## 1 Urbano 160 0.554 Femenino 40 2
## 2 Urbano 6 1.405 Masculino 36 3
## 3 Urbano 193 1.382 Masculino 54 1
## 4 Urbano 121 0.785 Femenino 48 3
## 5 Urbano 59 1.354 Femenino 37 2
## 6 Urbano 178 1.114 Masculino 18 2
## educacion ocupacion ingreso_mensual ideologia interes_politica
## 1 Secundaria Cuenta propia 1348000 Izquierda Bajo
## 2 Secundaria Desempleado/a 1042000 Centro Alto
## 3 Universitaria Desempleado/a 2316000 Izquierda Medio
## 4 Técnica/tecnológica Empleado/a 1498000 Izquierda Medio
## 5 Secundaria Empleado/a 9311000 Centro Alto
## 6 Posgrado Empleado/a 1123000 Centro Alto
## intencion_voto conf_gobierno conf_congreso conf_corte_suprema
## 1 Indeciso 3 1 4
## 2 Gobierno 5 4 2
## 3 Indeciso 2 2 2
## 4 Voto en blanco 4 4 3
## 5 Voto en blanco 2 3 3
## 6 Gobierno 4 3 4
## conf_fuerza_publica conf_medios satisfaccion_vida percepcion_economia
## 1 2 3 3 2
## 2 5 4 4 2
## 3 1 3 2 2
## 4 5 4 2 5
## 5 4 2 3 2
## 6 3 2 4 3
## percepcion_seguridad percepcion_corrupcion uso_redes_horas
## 1 5 3 0.6
## 2 3 4 1.9
## 3 4 5 2.7
## 4 3 4 0.0
## 5 3 4 3.2
## 6 2 4 1.4
## plataforma_principal frecuencia_tv_noticias temas_prioritarios
## 1 Instagram Nunca Empleo
## 2 TikTok Ocasional Economía|Seguridad
## 3 WhatsApp Diaria Salud
## 4 TikTok Semanal Transporte
## 5 Facebook Diaria Salud
## 6 WhatsApp Diaria Empleo|Transporte
## satisfaccion_gobierno aprobacion_alcalde aprobacion_gobernador
## 1 2 3 3
## 2 2 2 3
## 3 5 3 3
## 4 4 4 5
## 5 2 3 3
## 6 3 3 4
## satisfaccion_servicios percepcion_salud percepcion_educacion
## 1 2 2 1
## 2 2 2 4
## 3 3 2 2
## 4 3 4 5
## 5 2 2 3
## 6 2 2 4
## comentario_breve
## 1 Hay avances, pero falta mucho por hacer.
## 2 Más oportunidades de empleo para jóvenes.
## 3 Más oportunidades de empleo para jóvenes.
## 4 La educación debe ser prioridad.
## 5 La educación debe ser prioridad.
## 6 Quisiera más apoyo a emprendedores.
str(datos)# visualizar la estructura de los datos/variables
## 'data.frame': 1500 obs. of 37 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ fecha_entrevista : chr "2025-07-15" "2025-08-14" "2025-08-22" "2025-07-21" ...
## $ region : chr "Andina" "Caribe" "Caribe" "Pacífico" ...
## $ departamento : chr "Norte de Santander" "Bolívar" "Atlántico" "Cauca" ...
## $ municipio : chr "Municipio_21" "Municipio_127" "Municipio_225" "Municipio_225" ...
## $ estrato_muestral : chr "Urbano" "Urbano" "Urbano" "Urbano" ...
## $ cluster_psu : int 160 6 193 121 59 178 196 8 40 174 ...
## $ peso_muestral : num 0.554 1.405 1.382 0.785 1.354 ...
## $ sexo : chr "Femenino" "Masculino" "Masculino" "Femenino" ...
## $ edad : int 40 36 54 48 37 18 29 48 42 18 ...
## $ estrato : int 2 3 1 3 2 2 2 3 5 4 ...
## $ educacion : chr "Secundaria" "Secundaria" "Universitaria" "Técnica/tecnológica" ...
## $ ocupacion : chr "Cuenta propia" "Desempleado/a" "Desempleado/a" "Empleado/a" ...
## $ ingreso_mensual : int 1348000 1042000 2316000 1498000 9311000 1123000 5094000 3618000 1432000 1796000 ...
## $ ideologia : chr "Izquierda" "Centro" "Izquierda" "Izquierda" ...
## $ interes_politica : chr "Bajo" "Alto" "Medio" "Medio" ...
## $ intencion_voto : chr "Indeciso" "Gobierno" "Indeciso" "Voto en blanco" ...
## $ conf_gobierno : int 3 5 2 4 2 4 5 3 2 4 ...
## $ conf_congreso : int 1 4 2 4 3 3 2 4 2 4 ...
## $ conf_corte_suprema : int 4 2 2 3 3 4 1 4 4 2 ...
## $ conf_fuerza_publica : int 2 5 1 5 4 3 3 5 5 3 ...
## $ conf_medios : int 3 4 3 4 2 2 3 2 2 1 ...
## $ satisfaccion_vida : int 3 4 2 2 3 4 2 3 4 3 ...
## $ percepcion_economia : int 2 2 2 5 2 3 3 3 3 4 ...
## $ percepcion_seguridad : int 5 3 4 3 3 2 3 4 4 1 ...
## $ percepcion_corrupcion : int 3 4 5 4 4 4 4 2 5 4 ...
## $ uso_redes_horas : num 0.6 1.9 2.7 0 3.2 1.4 1.6 1.6 4.4 3.5 ...
## $ plataforma_principal : chr "Instagram" "TikTok" "WhatsApp" "TikTok" ...
## $ frecuencia_tv_noticias: chr "Nunca" "Ocasional" "Diaria" "Semanal" ...
## $ temas_prioritarios : chr "Empleo" "Economía|Seguridad" "Salud" "Transporte" ...
## $ satisfaccion_gobierno : int 2 2 5 4 2 3 2 2 2 4 ...
## $ aprobacion_alcalde : int 3 2 3 4 3 3 3 3 4 1 ...
## $ aprobacion_gobernador : int 3 3 3 5 3 4 1 3 2 3 ...
## $ satisfaccion_servicios: int 2 2 3 3 2 2 2 3 3 1 ...
## $ percepcion_salud : int 2 2 2 4 2 2 5 3 2 1 ...
## $ percepcion_educacion : int 1 4 2 5 3 4 2 5 3 5 ...
## $ comentario_breve : chr "Hay avances, pero falta mucho por hacer." "Más oportunidades de empleo para jóvenes." "Más oportunidades de empleo para jóvenes." "La educación debe ser prioridad." ...
dim(datos)# visualizar las dimensiones de los datos/variables
## [1] 1500 37
head(datos$ ocupacion)
## [1] "Cuenta propia" "Desempleado/a" "Desempleado/a" "Empleado/a"
## [5] "Empleado/a" "Empleado/a"
summary(datos)
## id fecha_entrevista region departamento
## Min. : 1.0 Length:1500 Length:1500 Length:1500
## 1st Qu.: 375.8 Class :character Class :character Class :character
## Median : 750.5 Mode :character Mode :character Mode :character
## Mean : 750.5
## 3rd Qu.:1125.2
## Max. :1500.0
## municipio estrato_muestral cluster_psu peso_muestral
## Length:1500 Length:1500 Min. : 1.00 Min. :0.5020
## Class :character Class :character 1st Qu.: 47.00 1st Qu.:0.8735
## Mode :character Mode :character Median : 96.00 Median :1.2825
## Mean : 98.37 Mean :1.2675
## 3rd Qu.:148.00 3rd Qu.:1.6605
## Max. :200.00 Max. :1.9960
## sexo edad estrato educacion
## Length:1500 Min. :18.00 Min. :1.000 Length:1500
## Class :character 1st Qu.:29.00 1st Qu.:2.000 Class :character
## Mode :character Median :38.00 Median :3.000 Mode :character
## Mean :38.38 Mean :2.603
## 3rd Qu.:47.00 3rd Qu.:3.000
## Max. :85.00 Max. :6.000
## ocupacion ingreso_mensual ideologia interes_politica
## Length:1500 Min. : 400000 Length:1500 Length:1500
## Class :character 1st Qu.: 1190000 Class :character Class :character
## Mode :character Median : 1821000 Mode :character Mode :character
## Mean : 2122479
## 3rd Qu.: 2647250
## Max. :11233000
## intencion_voto conf_gobierno conf_congreso conf_corte_suprema
## Length:1500 Min. :1.000 Min. :1.000 Min. :1.000
## Class :character 1st Qu.:2.000 1st Qu.:2.000 1st Qu.:2.000
## Mode :character Median :3.000 Median :2.000 Median :3.000
## Mean :2.814 Mean :2.397 Mean :3.063
## 3rd Qu.:3.000 3rd Qu.:3.000 3rd Qu.:4.000
## Max. :5.000 Max. :5.000 Max. :5.000
## conf_fuerza_publica conf_medios satisfaccion_vida percepcion_economia
## Min. :1.000 Min. :1.00 Min. :1.000 Min. :1.000
## 1st Qu.:3.000 1st Qu.:2.00 1st Qu.:3.000 1st Qu.:2.000
## Median :3.000 Median :3.00 Median :3.000 Median :3.000
## Mean :3.377 Mean :2.91 Mean :3.438 Mean :2.705
## 3rd Qu.:4.000 3rd Qu.:4.00 3rd Qu.:4.000 3rd Qu.:3.000
## Max. :5.000 Max. :5.00 Max. :5.000 Max. :5.000
## percepcion_seguridad percepcion_corrupcion uso_redes_horas
## Min. :1.000 Min. :1.000 Min. :0.000
## 1st Qu.:2.000 1st Qu.:3.000 1st Qu.:1.600
## Median :3.000 Median :4.000 Median :2.500
## Mean :2.654 Mean :3.929 Mean :2.573
## 3rd Qu.:3.000 3rd Qu.:5.000 3rd Qu.:3.500
## Max. :5.000 Max. :5.000 Max. :7.600
## plataforma_principal frecuencia_tv_noticias temas_prioritarios
## Length:1500 Length:1500 Length:1500
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
## satisfaccion_gobierno aprobacion_alcalde aprobacion_gobernador
## Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:2.000 1st Qu.:2.000 1st Qu.:2.000
## Median :3.000 Median :3.000 Median :3.000
## Mean :2.689 Mean :2.975 Mean :3.121
## 3rd Qu.:3.000 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :5.000 Max. :5.000 Max. :5.000
## satisfaccion_servicios percepcion_salud percepcion_educacion
## Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:2.000 1st Qu.:2.000 1st Qu.:2.000
## Median :3.000 Median :3.000 Median :3.000
## Mean :3.019 Mean :2.769 Mean :3.019
## 3rd Qu.:4.000 3rd Qu.:3.000 3rd Qu.:4.000
## Max. :5.000 Max. :5.000 Max. :5.000
## comentario_breve
## Length:1500
## Class :character
## Mode :character
##
##
##
Con el siguiente codigo estamos convirtiendo las variables cualitativas para que Rstudio las identifique
#Convertir variables en factores
datos$sexo <- as.factor(datos$sexo ) #OJO: con el signo "$" llamo a una variable específica de mi dataset
datos$ educacion <- as.factor(datos$ educacion)
datos$frecuencia_tv_noticias <-as.factor(datos$frecuencia_tv_noticias)
datos$interes_politica <-as.factor(datos$interes_politica)
colSums(is.na(datos))
## id fecha_entrevista region
## 0 0 0
## departamento municipio estrato_muestral
## 0 0 0
## cluster_psu peso_muestral sexo
## 0 0 0
## edad estrato educacion
## 0 0 0
## ocupacion ingreso_mensual ideologia
## 0 0 0
## interes_politica intencion_voto conf_gobierno
## 0 0 0
## conf_congreso conf_corte_suprema conf_fuerza_publica
## 0 0 0
## conf_medios satisfaccion_vida percepcion_economia
## 0 0 0
## percepcion_seguridad percepcion_corrupcion uso_redes_horas
## 0 0 0
## plataforma_principal frecuencia_tv_noticias temas_prioritarios
## 0 0 0
## satisfaccion_gobierno aprobacion_alcalde aprobacion_gobernador
## 0 0 0
## satisfaccion_servicios percepcion_salud percepcion_educacion
## 0 0 0
## comentario_breve
## 0
tabla_educacion <- table(datos$educacion)
print(tabla_educacion)
##
## Posgrado Primaria o menos Secundaria Técnica/tecnológica
## 90 191 588 275
## Universitaria
## 356
# Determinar automáticamente el número de intervalos con la regla de Sturges
num_intervals <- nclass.Sturges(datos$ingreso_mensual)
# Agrupar ingresos en intervalos automáticos
datos$ingreso_grupo <- cut(datos$ingreso_mensual, breaks = num_intervals, include.lowest = TRUE)
# Crear la tabla de frecuencia
tabla_ingreso <- table(datos$ingreso_grupo)
# Convertir en data frame para mejor presentación
tabla_ingreso_df <- as.data.frame(tabla_ingreso)
colnames(tabla_ingreso_df) <- c("Rango de Ingreso", "Frecuencia")
# Calcular la frecuencia relativa
frecuencia_relativa <- prop.table(tabla_ingreso) * 100 # Convertir a porcentaje
tabla_ingreso_df$frecuencia_relativa <- round(frecuencia_relativa, 2) # Agregar columna con % y redondear
tabla_ingreso_df #Mostrar la tabla resultante
## Rango de Ingreso Frecuencia frecuencia_relativa
## 1 [3.89e+05,1.3e+06] 449 29.93
## 2 (1.3e+06,2.21e+06] 499 33.27
## 3 (2.21e+06,3.11e+06] 283 18.87
## 4 (3.11e+06,4.01e+06] 134 8.93
## 5 (4.01e+06,4.91e+06] 74 4.93
## 6 (4.91e+06,5.82e+06] 35 2.33
## 7 (5.82e+06,6.72e+06] 11 0.73
## 8 (6.72e+06,7.62e+06] 5 0.33
## 9 (7.62e+06,8.52e+06] 5 0.33
## 10 (8.52e+06,9.43e+06] 1 0.07
## 11 (9.43e+06,1.03e+07] 3 0.20
## 12 (1.03e+07,1.12e+07] 1 0.07
Diagrama de Caja y Bigotes
boxplot(datos$edad, horizontal=TRUE, col='green ', main="Boxplot de edad")
Del caja y bigotes se concluye que la mediana (línea negra dentro de la caja) está cerca de los 40 años, indicando que la mitad de la muestra tiene menos de 40 años y la otra mitad más.
Diagrama de Barras
ggplot(datos, aes(x = sexo, fill = sexo)) +
geom_bar() +
labs(title = "Distribución de Género", x = "Género", y = "Frecuencia") +
theme_minimal()
Del diagrama de barras se concluye:
Distribución de género equilibrada, con ligera mayoría femenina.
La categoría “Otro/No responde” es mínima, mostrando que la mayor parte de la muestra se identifica como masculino o femenino.
Los encuestados con mayor uso de redes sociales (promedio: 3.5 horas/día) muestran un nivel más alto de interés político que quienes usan menos de 1 hora diaria.
La Fuerza Pública presenta el nivel de confianza promedio más alto (3.8/5), mientras que el Congreso es la institución con menor confianza (2.5/5).
La percepción de corrupción es más alta en las regiones Pacífico, Orinoquía y Andina (promedios cercanos a 4 en escala 1–5).
Fortalecer la comunicación institucional en plataformas digitales, dado el alto uso de redes sociales entre los grupos con mayor interés político.
Implementar campañas de transparencia y lucha contra la corrupción en regiones Pacifico, Orinoquia y Andina donde la percepción de corrupción es más alta.