Estandarización

En ocasiones necesitamos saber si un valor es muy alto o muy bajo, pero esto depende de factores como las unidades de medida, las medidas de tendencia central y la dispersión de la variable. Por ejemplo:

  • Un precio de 100 dólares es distinto a un precio de 100 yenes
  • Alguien que mida 1.80m es una persona alta en Perú, pero no tanto en Alemania, porque las estaturas promedio son distintas
  • Una falla de 1m de distancia en un tiro libre es distinta para un jugador de la NBA que para un juego de aficionados, porque los jugadores de la NBA probablemente tengan una menor variabilidad en sus disparos

Hay un procedimiento que funciona como una especia de bala de plata para todos estos casos: estandarizar. Lo que hacemos es transformar la variable original, restándole a cada valor la media y dividiendo esto entre la disviación típica. Formalmente, dada una muestra \(x_1, x_2, ..., x_n\), calculamos:

\[ z_i = \frac{x_i - \bar{X}}{S_X} \]

Usualmente en la literatura nos dirán que esta nueva variable \(Z\) no tiene unidades, y esto es cierto. Sin embargo, una manera de interpretar los valores \(z_i\) es pensar que está expresada en desviaciones típicas. Efectivamente, si \(z_i = 1\), esto significa que \(x_i\) está una desviación típica por encima de la media. Por ejemplo, si \(x_i = 20\), la media \(\bar{X} = 15\) y la desviación típica \(S_X = 5\), \(z_i = (20 - 15) / 5 = 1\), y como podemos ver, \(x_i\) está una desviación típica por encima de la media.

La estandarización también se conoce como normalización

Pregunta

¿Cómo interpretarías un valor de \(z_i = -3\)

  • El valor está 3 desviaciones estándar por debajo de la media
  • El valor está 3 desviaciones estándar por arriba de la media
  • \(z_i\) no puede ser negativo


Mostrar respuesta

Propiedades de la estandarización

Vamos a utilizar el dataset iris para algunos ejemplos y vamos a limpiar los nombres como es costumbre, para cumplir con la guía de estilo del tidyverse.

library(dplyr)
library(janitor)

iris <- as_tibble(iris) %>% clean_names()

Dada una muestra \(x_1, x_2, ..., x_n\), los valores estandarizados \(z_i\) complen con las siguientes propiedades:

  1. La media de los valores estandarizados es \(\bar{Z} = 0\) y la varianza de los valores estandarizados es \(S^2_Z = 1\).
iris %>% 
  mutate(petal_length_z = (petal_length - mean(petal_length)) / sd(petal_length)) %>% 
  summarise(
    mean_petal_length_z = mean(petal_length_z),
    var_petal_length_z = var(petal_length_z)
  )
## # A tibble: 1 x 2
##   mean_petal_length_z var_petal_length_z
##                 <dbl>              <dbl>
## 1           -2.90e-17              1.000
  1. Si previamente aplicamos una transformación lineal a cada valor \(x_i\), como \(y_i = ax_i + b\), los valores estandarizados \(z_i = \frac{x_i - \bar{Y}}{S_Y}\) seguirán siendo los mismos
iris %>% 
  mutate(
    y = 100 * petal_length + 20,
    z_1 = (petal_length - mean(petal_length)) / sd(petal_length),
    z_2 = (y - mean(y)) / sd(y)
  ) %>% 
  select(z_1, z_2)
## # A tibble: 150 x 2
##      z_1   z_2
##    <dbl> <dbl>
##  1 -1.34 -1.34
##  2 -1.34 -1.34
##  3 -1.39 -1.39
##  4 -1.28 -1.28
##  5 -1.34 -1.34
##  6 -1.17 -1.17
##  7 -1.34 -1.34
##  8 -1.28 -1.28
##  9 -1.34 -1.34
## 10 -1.28 -1.28
## # … with 140 more rows

En otras palabras, no importa que movamos la variable a la derecha o a la izquierda sumando la constante \(a\) o que cambiemos la escala de la variable multiplicando por la constante \(b\); los valores estandarizados son los mismos. Esto es muy últil, por ejemplo, si tenemos la misma variable expresada en distintas unidades.

Pregunta

¿Qué pasa si la transformación no es lineal? Prueba elevando una variable al cuadrado, o calculando el logaritmo natural.


Mostrar respuesta