CLASE 1. ¿QUÉ ES R? MODELOS GRÁFICOS E INTERPRETACIONES BÁSICAS

COMO CONFIGURAR LOS COMANDOS EN R

# Ctrl + Alt + i = crea una nueva línea de código
# Ctrl + Enter = Correr el código de la línea
# Ctrl + Shift + M = %>% = Filtrado de datos
# Ctrl + P = Correr todo el documento de forma rápida
# remove() -> nos va a ayudar a borrar una variable que no quisimos crear

PAQUERERÍAS A INSTALAR

# Paquetes para descargar. Nota: solamente se deben de descargar una vez, pero con frequencia se pueden descargar nuevamente después de un mes por algua actualización
# install.packages("ggplot2")
# install.packages("forecas")
# install.packages("dplyr")
# install.packages("hrbrthemes")
# install.packages("viridis")
# install.packages("rmarkdown")

CARGAMOS LAS LIBRERÍAS

# Estas librerías se activan cada que se inicie el documento después de cerrarlo
library(ggplot2) # Paquete para generar gráficos de alta calidad
library(forecast) # Ayuda a crear gráficos de serie de tiempo y pronósticos
library(dplyr) # Filtrado de datos y comandos de manera instantanea
library(hrbrthemes) # Expansión de temas para el paquete de gráficos ggplot2
library(viridis) # Expansión de paleta de colores en ggplot2
library(rmarkdown) # Gebera los docymentos en R Markdown

MODELOS GRÁFICOS E INTERPRETACIONES

Una gráfica es una representación visual de datos que tenemos que podemos dar diferentes interpretaciones para el uso simplificado de un tema en general. Los diferentes tipos de gráficos básicos que tenemos son los siguientes:

1.1 GRÁFICOS DE VIOLIN

Las gráficas de violín permiten visualizar la distribución de una variable numérica para uno o varios grupos.

# Creamos la base de datos
Datos1.1 = data.frame(Muestra = c(rep("Conjunto A",500), rep("Conjunto B",500), rep("Conjunto C",500), rep("Conjunto D",20), rep("Conjunto E", 100)), Valor = c( rnorm(500, 10, 5), rnorm(500, 13, 1), rnorm(500, 18, 1), rnorm(20, 25, 4), rnorm(100, 12, 1)))


# Generamos nuestra tabla de datos para la gráfica de violín
Grafico1.1 = ggplot(data = Datos1.1, aes(x = Muestra, y = Valor, fill = Muestra)) + geom_violin() + labs(title = "Gráfico 1.1. Distribución de Violín", subtitle = "Distribución para 5 muestras distintas", caption = "Elaboración propia") + theme_minimal()


# Graficamos nuestra variable
Grafico1.1

1.2 GRÁFICO DE DENSIDAD

Un gráfico de densidad visualiza la distribución de datos en un intervalo o período de tiempo continuo.

# Cargamos nuestra base de datos a través del contenido que tenemos en internet
Datos1.2 = read.table("https://raw.githubusercontent.com/holtzy/data_to_viz/master/Example_dataset/1_OneNum.csv", header = TRUE)

# Visualizamos el contenido de nuestra tabla de datos
View(Datos1.2) # Observamos que es una sola variable llamada precio 


# A través de filtrados visualizaremos la densidad distribuitiva de los datos de los precios que tengan un valor menor que 300
Datos1.2 %>% filter(price < 300) %>% ggplot(aes(x = price)) + geom_density(fill = "#69b3a2", color="black", alpha = 0.5) + labs(title = "Gráfico 1.2.1. Distribución en densidad", subtitle = "Para una muestra de datos", caption = "Elaboración propia") + ylab("Densidad distribuitiva") + xlab("Precios")

# Vizualizar la densidad de más datos del mismo gráfico
Datos1.2 %>% filter(price < 1000) %>% ggplot(aes(x = price)) + geom_density(fill =  "red", color="black", alpha = 0.3) + labs(title = "Gráfico 1.2.2. Distribución en densidad", subtitle = "Para una muestra de datos", caption = "Elaboración propia") + ylab("Densidad distribuitiva") + xlab("Precios")

