Análisis de regresión aplicado

15
Caso práctico en la industria Un experimento estadístico para la predicción de los costos. Ing. Leonardo G. Hernández Introducción Este estudio pretende ayudar a la empresa saber que factores influyen en el comportamiento de sus costos y poder lograr un modelo que pueda predecir el comportamiento de estos para mejorar en la medida que se pueda la influencia de los mismos. Cabe mencionar que los factores que se estudiaran serán los que son hasta cierto punto controlables por la empresa aunque también unos cuantos externos que necesitan interactuár con los controlables. Metodología Se planea aplicar para este estudio técnicas estadísticas a los datos de una empresa de transporte que nos permitan de manera rápida fácil y visual exponer las áreas de oportunidad a los distintos factores que intervienen en el desempeño eficiente de la empresa en general. Necesitamos saber si, ¿la combinación de ciertos factores, posee alguna influencia en el valor de la variable respuesta?, Dicho de otro modo, nos preguntamos si la conclusión sobre el efecto que cada factor tiene valor sobre la variable respuesta, para este caso los costos de transporte. Con el análisis de la regresión podremos observar este comportamiento, ejemplificando el estudio puede responder si la interacción del chófer en conjunto con la ruta determina si el costo de transporte es influyente en los viajes no. A partir de esto se podría deducir si es mejor darle una asignación preferencial sobre las rutas al chófer Una vez obtenido resultados a partir de este estudio sabremos que factores son los mas significantes para el proceso de transporte en la empresa,también es necesario saber el nivel de relación existe en cada uno y poder dar un pronostico del comportamiento entre factores. Entonces esto consistirá en marcar la tendencia de cada factor en comparación con la variable de salida, y si tienen un comportamiento lineal, es decir si el factor siempre influirá de la misma manera en el resultado. Equipo y Software Ahora, para este estudio nos apoyamos en un poderoso software especializado en estadística llamado R. Este es un software gratuito libre de licencia, utiliza su propio lenguaje de programación el cual tiene la ventaja de no tener limites al momento de manejar grandes bases de datos como Excel, minitab u otros, por ello consideramos este apto para realizar el estudio. El software y su documentación esta disponible libremente en la su pagina del proyecto http://www.r-project.org/ . Nos apoyaremos en el uso de Microsoft Excel en el uso de tablas dinámicas para la clasificación y ordenamiento de los datos que tengamos disponibles para el estudio, cabe señalar que este no es totalmente necesario ya que con un administrador de base de datos podría hacer el trabajo mas eficiente, para este caso nos limitamos a usar Microsoft Excel dado que nuestra fuente de entrenamiento se encuentra en este formato.

description

Caso práctico en la industriaEste estudio pretende ayudar a la empresa saber que factores influyen en el comportamiento de sus costos y poder lograr un modelo que pueda predecir el comportamiento de estos para mejorar en la medida que se pueda la influencia de los mismos.

Transcript of Análisis de regresión aplicado

Page 1: Análisis de regresión aplicado

Caso práctico en la industria

Un experimento estadístico para la predicción de los costos.Ing. Leonardo G. Hernández

Introducción

Este estudio pretende ayudar a la empresa saber que factores influyen en el comportamiento de sus costos y poder lograr un modelo que pueda predecir el comportamiento de estos para mejorar en la medida que se pueda la influencia de los mismos. Cabe mencionar que los factores que se estudiaran serán los que son hasta cierto punto controlables por la empresa aunque también unos cuantos externos que necesitan interactuár con los controlables.

Metodología

Se planea aplicar para este estudio técnicas estadísticas a los datos de una empresa de transporte que nos permitan de manera rápida fácil y visual exponer las áreas de oportunidad a los distintos factores que intervienen en el desempeño eficiente de la empresa en general.

Necesitamos saber si, ¿la combinación de ciertos factores, posee alguna influencia en el valor de la variable respuesta?, Dicho de otro modo, nos preguntamos si la conclusión sobre el efecto que cada factor tiene valor sobre la variable respuesta, para este caso los costos de transporte. Con el análisis de la regresión podremos observar este comportamiento, ejemplificando el estudio puede responder si la interacción del chófer en conjunto con la ruta determina si el costo de transporte es influyente en los viajes no. A partir de esto se podría deducir si es mejor darle una asignación preferencial sobre las rutas al chófer

