El siguiente script calcula el valor lambda que hace que una variable, al ser elevada a este valor, tenga una distribucion mas cercana a una distribucion normal, segun tecnica Box-Cox. Esto con el objetivo de identificar cuales son las variables de un dataset que no tienen una distribución normal y que pueden transformarse para obtener mayor información de ellas.
NOTA: Este script es un ejemplo de busqueda, existe una funcion para esto en la librería scipy. Ver Referencia 1.
El script sigue estos paso:
1. carga el dataset boston.csv desde dropbox
2. crea la funcion is_not_normal que devuelve True si la asimetria de la variable es menor a -1 o mayor a 1, y si ademas el coeficiente de variacion (std/avg) es mayor a 1.
3. crea la funcion find_lambda que recibe el dataset en formato pandas.DataFrame y busca las variables que no son normales (usando la funcion is_not_normal) para luego imprimir los valores lambda de esas variables no normales.
Conceptualmente, la busqueda de el valor lambda seria así:
las formas generales de exponentes son estas:
Para el dataset boston, una de las variables que no tiene una distribucion normal es crim,
y la salida del script seria algo así:
si graficamos la variable crim vs la crim^-0.05, queda así: