Ajustes al modelo de regresión lineal en lenguaje de programación

En ocasiones, te encontrarás con modelos que puedes volver más precisos si los divides en partes a través de Python. Para hacer ajustes a un modelo en Python es necesario descargar las siguientes bibliotecas: Numpy, Matplotlib, Statsmodels, Pandas, Math.

Preparación de datos iniciales.

Se utilizará el siguiente ejemplo: En tu empresa, te entregan un archivo .csv con todo el historial del aumento salarial de los empleados, te piden que los utilices para obtener la tendencia de los aumentos salariales requeridos para cada empleado. Para cargar y preparar los datos, sigue estos pasos:

·         Importa las bibliotecas que serán necesarias para resolver el problema.

·         Carga los datos desde un .csv.

o   data1=pd.read_csv(‘empleados.csv’)

·         Guarda los datos en sus respectivas variables. En este caso x1 será para received y x2 para requested.

o   x1=data1.received

o   x2=data1.requested

·         Cuando tengas listos los datos haz una gráfica de dispersión con los valores x1 y x2.

o   fig=plt.plot(x2,x1,’x’)

o   plt.axvline(div1,color=‘k’)

Programación del modelo medio.

Para programar el modelo medio sigue estos pasos:

·         Crea una función llamada TrazaError, que reciba como parámetros los valores de x y y.

o   def TrazaError(x,y)

·         Agrega una columna de valores constantes para sumar los valores de x al modelo.

o   x=sm.add_constant(x)

·         Crea el modelo con y y la nueva x:

o   model=sm.OLS(y,x).fit()

·         Guarda en la variable m la pendiente y la intersección en la variable b.

o   m=model.params[1]

o   b=model.params[0]

Para calcular y trazar el error cuadrático medio dentro de la función TrazaError, sigue estos pasos:

·         Calcula la desviación estándar de y.

o   desvStd=np.std(y)

·         Calcula la constante de correlación de x y de y.

o   cCor=np.corrcoef(x,y)[0][1]

o   El valor que necesitas se encuentra en la fila 0 columna 1.

·         Calcula el error multiplicando la desviación estándar de y por la raíz cuadrada de 1 menos el cuadrado de la constante de correlación.

o   Err=desvStd*math.sart(1-cCor*cCor)

·         Agrega el límite en el eje x de las rectas de error y la tendencia.

o   Points=np.linspace(x.min(),xmax())

·         Traza la recta de tendencia.

o   plt.plot(points,m*points+b)

·         Traza las rectas de error, restando el error cuadrático medio que calculaste a la intersección.

o   plt.plot(points,m*points+(b+err))

o   plt.plot(points,m*points+(b-err))

o   print (err)

Ajuste al modelo.

Como viste en el ejemplo pasado, hay puntos en donde los datos comienzan a ser más dispersos, por lo cual tienes que hacer un ajuste y crear 2 modelos lineales para hacer al modelo más preciso. Para crear los 2 modelos y graficarlos con la función que ya creaste, sigue estos pasos:

·         Guarda el límite que dividirá a los 2 modelos en una variable llamada div.

o   div=6.

·         Crea un filtro correspondiente al primer modelo que elimine los datos mayores al límite propuesto, y que conserve los datos menores o iguales a él.

o   data2=data1[(data1.requested<=div1)]

·         Guarda los nuevos datos en sus respectivas variables y con estas manda a llamar la función TrazaError.

o   x2=data2.requested

o   y2=data2.received

o   TrazaError(x2,y2)

·         Crea un filtro para el 2° modelo que elimine los registros menores e iguales al límite propuesto y que conserve los datos mayores a él.

o   data3=data1[(data1.requested>div1)]

·         Guarda los nuevos datos en sus respectivas variables, y con estas manda a llamar la función TrazaError.

o   x3=data.requested

o   y3=data3.received

o   TrazaError(x3,y3)

·         Por último, muestra la gráfica completa con el método show

o   plt.show()

Fuente:
Fundación Carlos Slim – Curso Analista de Datos.

No hay comentarios.:

Publicar un comentario

La recomendación del momento

Las Carreras de Autootorgamiento en Semejanza de los Mortales

El método por el cual un Hijo Paradisiaco se prepara para la encarnación mortal como Hijo autootorgador, llegando a nacer de una madre en el...

Lo más popular de la semana