1.3 GRÁFICO DE HISTOGRAMA

Un histograma es la representación gráfica en forma de barras, que simboliza la distribución de un conjunto de datos. Sirven para obtener una “primera vista” general, o panorama, de la distribución de la población, o de la muestra, respecto a una característica, cuantitativa y frecuente.

# Generamos nuestra base de datos
Datos1.3.1 = data.frame(Valores = rnorm(400, 10, 9))


# Creamos nuestro Hisstograma
Grafico1.3.1 = ggplot(data = Datos1.3.1, aes(x = Valores)) + geom_histogram(col = "white") + labs(title = "Gráfico 1.3.1. Histograma", subtitle = "Distribución normal de una muestra de Datos", caption = "Elaboración propia") + ylab("Frecuencia") + xlab("Distribución de datos")


#Graficamos
Grafico1.3.1

Podemos crear más de una variable y observar su respectiva distribución frente a otra dentro de los histogramas, tal y como se observa a continuación.

# Generamos nuestros datos
Datos1.3.2 = data.frame(Genero = c(rep("Mujeres", 1000), rep("Hombres", 800)), Valor = c(rnorm(1000, 20,15), rnorm(800, 55, 40)))


# Generamos la variable de Histograma
Grafico1.3.2 = Datos1.3.2 %>% ggplot(aes(x = Valor, fill = Genero)) + geom_histogram(color="#e9ecef", alpha=0.6, position = "identity") + scale_fill_manual(values=c("cornflowerblue", "pink")) + theme_ipsum() + labs(title = "Gráfico 1.3.2. Histograma de dos Muestras", subtitle = "Mujeres y Hombres", caption = "Elaboración propia", fill = "Género") + ylab("Frecuencia") + xlab("")


# Visualizamos el gráfico
Grafico1.3.2

1.4 GRÁFICO DE CAJAS O DE BIGOTES

El diagrama de caja es probablemente el tipo de gráfico más utilizado para comparar la distribución de varios grupos. Sin embargo, debe tener en cuenta que la distribución de datos está oculta detrás de cada cuadro. Por ejemplo, la distribución normal de unos datos se puede parecer a la distribución binomial.

# Creamos nuestra base de datos para nuestras gráficas de cajas
Datos1.4 = data.frame(Nombres = c( rep("Conjunto A",100), rep("Conjunto B",100), rep("Conjunto C",120), rep("Conjunto D",150), rep("Conjunto E", 100)), Valores = c( rnorm(100, 10, 5), rnorm(100, 13, 5), rnorm(120, 18, 6), rnorm(150, 25, 6), rnorm(100, 12, 10)))


# Boxplot básico
Boxplot1.4.1 = Datos1.4 %>% ggplot(aes(x = Nombres, y = Valores, fill = Nombres)) + geom_boxplot() + scale_fill_viridis(discrete = TRUE, alpha = 0.6, option = "A") + theme_ipsum() + theme(legend.position = "none") + labs(title = "Gráfico 1.4.1. Distribución de cajas", subtitle = "Para 5 tipos de muestras diferentes", caption = "Elaboración propia") + xlab("") + ylab("Valores")


# Boxplot con dispersión de datos
Boxplot1.4.2 = Datos1.4 %>% ggplot( aes(x = Nombres, y = Valores, fill = Nombres)) + geom_boxplot() + scale_fill_viridis(discrete = TRUE, alpha = 0.6) + geom_jitter(color = "black", size = 0.4, alpha = 0.9) + theme_ipsum() + theme(legend.position = "none") + labs(title = "Gráfico 1.4.2. Distribución de cajas", subtitle = "Para 5 tipos de muestras diferentes", caption = "Elaboración propia") + xlab("") + ylab("Valores")


