En esta publicación desarrollaré los ejercicios del capítulo 2 del libro ggplot2: Elegant Graphics for Data Analysis de Wickham, Navarro y Pedersen. Es un texto electrónico y puede ser consultado aquí.

#Capítulo 2

Ejercicios 2.2.1

Antes que nada debemos cargar la biblioteca ggplot2.

library(ggplot2)
library(tidyverse)
  1. str(), dim(), head(), names(), summary()
  2. data()
  3. En este ejercicio se debe convertir el consumo de combustible de las millas por galón del sistema norteamericano al sistema europeo que está medido en litros por cada 100 kilómetros. Para esto hay que hacer las respectivas conversiones teniendo en cuenta las equivalencias de combustible. Teniendo en cuenta que 1 galón equivale a 3.78541 litros y que 1 milla equivale a 1.60934 kilómetros, tenemos: \[1mpg=\frac{1.60934km}{3.78541l}\\\] Esa cifra nos servirá de multiplicador para encontrar cuántos kilómetros recorre según litros de gasolina para las unidades que se tienen tanto en ctycomo en hwy. De esta manera, como un primer paso, podemos convertir todo a kilómetros por litro:
fact1 <- 1.60934/3.7854
fact1
## [1] 0.425144
cty_step1 <- mpg$cty*fact1
hwy_step1 <- mpg$hwy*fact1
head(cty_step1)
## [1] 7.652592 8.928023 8.502879 8.928023 6.802304 7.652592
head(mpg$cty)
## [1] 18 21 20 21 16 18

Cada valor de cty fue multiplicado por 0.425144. De esta manera obtenemos el cambio de unidades pero no en el orden del cociente ni en las unidades de distancia que se tienen como objetivo. El segundo paso es cambiar el orden de la fracción y multiplicar por 100 para obtener la solución al problema:

cty_step2 <- 100/cty_step1
hwy_step2 <- 100/hwy_step1
head(cty_step2)
## [1] 13.06747 11.20069 11.76072 11.20069 14.70090 13.06747

De esta manera podemos ver el contraste de las medidas de consumo de combustible en el sistema de medida norteamericano y el europeo:

conv<-data.frame(mpg$cty, cty_step2)
head(conv)
##   mpg.cty cty_step2
## 1      18  13.06747
## 2      21  11.20069
## 3      20  11.76072
## 4      21  11.20069
## 5      16  14.70090
## 6      18  13.06747
ggplot(conv, aes(mpg.cty,cty_step2))+
        geom_point()+
        labs(title = "Consumo en la ciudad", x="Norteamericano: Millas por galón", y="Europeo: litros por cada 100km")

  1. Está compuesta de subpreguntas:
nuevos_datos <- mpg %>%
        group_by(manufacturer, model) %>%
        summarise(n()) %>%
                group_by(manufacturer) %>%
                summarise(n())
nuevos_datos
## # A tibble: 15 x 2
##    manufacturer `n()`
##    <chr>        <int>
##  1 audi             3
##  2 chevrolet        4
##  3 dodge            4
##  4 ford             4
##  5 honda            1
##  6 hyundai          2
##  7 jeep             1
##  8 land rover       1
##  9 lincoln          1
## 10 mercury          1
## 11 nissan           3
## 12 pontiac          1
## 13 subaru           2
## 14 toyota           6
## 15 volkswagen       4
nuevos_datos[nuevos_datos[,2]==max(nuevos_datos[,2]),]
## # A tibble: 1 x 2
##   manufacturer `n()`
##   <chr>        <int>
## 1 toyota           6

Toyota, con 6 es el que más modelos tiene.

mas_variac <- mpg %>%
        group_by(manufacturer, model) %>%
        summarise(n())
mas_variac[mas_variac[,3]==max(mas_variac[,3]),]
## # A tibble: 1 x 3
## # Groups:   manufacturer [1]
##   manufacturer model       `n()`
##   <chr>        <chr>       <int>
## 1 dodge        caravan 2wd    11

Dodge Caravan 2wd es el modelo con mayor cantidad de variaciones: 11.

mpg$mod_single1 <- str_replace_all(mpg$model, " 4wd", "")
mpg$mod_single2 <- str_replace_all(mpg$mod_single1, " 2wd", "")


sin_wd <- mpg %>%
        group_by(manufacturer, mod_single2) %>%
        summarise(n())

sin_wd[sin_wd[,3]==max(sin_wd[,3]),]
## # A tibble: 1 x 3
## # Groups:   manufacturer [1]
##   manufacturer mod_single2 `n()`
##   <chr>        <chr>       <int>
## 1 dodge        caravan        11

No hubo cambios al remover la especificación redundante.

Ejercicios 2.3.1

  1. How would you describe the relationship between cyl and hwy? Do you have any concerns about drawing conclusions from that plot?
ggplot(mpg, aes(cty, hwy))+
        geom_point()

La única preocupación que tendría sería la de sobreposición de puntos que tengan la misma información. Dos autos que tengan las mismas características en estas variables van a ser necesariamente el mismo punto, generando pérdida de información.

  1. ¿El siguiente gráfico es útil?
ggplot(mpg, aes(model, manufacturer)) + geom_point()

El gráfico es útil en la medida que identifica los modelos de cada fabricante, sin embargo el eje x presenta demasiada aglomeración las categorías. Para hacer más informativos estos datos podríamos generar una tabla de contingencia.

  1. Describir cada gráfico:

3.1.

ggplot(mpg, aes(cty, hwy)) + geom_point()

Muestra una alta correlación entre las variables ctyy hwy. Diagrama de puntos o sacatterplot.

3.2.

ggplot(diamonds, aes(carat, price)) + geom_point()

Same as last one, parece que existe una relación, a lo mejor no lineal, pero con muchos más puntos que el dataset anterior. A mayor carat mayor price, con excepciones.

3.3.

ggplot(economics, aes(date, unemploy)) + geom_line()

Un gráfico de línea que pone la fecha en el eje horizontal. No es posible saber la cantidad de datos, habría que examinar más detalladamente el dataset economics.

3.4.

ggplot(mpg, aes(cty)) + geom_histogram()

Sólo necesita una variable cuantitativa para graficar un histograma de frecuencias. No se especifica el número de categorías.

Ejercicios 2.4.1

4.1. El estético shapeno puede ser usado con variables continuas o numéricas. La sintaxis

ggplot(mpg, aes(displ, hwy, shape=cty))+geom_point()

arroja un error.

ggplot(mpg, aes(displ, hwy, colour=cty))+geom_point()

ggplot(mpg, aes(displ, hwy, size=cty))+geom_point()

Al usar más de un estético en un gráfico:

ggplot(mpg, aes(displ, hwy, colour=cty, size=year, shape=manufacturer))+geom_point()

Los estéticos, si están bien definidos, interactúan. Se muestra un Warning debido a que sólo existen 6 opciones disponibles para el estético shape, pero la variable que utilizamos tiene más de 6 categorías: manufacturer siendo tipo character tiene 15 categorías. Esto también da respuesta a lo que se pregunta en el punto 4.2.

4.2. Ya resuelto.

4.3. Relación entre “drive train” y consumo:

ggplot(mpg, aes(drv, hwy))+geom_boxplot()

ggplot(mpg, aes(drv, cty))+geom_boxplot()

Tienen más rendimiento los vehículos con “drive train” frontal, le siguen los tipo 4wdy finalmente los de tracción trasera. Las diferencias entre 4wd y tracción trasera se notan más en el consumo de ciudad (cty) que en carretera (hwy).

Y ahora relación entre “drive train”, tamaño del motor y clase de vehículo:

ggplot(mpg, aes(drv, displ, colour=class))+geom_point()

El gráfico sugiere que los motores más grandes se presentan tracción trasera, los que también tienen los vehículos de 2 asientos y subcompactos, es decir, vehículos pequeños pero potentes y de alto consumo. Los vehículos 4wd tienen representación en todo el espectro de tamaños de motores; es donde se encuentran los suv, pickup y algunos de tamaño medio y algunos compactos. La tracción delantera contiene vehículos de tamaño medio, la única minivan del grupo, los subcompacty la mayoría de compactos.