Encuesta Nacional de Opinión Pública del Centro de Estudios Públicos CEP

La base de datos de la Encuesta Nacional de Opinión Pública del Centro de Estudios Públicos (Encuesta CEP) correspondiente a su versión del año 2019. Esta encuesta busca caracterizar las actitudes y opiniones, políticas, sociales y económicas de la población, destacando las necesidades, principales preocupaciones y preferencias de todos los habitantes del territorio nacional.

INSTALACIÓN DE LIBRERÍAS PARA ABRIR LA BASE DE DATOS EN SPSS
library(haven) 

CEP <- read_spss("Encuesta_CEP_Dic_2019.sav") 

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
SE INDICA BASE DE DATOS, EL NOMBRE DE VARIABLE A CREAR Y LOS DATOS QUE LO COMPONDRAN.
CEP1 <- select(CEP, Zona=ZONA1, pond = PONDERADOR, sexo = DS_P1, region = REGION, edad = DS_P2_EXACTA,
               
               satisfaccion_vida = SV_1, satisfaccion_ciudadana = SV_2, situa_econ = MB_P2)
CREANDO UN NUEVO ARCHIVO
#creando un nuevo archivo
save(CEP1, file = "seleccion_CEP.RData")
#Limpiamos el espacio de trabajo

rm(list = ls())

#Cargamos la data seleccionada

load("seleccion_CEP.RData")

#Explorando los nombres de las variables

names(CEP1)
## [1] "Zona"                   "pond"                   "sexo"                  
## [4] "region"                 "edad"                   "satisfaccion_vida"     
## [7] "satisfaccion_ciudadana" "situa_econ"
#Explorando la dimension de la BD

dim(CEP1)
## [1] 1496    8
CARACTERÍSTICAS GENERALES DE LAS VARIABLES EN LA BASE DE DATOS
summary(CEP1)
##      Zona                pond             sexo           region      
##  Length:1496        Min.   :0.1353   Min.   :1.000   Min.   : 1.000  
##  Class :character   1st Qu.:0.5228   1st Qu.:1.000   1st Qu.: 7.000  
##  Mode  :character   Median :0.8073   Median :2.000   Median :11.000  
##                     Mean   :1.0000   Mean   :1.608   Mean   : 9.799  
##                     3rd Qu.:1.2203   3rd Qu.:2.000   3rd Qu.:13.000  
##                     Max.   :8.6899   Max.   :2.000   Max.   :16.000  
##       edad       satisfaccion_vida satisfaccion_ciudadana   situa_econ   
##  Min.   :18.00   Min.   : 1.000    Min.   : 1.000         Min.   :1.000  
##  1st Qu.:33.00   1st Qu.: 5.000    1st Qu.: 3.000         1st Qu.:2.000  
##  Median :49.00   Median : 7.000    Median : 5.000         Median :2.000  
##  Mean   :48.58   Mean   : 6.971    Mean   : 5.973         Mean   :2.387  
##  3rd Qu.:62.00   3rd Qu.: 9.000    3rd Qu.: 5.000         3rd Qu.:3.000  
##  Max.   :99.00   Max.   :88.000    Max.   :99.000         Max.   :9.000
Asignar NA a casos con valor 88 y 99
table(CEP1$satisfaccion_vida)
## 
##   1   2   3   4   5   6   7   8   9  10  88 
##  24  23  41 107 235 210 257 213 146 238   2
CEP1$satisfaccion_vida[CEP1$satisfaccion_vida==88]<- NA 
table(CEP1$satisfaccion_ciudadana)
## 
##   1   2   3   4   5   6   7   8   9  10  88  99 
##  80 105 202 359 432 140  78  27  16  30  25   2
CEP1$satisfaccion_ciudadana[CEP1$satisfaccion_ciudadana==88]<- NA

CEP1$satisfaccion_ciudadana[CEP1$satisfaccion_ciudadana==99]<- NA
Asignar NA a casos con valor 8 y 9
table(CEP1$situa_econ)
## 
##   1   2   3   4   5   9 
## 189 673 512 114   7   1
CEP1$situa_econ[CEP1$situa_econ==8]<- NA

CEP1$situa_econ[CEP1$situa_econ==9]<- NA
VER CAMBIOS
summary(CEP1)
##      Zona                pond             sexo           region      
##  Length:1496        Min.   :0.1353   Min.   :1.000   Min.   : 1.000  
##  Class :character   1st Qu.:0.5228   1st Qu.:1.000   1st Qu.: 7.000  
##  Mode  :character   Median :0.8073   Median :2.000   Median :11.000  
##                     Mean   :1.0000   Mean   :1.608   Mean   : 9.799  
##                     3rd Qu.:1.2203   3rd Qu.:2.000   3rd Qu.:13.000  
##                     Max.   :8.6899   Max.   :2.000   Max.   :16.000  
##                                                                      
##       edad       satisfaccion_vida satisfaccion_ciudadana   situa_econ   
##  Min.   :18.00   Min.   : 1.000    Min.   : 1.000         Min.   :1.000  
##  1st Qu.:33.00   1st Qu.: 5.000    1st Qu.: 3.000         1st Qu.:2.000  
##  Median :49.00   Median : 7.000    Median : 4.000         Median :2.000  
##  Mean   :48.58   Mean   : 6.863    Mean   : 4.451         Mean   :2.383  
##  3rd Qu.:62.00   3rd Qu.: 9.000    3rd Qu.: 5.000         3rd Qu.:3.000  
##  Max.   :99.00   Max.   :10.000    Max.   :10.000         Max.   :5.000  
##                  NA's   :2         NA's   :27             NA's   :1
RECODIFICAR VARIABLES A TRES TRAMOS: positiva, neutra, negativa
CEP1 <- mutate(CEP1, situa_econ_factor = 
                 
                 car::recode(CEP1$situa_econ, 
                             
                             "1:2 = 1; 3 = 2; 4:5 = 3; else = NA"))
REALIZAMOS UNA NUEVA VARIABLE
CEP1$situa_econ_factor <- factor(CEP1$situa_econ_factor, 
                                 
                                 labels = c("Positiva", "Neutra", "Negativa"))
VISUALIZAR DETALLE DE LA NUEVA VARIABLE “SITUA_ECON_FACTOR”
summary(CEP1$situa_econ_factor)
## Positiva   Neutra Negativa     NA's 
##      862      512      121        1
table(CEP1$situa_econ_factor)
## 
## Positiva   Neutra Negativa 
##      862      512      121
tabla <- table(CEP1$situa_econ_factor)

tabla
## 
## Positiva   Neutra Negativa 
##      862      512      121
CREACIÓN DE DATAFRAME
df <- data.frame(CEP1)
head(df)
##     Zona      pond sexo region edad satisfaccion_vida satisfaccion_ciudadana
## 1  Rural 0.7869908    1      8   59                 7                      3
## 2  Rural 1.0823959    2      7   76                 4                      5
## 3 Urbano 1.0157521    2     13   45                 8                      4
## 4 Urbano 0.8740751    2      7   52                 7                      4
## 5 Urbano 1.0468475    2     13   46                 7                      3
## 6 Urbano 0.8876810    2     13   76                 7                      4
##   situa_econ situa_econ_factor
## 1          2          Positiva
## 2          3            Neutra
## 3          3            Neutra
## 4          2          Positiva
## 5          2          Positiva
## 6          3            Neutra

GRÁFICOS

library(ggplot2)
GRÁFICO DE PIE
#Pie

porcentajes <- as.numeric(round(((prop.table(table(CEP1$situa_econ_factor)))*100),2))

porcentajes
## [1] 57.66 34.25  8.09
#Porcentajes

etiquetas <- c("Positiva", "Neutra", "Negativa")

etiquetas
## [1] "Positiva" "Neutra"   "Negativa"
etiquetas <- paste(etiquetas, porcentajes)

etiquetas
## [1] "Positiva 57.66" "Neutra 34.25"   "Negativa 8.09"
etiquetas <- paste(etiquetas, "%", sep = "")

etiquetas
## [1] "Positiva 57.66%" "Neutra 34.25%"   "Negativa 8.09%"
#Etiquetas para el gráfico

pie(porcentajes, etiquetas,
    
    main = "Porcentaje de la Situación Económica",
    
    sub = "Evaluación de la Situación Económica",
    col = c("#246FF0", "#F0AE24", "#34F030"), lty = 2)

legend("topleft", legend = c("Positiva", "Neutra", "Negativa"),
       fill =  c("#246FF0", "#F0AE24", "#34F030"))

###Convierte un gráfico de barras apiladas en un gráfico circular usando coord_polar().

bar <- ggplot(data = CEP1) +
  geom_bar(
    mapping = aes(x = situa_econ_factor, fill = situa_econ_factor),
    show.legend = FALSE,
    width = 1
  ) +
  theme(aspect.ratio = 1) +
  labs(x = NULL, y = NULL)

bar + coord_flip()

bar + coord_polar()

GRÁFICO DE BARRAS
b<-ggplot(df,aes(situa_econ_factor)) + geom_bar(aes(fill=Zona), position = "dodge")

b+scale_fill_manual(values = c("#A37108","#184BA3")) +labs(x = "Situación Económica",y = "Número de personas", title = "Personas por situación económica  y zona")

#Gráficos de barras y gráficos circulares

CEP2 <- mutate(df, sexo_factor = factor(df$sexo, 
                                          
                                          labels = c("Hombre", "Mujer")))
CEP2 <- mutate(CEP2, satisfaccion_vida_factor = factor(df$satisfaccion_vida, 
                                          
                                          labels = c("Totalmente insatisfecho", "2", "3", "4", "5", "6", "7", "8","9", "Totalmente satisfecho")))
b<-ggplot(CEP2,aes(satisfaccion_vida_factor)) + geom_bar(aes(fill=sexo_factor), position = "dodge") +  coord_flip()

b+scale_fill_manual(values = c("#246FF0","#F054A6")) +labs(x = "Satisfacción de vida",y = "Número de personas", title = "Personas por satisfacción de vida y género")

CEP2 <- mutate(CEP2, satisfaccion_ciudadana_factor = factor(df$satisfaccion_ciudadana, 
                                          
                                          labels = c("Totalmente insatisfecho", "2", "3", "4", "5", "6", "7", "8","9", "Totalmente satisfecho")))
b<-ggplot(CEP2,aes(satisfaccion_ciudadana_factor)) + geom_bar(aes(fill=sexo_factor), position = "dodge") +  coord_flip()

b+scale_fill_manual(values = c("#246FF0","#F054A6")) +labs(x = "Satisfacción ciudadana",y = "Número de personas", title = "Personas por satisfacción ciudadana y género")

GRÁFICOS DE BARRA APILADAS
#Barras

plot(CEP2$sexo_factor, main = "Gráfico de barras según Género",
     
     xlab = "Género", ylab = "Frecuencia", col = c("#246FF0","#F054A6") )

c<- ggplot(CEP2, aes(sexo_factor)) + geom_bar(aes(fill=Zona), position = "dodge")

c+scale_fill_manual(values = c("#A37108","#184BA3"))+labs(x = "Género",y = "Número de personas", title = "Personas por sexo y zona")

HISTOGRAMA
hist(CEP1$edad, main = "Histograma de Edad",
     
     xlab = "Edad (años cumplidos)",
     
     ylab = "Frecuencia",
     
     col = "#184BA3",
     
     border = "black",
     
     xlim = c(18, 97),
     
     ylim = c(0, 150))

GRÁFICO DE CAJAS
boxplot(CEP1$edad, main = "Gráfico de cajas  de Edad",col = "#3B7EF0", outline = TRUE)

CEP2 <- mutate(CEP2, region_factor = factor(df$region, 
                                          
                                          labels = c("TARAPACÁ", "ANTOFAGASTA", "ATACAMA", "COQUIMBO", "VALPARAÍSO", "LIBERTADOR GENERAL BERNARDO O'HIGGINS", "MAULE", "BIOBÍO","LA ARAUCANÍA", "LOS LAGOS","AYSÉN DEL GENERAL CARLOS IBÁÑEZ DEL CAMPO", "MAGALLANES Y DE LA ANTÁRTICA CHILENA", "METROPOLITANA DE SANTIAGO", "LOS RÍOS","ARICA Y PARINACOTA", "ÑUBLE")))

ggplot(data = CEP2, mapping = aes(x = region_factor, y = satisfaccion_vida)) +
  geom_boxplot() +  coord_flip() + labs (title= "Gráfico de cajas de  satisfacción de vida por región.", 
          x="Satisfacción de Vida", 
          y="Frecuencia", 
          caption= "Encuesta CEP"
          ) 
## Don't know how to automatically pick scale for object of type haven_labelled/vctrs_vctr/double. Defaulting to continuous.
## Warning: Removed 2 rows containing non-finite values (stat_boxplot).

ggplot(data = CEP2, mapping = aes(x = region_factor, y = satisfaccion_ciudadana)) +
  geom_boxplot() +  coord_flip() + labs (title= "Gráfico de cajas de  satisfacción ciudadana por región.", 
          x="Satisfacción Ciudadana", 
          y="Frecuencia", 
          caption= "Encuesta CEP"
          ) 
## Don't know how to automatically pick scale for object of type haven_labelled/vctrs_vctr/double. Defaulting to continuous.
## Warning: Removed 27 rows containing non-finite values (stat_boxplot).



```r
b<-ggplot(data = CEP2,aes(satisfaccion_ciudadana_factor)) + geom_bar(aes(fill=NULL), position = "dodge") +  coord_flip()
b + facet_wrap(.~ region_factor) + labs (title= "Gráfico de barras de satisfacción ciudadana por región.", 
          x="Satisfacción ciudadana", 
          y="Frecuencia", 
          caption= "Encuesta CEP"
          ) 

b<-ggplot(data = CEP2,aes(satisfaccion_vida_factor)) + geom_bar(aes(fill=NULL), position = "dodge" , width = 0.8) +  coord_flip()
b + facet_wrap(.~ region_factor,  nrow=4) + labs (title= "Gráfico de barras satisfacción de vida por región.", 
          x="Satisfacción de vida", 
          y="Frecuencia", 
          caption= "Encuesta CEP"
          ) 

GRÁFICO WAFFLE
# Calculamos supervivencia por clase

library(ggplot2)

library(waffle)

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v tibble  3.1.6     v purrr   0.3.4
## v tidyr   1.2.0     v stringr 1.4.0
## v readr   2.1.2     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(titanic)



group_zona_satisfaccion_vida <- CEP2 %>% 
  
  group_by(Zona, satisfaccion_vida) %>%
  
  count() %>%
  
  ungroup()
  

iron( 
waffle(filter(group_zona_satisfaccion_vida, Zona=="Rural") %>%  select(-Zona), rows = 10, size=1, colors = c("#1696d2", "#fdbf11", "#CC0000", "#006600", "#669999", "#00CCCC", 
                             "#660099", "#CC0066", "#FF9999", "#FF9900", "#FF0000"),legend_pos = "none" ) +labs(title = "Satisfacción de la vida por zona",subtitle = "Zona Rural"),
  
waffle(filter(group_zona_satisfaccion_vida, Zona=="Urbano") %>% select(-Zona), rows = 10, size=1,
          colors = c("#1696d2", "#fdbf11", "#CC0000", "#006600", "#669999", "#00CCCC", "#660099", "#CC0066", "#FF9999", "#FF9900", "#FF0000"), xlab = "1 cuadrado = 1 persona", legend_pos = "bottom")+ labs(subtitle = "Zona Urbano")  
    )

group_zona_satisfaccion_ciudadana <- CEP2 %>% 
  
  group_by(Zona, satisfaccion_ciudadana) %>%
  
  count() %>%
  
  ungroup()
  

iron( 
waffle(filter(group_zona_satisfaccion_ciudadana, Zona=="Rural") %>%  select(-Zona), rows = 10, size=1, colors = c("#1696d2", "#fdbf11", "#CC0000", "#006600", "#669999", "#00CCCC", 
                             "#660099", "#CC0066", "#FF9999", "#FF9900", "#FF0000"),legend_pos = "none" ) +labs(title = "Satisfacción ciudadana por zona",subtitle = "Zona Rural"),
  
waffle(filter(group_zona_satisfaccion_ciudadana, Zona=="Urbano") %>% select(-Zona), rows = 10, size=1,
          colors = c("#1696d2", "#fdbf11", "#CC0000", "#006600", "#669999", "#00CCCC", "#660099", "#CC0066", "#FF9999", "#FF9900", "#FF0000"), xlab = "1 cuadrado = 1 persona", legend_pos = "bottom")+ labs(subtitle = "Zona Urbano")  
    )