Solución:
SciPy ha agregado una transformación de Box-Cox inversa.
https://docs.scipy.org/doc/scipy/reference/generated/scipy.special.inv_boxcox.html
scipy.special.inv_boxcox scipy.special.inv_boxcox (y, lmbda) =
Calcule la inversa de la transformación de Box-Cox.
Encuentre x tal que:
y = (x**lmbda - 1) / lmbda if lmbda != 0
log(x) if lmbda == 0
Parámetros: y: array_like
Datos a transformar.
lmbda: array_like
Parámetro de potencia de la transformada Box-Cox.
Devoluciones:
x: matriz
Datos transformados.
Notas
Nuevo en la versión 0.16.0.
Ejemplo:
from scipy.special import boxcox, inv_boxcox
y = boxcox([1, 4, 10], 2.5)
inv_boxcox(y, 2.5)
output: array([1., 4., 10.])
- Aquí está el código. Está funcionando y solo prueba. Scipy usó logaritmo neperiano, verifico el papel de transformación BoxCox y parece que usaron log10. Seguí con neperian, porque funciona con scipy
-
Siga el código:
#Function def invboxcox(y,ld): if ld == 0: return(np.exp(y)) else: return(np.exp(np.log(ld*y+1)/ld)) # Test the code x=[100] ld = 0 y = stats.boxcox(x,ld) print invboxcox(y[0],ld)
Gracias a @Warren Weckesser, aprendí que la implementación actual de SciPy no tiene una función para revertir una transformación Box-Cox. Sin embargo, una versión futura de SciPy puede tener esta función. Por ahora, el código que proporciono en mi pregunta puede servir a otros para revertir las transformaciones de Box-Cox.