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 x1,x2,...,xn, calculamos:
zi=xi−ˉXSX
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 zi es pensar que está expresada en desviaciones típicas. Efectivamente, si zi=1, esto significa que xi está una desviación típica por encima de la media. Por ejemplo, si xi=20, la media ˉX=15 y la desviación típica SX=5, zi=(20−15)/5=1, y como podemos ver, xi 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 zi=−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
- zi no puede ser negativo
Propiedades de la estandarización
Vamos a descargar iris
desde un repositorio público de github. Ya los nombres vienen en un formato legible y que cumple con las características del PEP8
import pandas as pd
iris = pd.read_csv("https://raw.githubusercontent.com/toneloy/data/master/iris.csv")
iris.head()
## sepal_length sepal_width petal_length petal_width species
## 0 5.1 3.5 1.4 0.2 setosa
## 1 4.9 3.0 1.4 0.2 setosa
## 2 4.7 3.2 1.3 0.2 setosa
## 3 4.6 3.1 1.5 0.2 setosa
## 4 5.0 3.6 1.4 0.2 setosa
Dada una muestra x1,x2,...,xn, los valores estandarizados zi complen con las siguientes propiedades:
- La media de los valores estandarizados es ˉZ=0 y la varianza de los valores estandarizados es S2Z=1.
petal_length_mean = iris["petal_length"].mean()
petal_length_sd = iris["petal_length"].std()
iris["petal_length_z"] = (iris["petal_length"] - petal_length_mean) / petal_length_sd
iris["petal_length_z"].mean()
## -2.842170943040401e-16
iris["petal_length_z"].var()
## 1.0000000000000004
- Si previamente aplicamos una transformación lineal a cada valor xi, como yi=axi+b, los valores estandarizados zi=xi−ˉYSY seguirán siendo los mismos
iris["y"] = 100 * iris["petal_length"] + 20
y_mean = iris["y"].mean()
y_sd = iris["y"].std()
iris["z1"] = (iris["petal_length"] - petal_length_mean) / petal_length_sd
iris["z2"] = (iris["y"] - y_mean) / y_sd
iris.loc[:, ["z1", "z2"]]
## z1 z2
## 0 -1.335752 -1.335752
## 1 -1.335752 -1.335752
## 2 -1.392399 -1.392399
## 3 -1.279104 -1.279104
## 4 -1.335752 -1.335752
## .. ... ...
## 145 0.816859 0.816859
## 146 0.703564 0.703564
## 147 0.816859 0.816859
## 148 0.930154 0.930154
## 149 0.760211 0.760211
##
## [150 rows x 2 columns]
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