Una vez obtenido resultados a partir de este estudio sabremos que factores son los mas significantes para el proceso de transporte en la empresa,también es necesario saber el nivel de relación existe en cada uno y poder dar un pronostico del comportamiento entre factores. Entonces esto consistirá en marcar la tendencia de cada factor en comparación con la variable de salida, y si tienen un comportamiento lineal, es decir si el factor siempre influirá de la misma manera en el resultado.

Equipo y Software

Ahora, para este estudio nos apoyamos en un poderoso software especializado en estadística llamado R. Este es un software gratuito libre de licencia, utiliza su propio lenguaje de programación el cual tiene la ventaja de no tener limites al momento de manejar grandes bases de datos como Excel, minitab u otros, por ello consideramos este apto para realizar el estudio. El software y su documentación esta disponible libremente en la su pagina del proyecto http://www.r-project.org/.

Nos apoyaremos en el uso de Microsoft Excel en el uso de tablas dinámicas para la clasificación y ordenamiento de los datos que tengamos disponibles para el estudio, cabe señalar que este no es totalmente necesario ya que con un administrador de base de datos podría hacer el trabajo mas eficiente, para este caso nos limitamos a usar Microsoft Excel dado que nuestra fuente de entrenamiento se encuentra en este formato.

Page 2: Análisis de regresión aplicado

Clasificación y ordenamiento de datos.

Para el estudio es necesario primeramente clasificar los datos y consecuentemente tener un ordenamiento. R es muy flexible al momento de recolectar los datos, inclusive R puede interactuar con bases de datos como Microsoft SQL server, Oracle, MySQL, Sybase, ODBC, entre otros. Cabe señalar la capacidad de ejecutar queries en la misma interfaz.

Para simplificar el estudio en R, usaremos archivos de texto(.txt) ordenados en columnas que se ejemplifican de la siguiente manera.

Unidad personal cliente costo1 3 41 3943.031 3 166 10601 15 41 19631.541 18 41 7280.911 20 41 62485.541 20 166 28001 26 41 6779.61 28 41 19809.731 32 41 3601.91 34 41 16151.741 35 41 1628.031 36 41 69987.821 40 41 57133.651 40 166 78681 46 41 7045.461 61 41 12430.261 61 45 280010 1 41 27724.6710 1 247 29396...

Este formato tiene como características principales que cada encabezado y numero este separado con un tabulador para que al momento de ingresarlos a R este lo identifique como separador. De columnas, este se obtiene fácilmente de Microsoft Excel ordenando las celdas, copiando des de Excel y pegando directamente en un archivo de Texto.

Mediante queries en excel se unifico una sola hoja los datos de entrenamiento que nos arrojo información que a nuestro considerar es mas importante para nuestro estudio, entonces clasificamos los siguientes datos por cada viaje en columnas.

• Costo total de operación

• Unidad utilizada.

• Ruta.

• Cliente.

Page 3: Análisis de regresión aplicado

• Operador.

Estos datos son suficientes para observar el comportamiento de los viajes dentro de nuestro estudio. Claramente se pueden omitir o agregar mas factores, según se vea la necesidad de establecer un análisis de comportamiento u cambiar la variable de salida.

También nuestros datos de entrenamiento están clasificados por fechas, dada la magnitud de datos se ve la necesidad de reducirlo a muestras mas pequeñas según queramos la magnitud de nuestros valores a predecir.

Ejemplo tabla dinámica en excel.

Para recolectar los datos en R desde un archivo de texto haremos lo siguiente

cam <- read.table("costotrec.txt", header=TRUE)

Donde asignamos a un arreglo de datos con el nombre “cam” la tabla del archivo de texto, que como única opción hemos especificado que la tabla si tiene encabezado y el nombre del archivo esta entre comillas.

Page 4: Análisis de regresión aplicado

Al momento de llamar a cam R nos muestra lo siguiente

Que son los datos ordenados listos para ser trabajados.

