Transformaciones BoxCox

La transformación de Box-Cox es una técnica de transformación que acerca los datos numéricos a una distribución normal. Tenga en cuenta que no puede aplicarse a datos que contengan valores negativos, y que no dará resultados válidos si la distribución es demasiado diferente en comparación con la distribución normal.

Se aplica la siguiente transformación a los números para que la forma de la distribución se acerque más a una distribución normal.

$ y = \begin{cases} \displaystyle \frac{x^\lambda - 1}{\lambda} & \lambda \neq 0\ \log x & \lambda = 0\end{cases} $

Por la forma de la ecuación, $x$ debe tomar siempre valores no negativos para aplicar esta transformación a los datos numéricos. Si se contienen valores negativos, se podría añadir una constante para que todo sea mayor que 0. O bien, se puede utilizar la transformación de YeoJonson.

from scipy import stats
import matplotlib.pyplot as plt

x = stats.loggamma.rvs(1, size=1000) + 10
plt.hist(x)
plt.show()

png

import numpy as np
from scipy.stats import boxcox

plt.hist(boxcox(x))
plt.show()

png

Comentarios

(Los comentarios aparecerán después de la aprobación)