Estructura interna de datos
library(dplyr)
glimpse(encuesta)
## Rows: 30
## Columns: 10
## $ promedio_academico <dbl> 3.53, 3.80, 4.02, 4.39, 3.99, 3.80, 3.83, 3.80, ~
## $ color_favorito <chr> "Verde", "Amarillo", "Rojo", "Negro", "Azul", "V~
## $ horas_estudiar <dbl> 30, 12, 45, 60, 50, 25, 28, 40, 40, 36, 32, 35, ~
## $ horas_dormir <dbl> 7.0, 6.0, 6.0, 6.0, 8.0, 2.0, 2.0, 6.0, 6.0, 7.0~
## $ redes_sociales <dbl> 4, 9, 3, 2, 9, 5, 2, 4, 4, 5, 4, 3, 4, 4, 5, 5, ~
## $ redsocial_favorita <chr> "Youtube", "Facebook", "Facebook", "Facebook", "~
## $ bachiller_universidad <chr> "1 Año", "Menos de 1 año", "1 Año", "Menos de 1 ~
## $ lectura <chr> "Muy poco", "Frecuentemente", "Frecuentemente", ~
## $ horas_internet <dbl> 20, 3, 42, 90, 56, 40, 30, 80, 80, 10, 14, 80, 6~
## $ trabajo <chr> "Sí", "Sí", "No", "No", "No", "No", "No", "Sí", ~
Visualizaciones
Cantidades
library(ggplot2)
encuesta %>%
ggplot(mapping = aes(x = color_favorito)) +
geom_bar(fill = "blue", color = "black") +
labs(x = "Color", y = "Frecuencia",
title = "Frecuencia absoluta por color favorito")

- Podemos darle interactividad al gráfico anterior a través de la función ggplotly() del paquete plotly:
library(plotly)
ggplotly(
encuesta %>%
ggplot(mapping = aes(x = color_favorito)) +
geom_bar(fill = "blue", color = "black") +
labs(x = "Color", y = "Frecuencia",
title = "Frecuencia absoluta por color favorito")
)
- Representando cantidad (promedio) con barras:
encuesta %>%
group_by(trabajo) %>%
summarise(promedio_estudiar = mean(horas_estudiar)) %>%
ggplot(mapping = aes(x = trabajo, y = promedio_estudiar)) +
geom_col()

- Representando cantidades agrupadas:
encuesta %>%
group_by(trabajo, lectura) %>%
summarise(promedio_estudiar = mean(horas_estudiar)) %>%
ggplot(mapping = aes(x = trabajo, y = promedio_estudiar, fill = lectura)) +
geom_col(position = "dodge")

Distribuciones
- Regla de Sturges: 1 + log2(N). Donde N = número de datos (en este caso N = 30). Resultado 5.90
encuesta %>%
ggplot(mapping = aes(x = horas_estudiar)) +
geom_histogram(bins = 6, color = "black")

encuesta %>%
ggplot(mapping = aes(x = horas_estudiar)) +
geom_density()

- Distribución por trabajo:
encuesta %>%
ggplot(mapping = aes(x = trabajo, y = promedio_academico)) +
geom_boxplot()

encuesta %>%
ggplot(mapping = aes(sample = promedio_academico)) +
geom_qq() +
geom_qq_line()

- Gráfico cuantil-cuantil por trabajo:
encuesta %>%
ggplot(mapping = aes(sample = promedio_academico)) +
facet_wrap(facets = ~trabajo) +
geom_qq() +
geom_qq_line()

Proporciones
encuesta %>%
count(lectura) %>%
mutate(proporcion = n / sum(n)) %>%
ggplot(mapping = aes(x = lectura, y = proporcion)) +
geom_col() +
geom_label(mapping = aes(label = round(proporcion, digits = 2)))

Relaciones X-Y
Diagramas de dispersión
- se: error estándar (TRUE o FALSE)
encuesta %>%
ggplot(mapping = aes(x = horas_internet, y = horas_estudiar)) +
geom_point() +
geom_smooth(se = FALSE) +
geom_smooth(method = "lm", se = FALSE, color = "red")