Ahora bien extraemos columna por columna de datos para dejarlo listo para nuestro análisis de la siguiente manera asignándolos a diferentes cadenas según su numero de columna en cam.

> clie <- cam[,3]> perso <- cam[,2]> cost <- cam[,4]> cami <- cam[,1]

Análisis de regresión

El objetivo de esta regresión lineal es encontrar los mejores valores de los coeficientes estimados del modelo propuesto con el objetivo de minimizar el error residual entre los valores experimentales y los predictivos. Para este estudio nuestro objetivo es encontrar que factores o variables afectan a nuestra variable de salida de distintas maneras y poder establecer un modelo que pueda predecir valores de la variable de salida. Entendemos como variable de salida al gasto o costo generado por la interacción de 1 o mas factores, en nuestro caso podemos estudiar directamente el costo asociado a los viajes o el rendimiento de el viaje.

Page 5: Análisis de regresión aplicado

Existen diferentes tipos de modelo para hacer un análisis de regresión lineal, el modelo mas sencillo por tratar es:

Y salida=01 X

Donde β0es la interceptan teórica de Y y β1 la pendiente teórica Como habíamos dicho el objetivo es reducir el error residual, así que el modelo final seria.

Y salida=b0b1 X e

En lenguaje R no es necesario escribir el modelo tal cual, la sintaxis básica es

lm(Y ~ model)

Entonces por ejemplo para este modelo la sintaxis seria

> lm(Y ~ X)

Dado que haremos un análisis de regresión de varios factores para observar el comportamiento de los factores en la variable de salida, es necesario también observar el comportamiento de estos en conjunto con sus interacciones por lo cual debemos usar un modelo de regresión completo de primer orden.

Delos datos obtenidos en la clasificación podemos establecer distintos modelos, usaremos en este caso distintos.

Para ejemplificar nuestro modelo mas generalizado, tenemos unidad, cliente, operador como factores y nuestra variable de salida es el Costo. Entonces

Y = Costo

A = Unidad

B = Cliente

C = Operador

Nuestro modelo seria

Y =01 A2 B3C4 AB5 BC6 AC7 ABC

Traducido en lenguaje R tenemos su equivalente

lm(cost~cami*clie*perso)Para obtener información mas relevante y ademas obtener acceso a otras funciones del análisis para manipular los datos, es mejor crear un objeto que contenga el resultado para el modelo. En este caso “est”

est <-lm(cost~cami*clie*perso)Este objeto puede ser usado como un argumento para otros comandos. Para obtener un resumen estadístico mas completo para el modelo usaremos summary()

Page 6: Análisis de regresión aplicado

> est<-lm(cost~cami*clie*perso)> summary(est)

La respuesta de R es la siguiente en su formato original.

Call:lm(formula = cost ~ cami * clie * perso)

Residuals: Min 1Q Median 3Q Max -177368 -42371 -15283 4747 1236473

Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -7.501e+04 3.534e+04 -2.123 0.03415 * cami 9.266e+03 1.601e+03 5.786 1.11e-08 ***clie 1.715e+02 2.409e+02 0.712 0.47672 perso 1.089e+03 6.121e+02 1.778 0.07578 . cami:clie -2.976e+01 9.372e+00 -3.175 0.00157 ** cami:perso -8.180e+01 2.777e+01 -2.945 0.00334 ** clie:perso -2.731e+00 3.716e+00 -0.735 0.46258 cami:clie:perso 3.194e-01 1.544e-01 2.068 0.03899 * ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 123100 on 666 degrees of freedomMultiple R-squared: 0.1091, Adjusted R-squared: 0.09969 F-statistic: 11.65 on 7 and 666 DF, p-value: 5.147e-14

La sección 'residuales' arroja datos de entre las señales experimentales y prevista. Las estimaciones para los coeficientes del modelo se proporcionan junto con el de sus desviaciones estándar , se proporciona el t-valor y la probabilidad de una hipótesis nula de que los coeficientes tienen valores de cero.

En este caso, por ejemplo, vemos que no hay pruebas de que la intersección (βo) es diferente de cero y una fuerte evidencia de que la pendiente de los camiones (β1) es significativamente diferente de cero. Esto quiere decir que el camión que se este usando tiene una fuerte influencia en el costo total del viaje, esto lo corroboran los códigos de sifnificancia que se encuentran en el resumen dado que muestran un alto grado de interacción según la precisión del error.

Una rápida conclusión que podemos observar en este resultado es analizando los códigos de sifnificancia(los asteriscos al final de cada fila), donde solo el tipo de camión es un dato confiable para el modelo de regresión, pero aun no podemos tomar estas conclusiones como confiables dado que tenemos que hacer pruebas al modelo para saber si este es bueno o los datos que se nos proporcionan obedecen a la realización de un buen modelo, estas pruebas las mencionamos mas adelante.

En la parte inferior de la tabla se encuentra la desviación estándar de la regresión (sr o error estándar residual), el coeficiente de determinacion R-squared que nos dice que el valos es mas cercano a o que a

Page 7: Análisis de regresión aplicado

1, por lo tanto nuestros datos no son confiables y el resultado de prueba F en la hipótesis nula de que la

MSreg / Msres es 1.

Para obtener directamente los coeficiente del modelo podemos utilizar

coef(est)Lo cual nos dará

(Intercept) perso clie cami perso:clie -7.501293e+04 1.088660e+03 1.714865e+02 9.265929e+03 -2.731035e+00 perso:cami clie:cami perso:clie:cami -8.179843e+01 -2.976023e+01 3.194275e-01

Que podríamos decir que nuestro modelo

Y =01 A2 B3C4 AB5 BC6 AC7 ABC

quedaría de la siguiente manera

Y =−7.501293e+041.088660e+03 A1.714865e+02 B9.265929e+03C−2.731035 AB−8.179843e+01 BC−2.976023e+01 AC3.194275e-01 ABC

Si quisiéramos conocer los valores del residuo de cada una de nuestras combinaciones debemos introducir

> resid(est)

El cual desplegara una lista de todos los valores residuales de la combinación de nuestros datos.

Evaluando los resultados.

Si aun no estamos seguros sobre nuestro modelo y queremos hacer otras pruebas de confiabilidad para el resultado de una regresión lineal tenemos otras pruebas. Una de las distintas maneras de hacerlo es examinar visualmente los residuos. Si el modelo es adecuado, entonces el error residual debe ser al azar y se distribuye normalmente. Además, la eliminación de un caso no debería afectar significativamente la confiabilidad del modelo. R proporciona cuatro métodos gráficos para evaluar un modelo utilizando el comando plot().

> layout(matrix(1:4,2,2)) > plot(est) Esto nos arroja cuatro gráficas donde nuestros residuos se expresan de la siguiente manera

Page 8: Análisis de regresión aplicado

La gráfica en la parte superior izquierda muestra los errores residuales representa en función de sus valores ajustados. Los residuos deben ser distribuidos al azar alrededor de la línea horizontal que representa un error residual de cero, es decir, no debe haber una clara tendencia en la distribución de puntos. Para este caso se puede observar una leve tendencia en los residuales lo cual no es buena señal para nuestro modelo.

La Gráfica en la parte inferior izquierda es una normal QQ plot, que debería sugerir que los errores residuales tienen una distribución normal. Esta gráfica para el ejemplo muestra que la tendencia no es lineal, que existen datos que hacen que nuestros errores se disparen y forme una especie de curva. La gráfica escala-ubicación en la esquina superior derecha muestra la raíz cuadrada de los residuales estandarizados (una especie de raíz cuadrada del error relativo) en función de los valores ajustados. Una vez más, no debería haber ninguna tendencia clara en este gráfico. También para el ejemplo la

- 5 0 0 0 0 5 0 0 0 0 1 5 0 0 0 0 2 5 0 0 0 0

0e+

005e

+05

1e+

06

F i t t e d v a l u e s

Res

idua

lsR e s i d u a l s v s F i t t e d

5 6 3

5 2 95 7 5

- 3 - 2 - 1 0 1 2 3

02

46

810

T h e o r e t i c a l Q u a n t i l e s

Sta

ndar

dize

d re

sidu

als

N o r m a l Q - Q

5 6 3

5 2 95 7 5

- 5 0 0 0 0 5 0 0 0 0 1 5 0 0 0 0 2 5 0 0 0 0

0.0

1.0

2.0

3.0

F i t t e d v a l u e s

Sta

ndar

dize

d re

sidu

als

S c a l e - L o c a t i o n5 6 35 2 95 7 5

0 . 0 0 0 . 0 5 0 . 1 0 0 . 1 5

-20

24

68

10

L e v e r a g e

Sta

ndar

dize

d re

sidu

als

C o o k ' s d i s t a n c e

0 . 5

1

R e s i d u a l s v s L e v e r a g e

5 8 4

5 6 3

5 7 5

Page 9: Análisis de regresión aplicado

tendencia esta marcada.

Por último, la gráfica en la parte inferior derecha muestra la tendencia de los puntos, que es una medida de su importancia en la determinación de los resultados de regresión. Superpuestas a la gráfica están las curvas de nivel para la distancia de Cook, que es otra medida de la importancia de cada observación a la regresión. Distancias más pequeñas significa que la eliminación de la observación tiene poco efecto sobre los resultados de la regresión. Distancias de más de 1 son sospechosas y sugieren la presencia de un valor atípico posible o un mal modelo.

Ahora bien las gráficas en primera instancia no nos dieron una buena conclusión sobre nuestro modelo debemos corroborarlo numéricamente, para esto usamos el Test de normalidad de Kolmorogov Smirnov el cual nos dice si nuestros residuos obedecen a una tendencia normal, si este es positivo entonces nuestro modelo y conclusiones serán confiables. Para este caso en R esto es sencillo con los datos hacemos lo siguiente.

fit <- aov(cost~perso*clie*cami) #Obtenemos el analisis de Varianzares <- fit$residuals #extraemos los residualesmu <- mean(res); #Obtenemos la media residualsigma <- sd(res); #Y la desviacion estandarks.test(res,pnorm, mu, sigma) #Ejecutamos el test de KolmorogovEsto nos indicara si las conclusiones son confiables, el valor de p que arroja este test es de entre 0 y 1, si este es cero nuestros residuos no obedecen una tendencia normal y por lo tanto nuestros datos y conclusiones no son confiables en analogía si este es 1 tendremos certeza de que nuestras conclusiones son confiables.

El resultado para este ejemplo fue

One-sample Kolmogorov-Smirnov test

data: res D = 0.2643, p-value < 2.2e-16alternative hypothesis: two-sided Lo que indica que nuestras conclusiones no pueden ser confiables y para certificar esto podemos hacer una ultima prueba.

Dado que tenemos el modelo podemos obtener los valores predictivos de cada combinación de factores y así poder compararlos con los valores reales, si los valores predecido son buenos al graficarlos contra los reales tenderían simular una linea recta, para obtener estos valores en R usaremos el comando fitted() que nos dará todos los valores de las combinaciones

cosp <- fitted(est)plot(cost,cosp)

Page 10: Análisis de regresión aplicado

Y la gráfica de resultados será.

Esta claramente no marca tendencia normal asi que podemos descartar las conclusiones del modelo y decir que este no es bueno.

0 2 0 0 0 0 0 4 0 0 0 0 0 6 0 0 0 0 0 8 0 0 0 0 0 1 2 0 0 0 0 0

-50

00

00

50

00

01

00

00

01

50

00

02

00

00

02

50

00

0

c o s t

cosp

Page 11: Análisis de regresión aplicado

Conclusiones

El experimento realizado esta adaptado a la necesidad de la empresa para observar sus datos, por lo que se puede concluir que para el estudio futuro este es de gran utilidad ya que solo se tendria que ajustar muy poco y que los factores que se quieran comparar pueden ser adaptados a este.

Para el ejemplo de muestra podemos concluir que el modelo no fue bueno debido a distintas causas, que pudieron afectar la salida de esto.

Una posible causa es la clasificación de los datos, que esta no haya sido buena y por ello nuestro modelo resulto ser poco confiable. Otra causa también puede radicar en los mismos datos que no tienen los datos completos para establecer un buen modelo. Y finalmente también el problema puede radicar en que tal vez existan datos que se disparen y hagan que nuestro modelo también sufra las consecuencias.

