Tema 02 - Visualización de datos

Ejercicios del tema

Autor/a
Afiliación

Pedro Albarrán

Dpto. de Fundamentos del Análisis Económico. Universidad de Alicante

Antes de empezar

Estos ejercicios se van haciendo durante las clases del tema: las transparencias indican en qué momento toca cada uno.

Importante

Si no lo has hecho ya, lee Cómo trabajar en cada tema: la carpeta del tema con su subdirectorio data, cómo se crea el documento, qué va en la cabecera (con embed-resources: true), la primera celda y cómo se entrega. Vale para todo el curso.

De este tema, lo que te hace falta:

  • Los datos son datosVisualizacion.RData y empresas.RData, de la página Datos. Descárgalos en tu subdirectorio data.
  • Un documento por ejercicio, T02_E<n>_<ID>.qmd: T02_E1_12345678.qmd para el ejercicio 1, T02_E2_12345678.qmd para el 2, y así. Cada uno carga sus propios datos en su primera celda.

Entrega 1: la clientela

Trabajamos con clientes: 300 fichas de la clientela de nuestra cadena de gimnasios.

library(ggplot2)
load("data/datosVisualizacion.RData")

Apartado a)

  1. Dibuja la relación entre ingresos y gasto con geom_point().

  2. Pinta TODOS los puntos de rojo, de verdad (que no aparezca ninguna leyenda).

  3. Ejecuta esto y describe qué ves: ¿de qué color salen los puntos? ¿qué dice la leyenda? ¿por qué?

ggplot(clientes, aes(x = ingresos, y = gasto)) +
  geom_point(aes(color = "red"))
  1. Distingue el segmento por color y el canal por forma. Y ahora añade además size = edad. ¿Se lee el gráfico con tres variables encima? ¿Cuántas cosas a la vez puede leer quien lo mira? Quédate con la versión que sí se lee y di por qué.

  2. Añade size = 4 dentro de aes() y luego fuera. Una de las dos no tiene sentido: ¿cuál y por qué? En una frase, ¿qué regla te sirve para decidirlo?

Apartado b): capas con sus propios datos

Sobre el gráfico del apartado a), con el segmento por color.

  1. Etiqueta a quienes más gastan. Como solo quieres unas pocas fichas, esa capa lleva sus propios datos, igual que hicimos en clase con los países:

    top <- clientes[clientes$gasto > 8000, ]

    y encima una capa geom_text_repel(data = top, aes(label = cliente)).

  2. ¿Por qué esa capa necesita sus propios datos, y qué pasaría si le dieras clientes entero?

Apartado c): el gráfico cuenta por ti

  1. Número de clientes de cada segmento, con geom_bar(). ¿Dónde está la tabla de frecuencias que has usado?

  2. Lo mismo, pero con la PROPORCIÓN que representa cada segmento, sin calcular nada aparte: tienes el patrón con after_stat(prop) en las transparencias.

  1. En una frase: ¿qué significa que un geom “tiene una estadística por defecto”?

Apartado d): distribuciones

  1. Distribución de los ingresos con geom_histogram(), probando bins = 10, bins = 40 y binwidth = 3. ¿Cuál de las tres le enseñarías a dirección y por qué?

  2. Con una de esas tres se ve un grupo de clientes de ingresos muy bajos y con las otras no. ¿Con cuál, y qué te dice eso sobre elegir los intervalos?

  3. Compara el gasto entre segmento con un geom_boxplot().

Apartado e): contexto y aspecto

  1. Vuelve al gráfico del apartado a) y añádele una recta de tendencia con geom_smooth(method = "lm", se = FALSE). ¿Qué dice esa recta que no dijera la nube de puntos?

  2. Divídelo en facetas por canal. ¿Se lee mejor así o con el color? ¿Por qué?

  3. Añade una línea de referencia horizontal en el gasto medio, discontinua, y anótala con annotate() para que se entienda qué marca.

  4. Ponle labs() completo: título, ejes con sus unidades y un caption con la fuente.

  5. Prueba al menos dos temas y quédate con uno. Prueba también uno profesional, de ggthemes:

    library(ggthemes)
    mi_grafico + theme_economist()

Entrega 2: corporaciones y startups

Una consultora de inversión compara el perfil de ingresos de cinco grandes corporaciones y cinco startups. Los datos están en la página Datos del curso, y traen su propio diccionario:

load("data/empresas.RData")
empresas_info # qué es cada variable
  1. Diagrama de cajas de ingresos_millones por tipo, en escala normal.

  2. El mismo gráfico con scale_y_log10().

  3. Comparando los dos: ¿qué diferencias hay en la posición central y en la variabilidad dentro de cada grupo? ¿Cuál de los dos gráficos es más informativo, y por qué?

  4. Si esa variabilidad mide el riesgo de una inversión, ¿dónde es más arriesgado invertir?

Entrega 3: reservas de hotel

Aquí nadie te dice qué gráfico dibujar: elegirlo es parte del ejercicio.

El fichero hotels.csv tiene una reserva por fila (descripción de las variables):

hoteles <- rio::import("https://raw.githubusercontent.com/albarran/00datos/main/hotels.csv")
  1. Una cadena hotelera quiere lanzar promociones por segmento de mercado, y antes necesita saber cuántas reservas vienen de cada segmento y si eso depende del tipo de hotel.

    market_segment dice de dónde viene la reserva (Online TA son agencias de internet, Corporate empresas, Groups grupos, Direct reservas directas…) y hotel distingue el hotel urbano del vacacional.

    Dibuja la visualización que les permita decidir. Ajústala hasta que se entienda sola: título, etiquetas legibles, colores con sentido.

  2. Un directivo afirma que quien viaja con hijos reserva con más antelación, y quiere centrar ahí las promociones. Comprueba si es verdad con un gráfico. Tienes lead_time (días entre la reserva y la llegada) y children (número de niños).

  3. En dos frases: ¿qué le contestas al directivo? Si los datos no le dan la razón, dilo.

Tip

Antes de escribir código, escribe en una línea qué pregunta tiene que contestar el gráfico y qué variables la contestan.

Cómo se entrega

Importante

Cada ejercicio es una entrega, por el formulario de entrega:

  • Entrega 1: la clientela. T02_E1_ID.zip
  • Entrega 2: corporaciones y startups. T02_E2_ID.zip
  • Entrega 3: las reservas de hotel. T02_E3_ID.zip

Subid en cada una un solo .zip con el .qmd y el .html dentro. El ID es el mismo identificador que escribís en el formulario (ver Cómo trabajar). Por ejemplo, T02_E1_12345678.zip.

Se os dirá en clase cuáles de las tres hay que entregar y cuándo.

Comprobad que el nombre sea exacto, o la entrega se rechazará. Recibiréis un correo de confirmación si la entrega es correcta, o de rechazo si no lo es.

Renderizad con embed-resources: true para que el .html se vea por sí solo.

No se valora que esté perfecto: se valora el progreso y que se vea lo que habéis entendido. Si os quedáis a medias, entregad lo que tengáis.

Advertencia

Las entregas que se hagan en clase se cierran al acabar la sesión, con un margen de 15 minutos desde el final. La hora de envío queda registrada.