- Gráfico anterior de forma interactiva:
ggplotly(
encuesta %>%
ggplot(mapping = aes(x = horas_internet, y = horas_estudiar)) +
geom_point() +
geom_smooth(se = FALSE) +
geom_smooth(method = "lm", se = FALSE, color = "red")
)
Correlograma
encuesta %>%
select(where(is.numeric)) %>%
cor()
## promedio_academico horas_estudiar horas_dormir
## promedio_academico 1.00000000 0.48931047 -0.05009997
## horas_estudiar 0.48931047 1.00000000 0.07964348
## horas_dormir -0.05009997 0.07964348 1.00000000
## redes_sociales 0.06089997 -0.25220762 0.20204993
## horas_internet 0.57131241 0.69717791 0.09742587
## redes_sociales horas_internet
## promedio_academico 0.06089997 0.57131241
## horas_estudiar -0.25220762 0.69717791
## horas_dormir 0.20204993 0.09742587
## redes_sociales 1.00000000 -0.27683278
## horas_internet -0.27683278 1.00000000
library(corrplot)
encuesta %>%
select(where(is.numeric)) %>%
cor() %>%
corrplot()

encuesta %>%
select(where(is.numeric)) %>%
cor() %>%
corrplot(
diag = FALSE,
type = "lower",
tl.srt = 25,
tl.col = "black",
method = "pie"
)

Incertidumbre
Barras
encuesta %>%
group_by(trabajo) %>%
summarise(
promedio = mean(promedio_academico),
de = sd(promedio_academico)
) %>%
ggplot(mapping = aes(x = trabajo, y = promedio)) +
geom_col() +
geom_errorbar(mapping = aes(ymin = promedio - de,
ymax = promedio + de),
width = 0.05)

Puntos
encuesta %>%
group_by(trabajo) %>%
summarise(
promedio = mean(promedio_academico),
de = sd(promedio_academico)
) %>%
ggplot(mapping = aes(x = trabajo, y = promedio)) +
geom_point() +
geom_errorbar(mapping = aes(ymin = promedio - de,
ymax = promedio + de),
width = 0.05) +
coord_flip()

Ejemplo homicidios
library(readr)
homicidios1 <- read_csv("homicidios.csv")
homicidios1 %>%
group_by(year) %>%
summarise(
promedio = mean(homicidios)
) %>%
ggplot(mapping = aes(x = year, y = promedio)) +
geom_line()

- Serie temporal para cada municipio:
homicidios1 %>%
ggplot(mapping = aes(x = year, y = homicidios, color = Municipio)) +
geom_line()

- Agregando interactividad al gráfico anterior:
library(plotly)
ggplotly(
homicidios1 %>%
ggplot(mapping = aes(x = year, y = homicidios, color = Municipio)) +
geom_line()
)
Tablas de frecuencias
Frecuencias absolutas
table(encuesta$color_favorito)
##
## Amarillo Azul Blanco Gris Negro Rojo Rosado
## 1 4 2 1 9 4 1
## Verde Vino tinto
## 7 1
encuesta %>%
count(color_favorito) %>%
arrange(desc(n))
xtabs(formula = ~encuesta$color_favorito)
## encuesta$color_favorito
## Amarillo Azul Blanco Gris Negro Rojo Rosado
## 1 4 2 1 9 4 1
## Verde Vino tinto
## 7 1
table(encuesta$lectura, encuesta$trabajo)
##
## No Sí
## Frecuentemente 6 3
## Muy poco 11 8
## Nada 2 0
Frecuencias relativas
prop.table(table(encuesta$color_favorito))
##
## Amarillo Azul Blanco Gris Negro Rojo Rosado
## 0.03333333 0.13333333 0.06666667 0.03333333 0.30000000 0.13333333 0.03333333
## Verde Vino tinto
## 0.23333333 0.03333333
prop.table(table(encuesta$color_favorito)) * 100
##
## Amarillo Azul Blanco Gris Negro Rojo Rosado
## 3.333333 13.333333 6.666667 3.333333 30.000000 13.333333 3.333333
## Verde Vino tinto
## 23.333333 3.333333
- Con la biblioteca janitor:
library(janitor)
tabyl(encuesta$color_favorito)
Gráfico con gplots
tabla <- table(encuesta$trabajo, encuesta$lectura)
library(gplots)
balloonplot(tabla)

balloonplot(prop.table(tabla))
