La transformaciテウn Box-Cox reduce la asimetrテュa y estabiliza la varianza siempre que todas las observaciones sean estrictamente positivas. Si aparecen ceros o valores negativos, desplaza los datos o utiliza la transformaciテウn de Yeo-Johnson.
Definiciテウn #
Para (x > 0) y parテ。metro (\lambda):
$$ T_\lambda(x) = \begin{cases} \dfrac{x^\lambda - 1}{\lambda}, & \lambda \ne 0,\\ \log x, & \lambda = 0. \end{cases} $$
- (\lambda = 1) deja los valores iguales; (\lambda = 0) equivale al logaritmo natural.
- La inversa estテ。 disponible como
scipy.special.inv_boxcox. scipy.stats.boxcox_normmaxcalcula (\lambda) por mテ。xima verosimilitud.
Ejemplo prテ。ctico #
import numpy as np
import matplotlib.pyplot as plt
x = np.random.default_rng(42).lognormal(mean=1.5, sigma=0.6, size=1_000)
plt.figure(figsize=(6, 4))
plt.hist(x, bins=30, color="steelblue")
plt.title("Distribuciテウn original (positiva pero asimテゥtrica)")
plt.show()

from scipy.stats import boxcox, boxcox_normmax
lmbda = boxcox_normmax(x)\n
x_trans = boxcox(x, lmbda=lmbda)
plt.figure(figsize=(6, 4))
plt.hist(x_trans, bins=30, color="seagreen")
plt.title("Despuテゥs de la transformaciテウn Box-Cox")
plt.show()

Recomendaciones #
- Calcula (\lambda) sテウlo con los datos de entrenamiento y reutilテュzalo en validaciテウn y prueba para evitar fugas de informaciテウn.
- Si necesitas volver a la escala original, aplica
inv_boxcoxa las predicciones. - Combina Box-Cox con
StandardScalercuando el modelo requiera media cero y varianza unitaria. - Si la caracterテュstica puede ser negativa, desplテ。zala antes de aplicar Box-Cox o utiliza la transformaciテウn Yeo-Johnson.