Gráficos en R

El presente informe Rmarkdown contiene diversos gráficos que se pueden realizar en R. Así pues, se incluyen los siguientes gráficos:

  • Gráfico univariado
  • Gráfico bivariado
  • Gráfico multivariado
  • Gráfico dependiente en el tiempo
  • Gráfico de modelo estadístico”

Gráfico univariado

Los gráficos univariados trazan la distribución de datos de una sola variable. La variable puede ser categórica (por ejemplo, raza, sexo) o cuantitativa (por ejemplo, edad, peso). El código para crear un gráfico de barras es el siguiente:

Gráfico de barras

library(ggplot2)
library(tidyverse)
library(mosaicData)
library(dplyr)
library(ggplotlyExtra)
library(ggalt)
Barras <- ggplot(Marriage, 
       aes(x = race, 
           y = ..count.. / sum(..count..))) + 
  geom_bar(fill="#82D0C1",
           color="white") +
  labs(x = "Race", 
       y = "Percent", 
       title  = "Participants by race") +
  scale_y_continuous(labels = scales::percent)
Barras %>% plotly::ggplotly()

Gráfico bivariado

Los gráficos bivariados muestran la relación entre dos variables. El tipo de gráfico dependerá del nivel de medición de las variables (categóricas o cuantitativas).

Ridgeline

Un diagrama de línea de cresta (también llamado diagrama de control) muestra la distribución de una variable cuantitativa para varios grupos. Son similares a las gráficas de densidad de kernel con facetas verticales, pero ocupan menos espacio. El código para crear un diagrama de control es el siguiente:

library(ggplot2)
library(ggridges)
ggplot(mpg,
       aes(x = cty,
           y = class,
           fill = class)) +
  geom_density_ridges() + 
  theme_ridges() + 
  labs("Highway mileage by auto class") +
  theme(legend.position = "none")

Gráfico Multivariado

Los gráficos multivariados muestran las relaciones entre tres o más variables. Hay dos métodos comunes para acomodar múltiples variables: agrupamiento y facetado (Parcelas).

Agrupación

En la agrupación, los valores de las dos primeras variables se asignan a los ejes x y y. Luego, las variables adicionales se asignan a otras características visuales como el color, la forma, el tamaño, el tipo de línea y la transparencia. La agrupación le permite trazar los datos de varios grupos en un solo gráfico. El código para crear una agrupación es el siguiente:

library(ggplot2)
data(Salaries, package="carData")
Agrupacion <- ggplot(Salaries, 
       aes(x = yrs.since.phd, 
           y = salary, 
           color = rank, 
           shape = sex)) +
  geom_point(size = 3, 
             alpha = .6) +
  labs(title = "Academic salary by rank, sex, and years since degree")
Agrupacion %>% plotly::ggplotly()

Gráfico dependiente en el tiempo

Un gráfico puede ser un vehículo poderoso para mostrar cambios a lo largo del tiempo. El gráfico dependiente del tiempo más común es el gráfico lineal de series de tiempo. Otras opciones incluyen los gráficos con mancuernas y el gráfico de pendiente.

Dummbbell charts

Son útiles para mostrar cambios entre dos puntos de tiempo para varios grupos u observaciones. Utilizando el conjunto de datos gapminder, tracemos el cambio en la esperanza de vida de 1952 a 2007 en las Américas. El código para crear un dummbell chart es el siguiente:

library(ggalt)
library(tidyr)
library(dplyr)
data(gapminder, package = "gapminder")
plotdata_long <- filter(gapminder,
                        continent == "Americas" &
                        year %in% c(1952, 2007)) %>%
  select(country, year, lifeExp)
plotdata_wide <- spread(plotdata_long, year, lifeExp)
names(plotdata_wide) <- c("country", "y1952", "y2007")
ggplot(plotdata_wide, 
       aes(y = reorder(country, y1952),
           x = y1952,
           xend = y2007)) +  
  geom_dumbbell(linewidth = 1.2,
                size_x = 3, 
                size_xend = 3,
                colour = "#AFAFAF", 
                colour_x = "#8B9DE8", 
                colour_xend = "#E8958B") +
  theme_minimal() + 
  labs(title = "Change in Life Expectancy",
       subtitle = "1952 to 2007",
       x = "Life Expectancy (years)",
       y = "")

Gráfico de modelo estadístico

Un modelo estadístico describe la relación entre una o más variables explicativas y una o más variables de respuesta. Los gráficos pueden ayudar a visualizar estas relaciones.

Regresión lineal

Considere la predicción de los precios de las viviendas en el conjunto de datos de Saratoga según el tamaño del lote (pies cuadrados), la edad (años), el valor del terreno (miles de dólares), el área habitable (pies cuadrados), la cantidad de dormitorios y baños y si la casa está frente al mar o no. El código para crear un modelo de regresión lineal es el siguiente:

data(SaratogaHouses, package="mosaicData")
houses_lm <- lm(price ~ lotSize + age + landValue +
                  livingArea + bedrooms + bathrooms +
                  waterfront, 
                data = SaratogaHouses)
summary(houses_lm)
## 
## Call:
## lm(formula = price ~ lotSize + age + landValue + livingArea + 
##     bedrooms + bathrooms + waterfront, data = SaratogaHouses)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -220208  -35416   -5443   27570  464320 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   1.399e+05  1.647e+04   8.491  < 2e-16 ***
## lotSize       7.501e+03  2.075e+03   3.615 0.000309 ***
## age          -1.360e+02  5.416e+01  -2.512 0.012099 *  
## landValue     9.093e-01  4.583e-02  19.841  < 2e-16 ***
## livingArea    7.518e+01  4.158e+00  18.080  < 2e-16 ***
## bedrooms     -5.767e+03  2.388e+03  -2.414 0.015863 *  
## bathrooms     2.455e+04  3.332e+03   7.366 2.71e-13 ***
## waterfrontNo -1.207e+05  1.560e+04  -7.738 1.70e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 59370 on 1720 degrees of freedom
## Multiple R-squared:  0.6378, Adjusted R-squared:  0.6363 
## F-statistic: 432.6 on 7 and 1720 DF,  p-value: < 2.2e-16

El paquete visreg proporciona herramientas para visualizar estas relaciones condicionales.

library(ggplot2)
library(visreg)
Lineal <- visreg(houses_lm, "livingArea", gg = TRUE)
Lineal %>% plotly::ggplotly()

```