El objetivo de los datos en este tab es mostrar qué porcentaje de la población guatemalteca tiene acceso a los servicios de comunicación de teléfono fijo, teléfono celular, internet y TV por cable. En el excel recuperado del Instituto Nacional de Estadística, aparece un porcentaje total, aparece porcentaje por área (rural y urbana), porcentaje por nivel de pobreza (pobreza extrema, pobreza y no pobreza) y porcentaje por los 22 departamentos. Dado que este tab fue el desarrollado en clase por el profesor, lo que se estará haciendo es explicar que se hizo en cada paso.
En primer lugar se importaron las librerías y se seleccionaron las preguntas que correspondian al tab del Excel.
library(dplyr)
library(haven)
library(ggplot2)
library(corrplot)
library(RColorBrewer)
encovi.hogares <- read_sav("~/Data Science/ENCOVI/hogares.sav")
comunicaciones <- encovi.hogares %>% select(DEPTO, AREA, POBREZA, P01D19A, P01D19B, P01D19C, P01D19D)
levels(comunicaciones$DEPTO)<- c("Guatemala", "El Progreso", "Sacatepequez", "Chimaltenango", "Escuintla", "Santa Rosa", "Solola", "Totonicapan", "Quetzaltenango", "Suchitepequez", "Retalhuleu", "San Marcos", "Huehuetenango", "Quiche", "Baja Verapaz", "Alta Verapaz", "Peten", "Izabal", "Zacapa", "Chiquimula", "Jalapa", "Jutiapa")
levels(comunicaciones$AREA)<- c("Urbana", "Rural")
levels(comunicaciones$POBREZA) <- c ("Pobre extremo", "Pobre no extremo", "No pobre")
comunicaciones$DEPTO <- as.factor(vivienda$Departamento)
comunicaciones$AREA <- as.factor(vivienda$Area)
comunicaciones$POBREZA <- as.factor(vivienda$Pobreza)
El siguiente paso fue cambiar los nombres de las preguntas por lo que representaban. Al mismo se estableció que 1 iba a ser que sí tenían ese servicio (era verdadero) y que 2 era que no tenían el servicio (lógicamente falso).
comunicaciones$telefono.fijo <- ifelse(comunicaciones$P01D19A == 1, TRUE, FALSE)
comunicaciones$telefono.celular <- ifelse(comunicaciones$P01D19B == 1, TRUE, FALSE)
comunicaciones$internet <- ifelse(comunicaciones$P01D19C == 1, TRUE, FALSE)
comunicaciones$tv.cable <- ifelse(comunicaciones$P01D19D == 1, TRUE, FALSE)
Lo primero que aparecía en el excel era el porcentaje de la toda la población de Guatemala que tiene acceso a los cuatro servicios de comuniación. Lo que se hizo fue usar la función de summarize, donde se crea un nuevo data frame contando como porcentaje cuántas veces sale 1.
total <- comunicaciones %>% summarise(telefono.fijo_total = sum(telefono.fijo, na.rm = TRUE)/n(), telefono.celular_total = sum(telefono.celular, na.rm = TRUE)/n(), internet_total = sum(internet, na.rm = TRUE)/n(), tv.cable_total = sum(tv.cable, na.rm = TRUE)/n())
total
Luego, se volvió a copiar el código solo que ahora se agrupo por área (rural y urbana), pobreza (extrema, no extrema y no pobre) y departamento.
area <- comunicaciones %>% group_by(as_factor(AREA)) %>% summarise(telefono.fijo_total = sum(telefono.fijo, na.rm = TRUE)/n(), telefono.celular_total = sum(telefono.celular, na.rm = TRUE)/n(), internet_total = sum(internet, na.rm = TRUE)/n(), tv.cable_total = sum(tv.cable, na.rm = TRUE)/n())
area
pobreza <- comunicaciones %>% group_by(POBREZA) %>% summarise(telefono.fijo_total = sum(telefono.fijo, na.rm = TRUE)/n(), telefono.celular_total = sum(telefono.celular, na.rm = TRUE)/n(), internet_total = sum(internet, na.rm = TRUE)/n(), tv.cable_total = sum(tv.cable, na.rm = TRUE)/n())
pobreza
departamento <- comunicaciones %>% group_by(DEPTO) %>% summarise(telefono.fijo_total = sum(telefono.fijo, na.rm = TRUE)/n(), telefono.celular_total = sum(telefono.celular, na.rm = TRUE)/n(), internet_total = sum(internet, na.rm = TRUE)/n(), tv.cable_total = sum(tv.cable, na.rm = TRUE)/n())
departamento
Se decidió analizar la structure de las distintas tablas que se crearon.
summary(area)
as_factor(AREA) telefono.fijo_total telefono.celular_total internet_total tv.cable_total
Urbana:1 Min. :0.01542 Min. :0.7846 Min. :0.01765 Min. :0.2580
Rural :1 1st Qu.:0.04659 1st Qu.:0.8041 1st Qu.:0.04250 1st Qu.:0.3395
Median :0.07776 Median :0.8237 Median :0.06734 Median :0.4210
Mean :0.07776 Mean :0.8237 Mean :0.06734 Mean :0.4210
3rd Qu.:0.10894 3rd Qu.:0.8432 3rd Qu.:0.09219 3rd Qu.:0.5026
Max. :0.14011 Max. :0.8628 Max. :0.11704 Max. :0.5841
summary(departamento)
DEPTO telefono.fijo_total telefono.celular_total internet_total tv.cable_total
Guatemala : 1 Min. :0.01977 Min. :0.6126 Min. :0.01647 Min. :0.1414
El Progreso : 1 1st Qu.:0.03675 1st Qu.:0.7846 1st Qu.:0.02954 1st Qu.:0.2836
Sacatepequez : 1 Median :0.05546 Median :0.8046 Median :0.04661 Median :0.4035
Chimaltenango: 1 Mean :0.06208 Mean :0.8077 Mean :0.05385 Mean :0.3832
Escuintla : 1 3rd Qu.:0.06783 3rd Qu.:0.8496 3rd Qu.:0.05731 3rd Qu.:0.4741
Santa Rosa : 1 Max. :0.22414 Max. :0.9243 Max. :0.19923 Max. :0.6159
(Other) :16
summary(pobreza)
POBREZA telefono.fijo_total telefono.celular_total internet_total tv.cable_total
Pobre extremo :1 Min. :0.003145 Min. :0.6614 Min. :0.002096 Min. :0.09853
Pobre no extremo:1 1st Qu.:0.008090 1st Qu.:0.7302 1st Qu.:0.005561 1st Qu.:0.19078
No pobre :1 Median :0.013036 Median :0.7989 Median :0.009025 Median :0.28303
Mean :0.051146 Mean :0.7831 Mean :0.044199 Mean :0.32639
3rd Qu.:0.075147 3rd Qu.:0.8439 3rd Qu.:0.065250 3rd Qu.:0.44033
Max. :0.137258 Max. :0.8888 Max. :0.121475 Max. :0.59762
str(area)
Classes tbl_df, tbl and 'data.frame': 2 obs. of 5 variables:
$ as_factor(AREA) : Factor w/ 2 levels "Urbana","Rural": 1 2
$ telefono.fijo_total : num 0.1401 0.0154
$ telefono.celular_total: num 0.863 0.785
$ internet_total : num 0.117 0.0176
$ tv.cable_total : num 0.584 0.258
str(departamento)
Classes tbl_df, tbl and 'data.frame': 22 obs. of 5 variables:
$ DEPTO : Factor w/ 22 levels "Guatemala","El Progreso",..: 1 2 3 4 5 6 7 8 9 10 ...
$ telefono.fijo_total : num 0.2241 0.072 0.105 0.0593 0.0573 ...
$ telefono.celular_total: num 0.924 0.852 0.869 0.811 0.885 ...
$ internet_total : num 0.1992 0.0473 0.0991 0.0459 0.0368 ...
$ tv.cable_total : num 0.616 0.459 0.505 0.312 0.475 ...
str(pobreza)
Classes tbl_df, tbl and 'data.frame': 3 obs. of 5 variables:
$ POBREZA : Factor w/ 3 levels "Pobre extremo",..: 1 2 3
$ telefono.fijo_total : num 0.00314 0.01304 0.13726
$ telefono.celular_total: num 0.661 0.799 0.889
$ internet_total : num 0.0021 0.00902 0.12148
$ tv.cable_total : num 0.0985 0.283 0.5976
Primero se reordenó el dataset para poder hacer las gráficas. Luego, se hicieron boxplots por servicio para ver la distribución de los datos. También se hizo una “stacked graph” donde se muestra la frecuencia del servicio por departamento.
grafica_dep <- departamento %>% gather(Servicio.Comunicacion, Cantidad, -DEPTO)
grafica_dep$Servicio.Comunicacion <- factor(grafica_dep$Servicio.Comunicacion)
grafica_dep$Cantidad <- as.numeric(grafica_dep$Cantidad) / 100
ggplot(grafica_dep, aes(Servicio.Comunicacion, Cantidad)) +
geom_boxplot()
grafica_dep %>% ggplot(aes(DEPTO, Cantidad)) +
geom_col(aes(fill = Servicio.Comunicacion, group = Servicio.Comunicacion), position = "dodge") +
theme(axis.text.x = element_text(angle = 90))
grafica_dep %>% filter(Servicio.Comunicacion == "tv.cable_total") %>% arrange(desc(Cantidad)) %>% ggplot(aes(DEPTO, Cantidad)) +
geom_col(aes(fill=DEPTO), color="black") +
labs(title = "Cable de TV en Guatemala") +
theme(axis.text.x = element_text(angle = 90))