Saltar al contenido

Transformación inversa de Box-Cox

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.])

  1. 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
  2. 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *