Contenido de este artículo
- 0
- 0
- 0
- 0
Una transformación box-cox es un método comúnmente utilizado para transformar un conjunto de datos que no se distribuye normalmente en uno con una distribución más normal .
La idea básica detrás de este método es encontrar algún valor para λ tal que los datos transformados estén lo más cerca posible de la distribución normal, utilizando la siguiente fórmula:
- y (λ) = (y λ – 1) / λ si y ≠ 0
- y (λ) = log (y) si y = 0
Podemos realizar una transformación box-cox en Python usando la función scipy.stats.boxcox () .
El siguiente ejemplo muestra cómo utilizar esta función en la práctica.
Ejemplo: transformación Box-Cox en Python
Supongamos que generamos un conjunto aleatorio de 1,000 valores que provienen de una distribución exponencial :
#cargar los paquetes necesarios import numpy as np from scipy. estadísticas de importación boxcox importar seaborn como sns #Haga que este ejemplo sea reproducible np. al azar . semilla (0) #generate dataset data = np. al azar . exponencial (tamaño = 1000 ) # trazar la distribución de valores de datos sns. distplot (datos, hist = Falso , kde = Verdadero )
Podemos ver que la distribución no parece normal.
Podemos usar la función boxcox () para encontrar un valor óptimo de lambda que produzca una distribución más normal:
# realizar la transformación de Box-Cox en datos originales transform_data, best_lambda = boxcox (datos) # trazar la distribución de los valores de datos transformados sns. distplot ( datos_transformados , hist = Falso , kde = Verdadero )
Podemos ver que los datos transformados siguen una distribución mucho más normal.
También podemos encontrar el valor lambda exacto utilizado para realizar la transformación Box-Cox:
# mostrar impresión de valor lambda óptimo (best_lambda) 0,2420131978174143
Se encontró que la lambda óptima era aproximadamente 0,242 .
Por lo tanto, cada valor de los datos se transformó utilizando la siguiente ecuación:
Nuevo = (antiguo 0,242 – 1) / 0,242
Podemos confirmar esto mirando los valores de los datos originales en comparación con los datos transformados:
#ver los primeros cinco valores de los datos del conjunto de datos original [0: 5] matriz ([0.79587451, 1.25593076, 0.92322315, 0.78720115, 0.55104849]) #ver los primeros cinco valores del conjunto de datos transformado transform_data [0: 5] matriz ([- 0.22212062, 0.23427768, -0.07911706, -0.23247555, -0.55495228])
El primer valor del conjunto de datos original fue 0,79587 . Por lo tanto, aplicamos la siguiente fórmula para transformar este valor:
Nuevo = (0,79587 0,242 – 1) / 0,242 = -0,222
Podemos confirmar que el primer valor en el conjunto de datos transformado es de hecho -0,222 .
Recursos adicionales
Cómo crear e interpretar una gráfica QQ en Python
Cómo realizar una prueba de normalidad Shapiro-Wilk en Python
- https://r-project.org
- https://www.python.org/
- https://www.stata.com/
¿Te hemos ayudado?
Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:La ayuda no cuesta nada
Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo: