Ajustes al modelo de regresión lineal con software

Para mejorar las predicciones al extrapolar la línea de tendencia, debes utilizar el software de análisis estadístico, y así, asegurar que el error calculado sea aceptable.

Error cuadrático medio.

En el software, el error cuadrático medio se calcular al realizar el modelo lineal. Utiliza el siguiente ejemplo para comprenderlo de mejor manera.

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 obtener la tabla en tu software escribe lo siguiente:

employees<-read.csv(“C:\\Destop\\empleados.csv”,header=TRUE)

attach(employees)

Tendrás que graficar las columnas etiquetadas como requested y received, con el siguiente comando:

Plot(employees$requested,employees$received,xlim=c(2,25),ylim=c(0,30),col=”blue”)

Ahora tienes que obtener el modelo lineal con esta instrucción:

model<-lm(received-requested,data=employees)

Para acceder al cálculo de error cuadrático tienes que agregar:

e<-summary(model$sigma

También debes de obtener los coeficientes calculados del modelo, empezando por la pendiente:

m<-model$coefficients[2]

Y luego la intersección:

b<model$coefficients[1]

Para observar el comportamiento del error lo graficas en el software de la siguiente manera:

abline(model,col=“red”)

En abline, primero calculas la intersección sumando o restando el error y después pones la pendiente. Como se podría ver, el error cuadrático medio calculado es demasiado grande, por lo que tendrás que utilizar rangos en la gráfica para disminuirlo.

abline(b+e,m,col=“red”,l+y=2)

abline(b-e,m,col=“red”,l+y=2)

Análisis por rangos.

Es un procedimiento de apreciación subjetiva de una gráfica, y depende mucho de la persona que lo analiza.

Regresando al ejemplo anterior, se ve claramente una mayor dispersión a partir de las personas que piden un 6% de aumento, por lo que es conveniente realizar dos modelos lineales, uno que evalúe del 1% al 6% y otro que evalúe del 6% hasta el final. Con ello, se presenta la división en una gráfica, con una línea vertical en 6%.

Ahora busca obtener los dos modelos lineales con:

modelA<-lm(received[requested

<-6]-requested[requested

<-6],data=employees)

modelB<-lm(received[requested

<-6]-requested[requested

<-6,data=employees)

Sigue estas indicaciones para obtener el error, la pendiente y la intersección de cada modelo, en diferentes variables:

eB<summary(modelB)$sigma

mB<-modelB$coefficients[2]

bB<-modelB$coefficients[1]

ients[1]

Como se podría apreciar en el model A, ahora se tiene un menor error calculado, y esto fue gracias a que fue removida la mayor dispersión apreciada después del 6% del modelo.

Función segments.

Para observar los errores primero debes de aprender a utilizar la función. Es una función que grafica una línea con un inicio y un fin, a diferencia de abline que dibuja una línea al infinito, sólo tienes que poner las coordenadas del punto inicial y el punto final, y agregar esta sintaxis:

Segments(x0,y0,x1,y1)

Donde x0,y0 son coordenadas del punto inicial y x1,y1 son coordenadas del punto final.

Siguiendo el ejemplo, dibuja una línea de tendencia hasta la línea que marca el 6% en el eje horizontal, como ya sabemos que en el eje horizontal el segmento de línea que dibujaremos va de 0 al 6, tenemos que calcular la coordenada en y con la ecuación general de la línea recta.

x0<-0 x1<-6

Para esos puntos se utilizan los valores correspondientes al model A. Ahora se resta el error y se suma a la intersección para obtener las siguientes líneas:

x0<-0

y<-x*m+b

x1<-6

y1<-x1*mA+bA

segments(x0,y0,x1,y1,col=“red”)

x0<-0

y0<-x0*mA+(bA+eA)

x1<-b

y1<x1*mA+(bA+eA)

segments(x0,y0,x1,y1,col=“red”,1+y=2)

x0<-0

y0<-x0*mA+(bA-eA)

x1<-b

y1<x1*mA+(bA-eA)

segments(x0,y0,x1,y1,col=“red”,1+y=2)

El mismo procedimiento se sigue para marcar la línea de tendencia del model B

x0<-6

y0<-xB*mB+bB

x1<-25

y1<-x1*mB+bB

segments(x0,y0,x1,y1,col=“red”,1+y=2)

x0<-6

y0<-x0*mB+(bB+eB)

x1<-25

y1<-x1*mB(bB+eB)

segments(x0,y0,x1,y1,col=“red”,1+y=2)

x0<-6

y0<-x0*mB+(bB-eB)

x1<-25

y1<-x1*mB(bB-eB)

segments(x0,y0,x1,y1,col=“red”,1+y=2)

Cuando el segmento del eje horizontal va de 6% a 25%, al estar más dispersos los puntos en el model A, el error medio cuadrático calculado es más grande, por lo que una predicción no será tan buena.

Es fácil observar cual de los análisis por rangos produce un menor error, y así puedes realizar predicciones más certeras.

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

Comentarios

Lo más popular de la semana

Principio de Excepción

Análisis de Amparo Dávila – Alta Cocina