Esto no quiere decir que el experimento este mal estructurado se puede hacer mejorando la estructura de la clasificación de los datos. En el apéndice se mostraran mas ejemplos un poco mas cercanos a conclusiones confiables.

Bibliografía

Julian J. Faraway, Practical Regression and Anova using R, 2002.

Department of Electrical Engineering and Computer Science, Using R for Linear Regression, Montefiore Institute.

http://www.personality-project.org/R/r.lm.html

www.r-project.org/

Page 12: Análisis de regresión aplicado

Apendice

Ejemplos.

Ejemplo de analisis sobre el costo de viaje contra unidad, cliente y ruta.

El formato del archivo se verá asi

ruta unidad cliente Total 1 10 41 2842.77 1 11 247 2480 1 24 247 2480 1 42 247 2480 1 8 41 2289.97 1 8 198 1600 3 10 41 3774.84...

Editando nuestro script en R

cam <- read.table("d98.txt", header=TRUE)cam <- cam[1:900,]clie <- cam[,3]ruta <- cam[,1]cami <- cam[,2]cost <- cam[,4]fit <- aov(cost~ruta*clie*cami) #Análisis de varianza para análisis de residuossummary(fit)res <- fit$residualsmu <- mean(res); #Media de residuossigma <- sd(res); #Desviación standar de los residuosks.test(res,pnorm, mu, sigma) #Test de confiabilidad Kolmogorov Smirnov

fit2<-lm(cost~ruta*clie*cami) #Análisis de Regresiónsummary(fit2) #Resumen de Análisis de regresiónlayout(matrix(1:4,2,2))plot(fit2) #Gráficos de análisise<-coef(fit2) #Coeficientes del modelo

cosp <- fitted(fit2); #Costo predecido para las combinaciones de factoreslayout(1)plot(cost,cosp) #Gráfico comparativo entre costos reales y predictivos

Nuestra salida es la siguiente

One-sample Kolmogorov-Smirnov test

data: res D = 0.1398, p-value = 9.992e-16

Page 13: Análisis de regresión aplicado

alternative hypothesis: two-sided

Warning message:In ks.test(res, pnorm, mu, sigma) : cannot compute correct p-values with ties

Call:lm(formula = cost ~ ruta * clie * cami)

Residuals: Min 1Q Median 3Q Max -5303.8 -691.6 -175.2 453.5 5979.8

Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 6700.41082 621.97895 10.773 < 2e-16 ***ruta -105.94571 39.34439 -2.693 0.007219 ** clie -8.65252 6.04202 -1.432 0.152478 cami 86.39947 24.82362 3.481 0.000525 ***ruta:clie 0.91279 0.49641 1.839 0.066277 . ruta:cami -3.20847 1.56503 -2.050 0.040647 * clie:cami -0.55016 0.23379 -2.353 0.018828 * ruta:clie:cami 0.02964 0.01721 1.722 0.085436 . ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1552 on 892 degrees of freedomMultiple R-squared: 0.1931, Adjusted R-squared: 0.1868 F-statistic: 30.5 on 7 and 892 DF, p-value: < 2.2e-16

Page 14: Análisis de regresión aplicado

Graficas de confiabilidad

Page 15: Análisis de regresión aplicado

gráfica comparando valores reales con predecidos.

Para este ejemplo se nota una clara mejoría en la confiabilidad de los datos, si bien el test de Kolmogorov no mostró evidencia dado un apalancamiento en los datos, las gráficas dicen que nuestras conclusiones pueden ser confiables. Dado que los residuos presentan una tendencia casi lineal, salvo unos cuantos datos que se disparan y también el comparativo entre los valores reales y los predecidos que si bien no presenta una distribución totalmente lineal se puede observar que muestra cierta tendencia.

De este modelo podemos decir que el tipo de camión es realmente influyente en los viajes y la ruta también lo es pero en menor escala, y la interacción entre estos 2 factores es influyente pero muy poco, por lo cual se podría deducir que el rendimiento del viaje podría ser mejor si se determinaran las unidades optimas para cada ruta.