Fundamentos de estadística y probabilidad para Data Science

SAA Práctica 3: distribuciones de probabilidad y escalado

1. Datos

  1. Lee y guarda en los data frames lotr, lqsa y harry_potter los datos de los csv TOP TRUMPS. Todos los ejercicios, se han de hacer para los tres data frames.

2. Densidad

El diagrama de densidad, es una herramienta gráfica que proporciona una representación continua y suave de la distribución de un conjunto de datos, facilitando la interpretación de la forma general, la tendencia central y la dispersión de los datos.

Es similar a un histograma pero con ciertas diferencias clave:

  • Suavizado: Un histograma agrupa los datos en barras (discretos), un gráfico de densidad utiliza una función de suavizado para crear una curva suave que estima la función de densidad de probabilidad subyacente de los datos.
Code
ggplot(lotr) +
  geom_density(aes(x = fuerza, color = "bw por defecto")) +
  geom_density(aes(x = fuerza, color = "Gussiana (bw = 30)"), bw = 30) +
  geom_density(aes(x = fuerza, color = "bw = 5"), bw = 5) +
  labs(
    title = "Función de densidad con diferentes suavizados y kernel gausiano",
    x = "Fuerza",
    y = "Densidad",
    color = "Suavizado"
  ) +
  scale_color_manual(
    values = c("bw por defecto" = "red",
               "Gussiana (bw = 30)" = "blue",
               "bw = 5" = "grey")
  ) +
  theme_classic()

Code
fd_f <- density(lotr$fuerza)
fd_f

Call:
    density.default(x = lotr$fuerza)

Data: lotr$fuerza (30 obs.);    Bandwidth 'bw' = 11.57

       x                y            
 Min.   :-29.72   Min.   :1.291e-05  
 1st Qu.: 11.39   1st Qu.:8.889e-04  
 Median : 52.50   Median :5.676e-03  
 Mean   : 52.50   Mean   :6.074e-03  
 3rd Qu.: 93.61   3rd Qu.:1.078e-02  
 Max.   :134.72   Max.   :1.322e-02  
  • Kernel: La función de suavizado aplicada suele ser una función de kernel, como la gaussiana, que se aplica en cada punto de datos. Este proceso de suavizado depende del ancho de banda del kernel, que controla qué tan suave o rugosa es la curva resultante.
Code
ggplot(lotr) +
  geom_density(aes(x = fuerza, color = "kernel rectangular"), kernel = "r") +
  geom_density(aes(x = fuerza, color = "kernel gaussiano")) +
  labs(
    title = "Función de densidad con diferentes kernels",
    x = "Fuerza",
    y = "Densidad",
    color = "Suavizado"
  ) +
  scale_color_manual(
    values = c("kernel rectangular" = "red",
               "kernel gaussiano" = "blue")
  ) +
  theme_classic()

  • Área bajo la Curva: El área bajo la curva de un gráfico de densidad es igual a 1, lo que refleja el concepto de una función de densidad de probabilidad. Esto significa que la curva representa proporciones de la población a lo largo del rango de datos contínuo.

  • Comparación de Distribuciones: Los gráficos de densidad son especialmente útiles para comparar la distribución de varios grupos sobre la misma variable, ya que las curvas pueden superponerse fácilmente sin ocultar información, a diferencia de los histogramas superpuestos que pueden ser difíciles de leer.

Code
ggplot(lotr) +
  geom_density(aes(x = fuerza, color = "Fuerza")) +
  geom_density(aes(x = miedo, color = "Miedo")) +
  labs(
    title = "Función de densidad comparativa de variables: Fuerza vs miedo",
    x = "Valor",
    y = "Densidad",
    color = "Variable"
  ) +
  scale_color_manual(
    values = c("Fuerza" = "red",
               "Miedo" = "blue")
  ) +
  theme_classic()

2.1 Función density

Prueba la función de densidad, modificando los parámetros kernel y bw.

2.2 Representaciones gráficas densidad

Observa las diferentes distribuciones de los datos. Realiza el código que dibuja estas gráficas. Despliega el código para ver la pista

Code
# Pista
df %>%
  select_if(is.numeric) %>%
  pivot_longer(cols = everything(), names_to = "variable", values_to = "valor") %>% # ...

LQSA

LOTR

HARRY POTTER

2.3 Densidad escalada por rango

Realiza un escalado por rango para todas las variables numéricas y vuelve a generar la representación gráfica. Trata de explicar qué ha cambiado. Despliega el código para ver la pista

Code
# Pista utiliza as.data.frame y lapply:
df %>%
  select_if(is.numeric) %>%
  lapply(mi_función_de_escalado) %>% #por rango
  as.data.frame() %>% # ... continua

2.4 Densidad escalada por z-score

Repite el ejercicio pero realiza un escalamiento por z-score

3. Diagrama de caja y bigotes

3.1 Boxplot múltiples variables

Representa en un solo lienzo, los diagramas de caja y bigote de las variables numéricas de cada baraja. Mapea “variable” en el eje x. No es necesario usar facetas.

3.2 Boxplot con escalamiento por rango

Repite la representación anterior, escalando por rango

3.3 Boxplot con escalamiento por z-score

Repite la respresentación escalando por z-score

4. Diagrama de violín

Examina las siguientes representaciones e investiga en qué consiste un diagrama de violín, sus ventajas e inconvenientes sobre diagramas de caja y bigote y densidad. ¿Serías capaz de codificar en R alguna de las representaciones?