# Graficamos ambas muestras
Boxplot1.4.1

Boxplot1.4.2

1.5 GRÁFICO DE DISPERSIÓN DE DOS VARIABLES

El diagrama de dispersión se usa comúnmente para mostrar cómo dos variables se relacionan entre sí. Su objetivo es analizar estas variables para determinar la forma en que se relacionan o qué tan independientes son una de la otra. A esto se le llamará correlación. Más adelante lo abordaremos. Uno de los gráficos que más utilizaremos en este curso.

# Ejemplo con el caso de edad de personas con logros en la vida
Datos1.5 = data.frame(Edad = c(5, 6, 7, 12, 15, 18, 18, 19, 22, 25, 29, 30, 33, 39, 45, 46, 46, 50, 51, 54, 60, 66, 67, 68, 70, 72, 73, 75, 76, 80), Logros = c(1, 0, 0, 2, 1, 2, 1, 2, 4, 2, 3, 4, 5, 5, 6, 9, 8, 9, 10, 15, 16, 20, 22, 21, 23, 25, 25, 29, 30, 29))


# Generamos el gráfico de dispersión
Dispersion1.5.1  = ggplot(data = Datos1.5, mapping = aes(x = Logros, y = Edad)) + geom_point() + labs(title = "Gráfico 1.5.1. Dispersión", subtitle = "Relación de Edad de personas con los logros en la vida", caption = "Elaboración propia") 


# Agregamos la linea de tendencia con mejor ajuste a los datos
Dispersion1.5.2 = ggplot(data = Datos1.5, mapping = aes(x = Logros, y = Edad)) + geom_point(pch = 3) + labs(title = "Gráfico 1.5.2. Dispersión con linea de tendencia", subtitle = "Relación de Edad de personas con los logros en la vida", caption = "Elaboración propia") + geom_smooth(method = "lm", level = 0.95) + theme_minimal() 


# Generamos nuestros gráficos
Dispersion1.5.1

Dispersion1.5.2

1.6 GRÁFICO DE BARRAS

Una gráfica de barras tiene barras rectangulares con longitudes proporcionales a los valores que representan. Las gráficas de barras se utilizan para comparar dos o más valores. Las barras pueden ser horizontales o verticales.

# Creamos nuestra base de datos
Datos1.6 = data.frame(Sucursales = c("Sucursal 1", "Sucursal 2", "Sucursal 3", "Sucursal 4", "Sucursal 5"),  Ventas = c(4, 15, 10, 20, 18))


# Gráfica de barras normal
Grafico1.6.1 = ggplot(data = Datos1.6, mapping = aes(x = Sucursales, y = Ventas)) + geom_bar(stat = "identity") + labs(title = "Gráfico 1.6.1 Gráfico de Barras", subtitle = "Caso de ventas de cada día de 5 sucursales", caption = "Elaboración propia") + ylab("Valor") + xlab("Muestras")


# Gráfica de barras delgadas
Grafico1.6.2 = ggplot(data = Datos1.6, mapping = aes(x = Sucursales, y = Ventas)) + geom_bar(stat = "identity", width = 0.3) + labs(title = "Gráfico 1.6.1 Gráfico de Barras delgadas", subtitle = "Caso de ventas de cada día de 5 sucursales", caption = "Elaboración propia") + ylab("Valor") + xlab("Muestras")


# Gráfica de barras invertidas
Grafico1.6.3 = ggplot(data = Datos1.6, mapping = aes(x = Sucursales, y = Ventas)) + geom_bar(stat = "identity") + labs(title = "Gráfico 1.6.3 Gráfico de Barras", subtitle = "Caso de ventas de 5 sucursales", caption = "Elaboración propia") + ylab("Valor") + xlab("Muestras") + coord_flip()


# Observamos los gráficos
Grafico1.6.1

Grafico1.6.2

Grafico1.6.3

1.7 GRÁFICA DE PASTEL

