Transformaciテウn Box-Cox

Prep

Transformaciテウn Box-Cox

Creado: Última actualización: Tiempo de lectura: 1 min

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_normmax calcula (\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()

Ejemplo prテ。ctico (figura)

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()

Ejemplo prテ。ctico (figura)

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_boxcox a las predicciones.
  • Combina Box-Cox con StandardScaler cuando 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.