Un gráfico de pastel es un gráfico circular, el cual está dividido de tal manera que se asemeja a las tajadas de un pastel. Este gráfico divide tus datos en sectores, ilustrando cada proporción numérica con el fin de mostrar la composición como un todo.

# Generamos los datos
Porciones = c(9, 10, 22, 33, 12, 14)


# Generamos el gráfico a traves de la variable de Porciones
pie(Porciones, main = "Gráfico 1.7.1. Distribución de 100 personas", sub = "Afluencia en 6 líneas del metro de la CDMX")

# Podemos nombrar cada parte del pastel en orden en como acomodamos los datos
pie(Porciones, labels = c("Línea-A", "Línea-B", "Línea-1", "Línea-2", "Línea-3"), main = "Gráfico 1.7.2. Distribución de 100 personas", sub = "Afluencia en 6 líneas del metro de la CDMX")

# Podemos incluir bordes a nuestros gráficos de pay
pie(Porciones, labels = c("Línea-A", "Línea-B", "Línea-1", "Línea-2", "Línea-3"), main = "Gráfico 1.7.3. Distribución de 100 personas", sub = "Afluencia en 6 líneas del metro de la CDMX", edges = 15)

1.8 SERIES DE TIEMPO

Una gráfica que asocia los valores dentro de un determinado periodo y su evolución dentro de ella misma. Por lo cual tiene un orden desde un inicio hasta un final.

# Generamos nuestra variable de ingresos quincenales de una persona en una decada, ordenado de manera anual durante el 2010 al 2020
Ingresos = c(600, 650, 700, 680, 750, 800, 1000, 1200, 1500, 2100)

# La transformamos en una serie de tiempo que inicia en el año 2020 y su frecuencia es anual
Ingresos = ts(Ingresos, start = c(2010), frequency = 1)

# Graficamos de forma sencilla  los datos
plot(Ingresos, main = "Gráfico 1.8.1. Evolución de los ingresos de una persona", sub = "Ingresos de forma quincenal durante cada año", xlab = "Años", ylab = "Ingresos Quincenales", panel.first = grid(col = "gray60"), col = "darkgreen") 

# Mejoramos el gráfico
autoplot(Ingresos, series = "Ingresos") + geom_point() + labs(title = "Gráfico 1.8.2. Evolución de los ingresos de una persona", subtitle = "Ingresos de forma quincenal durante cada año", caption = "Elaboración propia") + ylab("Ingresos Quincenales") + xlab("")

1.9 MÚLTIPLES GRÁFICOS EN UNA SOLA PANTALLA

Podemos dividir en distintas partes la hoja de gráfico para poder observar distintos tipos de gráficos en una forma y hacer una mejor interpretación.

# Creamos las variaables
a = seq(1,30)+4*runif(30, 0.4) # runif() = Distribución uniforme
b = seq(1,30)^2+runif(30, 0.98) # seq() =  Sequencia de datos generados


# Dividiremos el panel en 2 filas y 2 columnas
par(mfrow = c(2, 2)) 
 

# Podemos añadir 4 gráficas en una sola pantalla
plot(a, b, pch = 20, panel.first = grid(col = "gray60"), main = "Gráfico 1.9.1. Dispersión", sub = "Relación de la muestra 'a' con la muestra 'b'", ylab = "", xlab = "")

plot(a-b, pch = 18, panel.first = grid(col = "gray60"), main = "Gráfico 1.9.2. Relación de 'a' menos 'b'", sub = "Diferencia a través de las 30 observaciones", ylab = "", xlab = "")

hist(a, border = FALSE , col = rgb(0.2,0.2,0.8,0.7) , main = "Gráfico 1.9.3. Histograma", sub = "Para la muestra de la variable 'a'", panel.first = grid(col = "gray60"), ylab = "Frecuencia", xlab = "")

boxplot(a , col = "darkolivegreen2", xlab = "", main = "Gráfico 1.9.4. Caja de a muestra", sub = "Para la muestra de la variable 'a'")