scieee AI-readable full text Open interactive document viewer

Técnicas estadísticas en predicción de la demanda en el sector comercio

Mesta Carmona, Andrea

Abstract

En la actualidad, es imprescindible para cualquier organización contar con un sistema efectivo de análisis de datos, ya que el conocer y anticiparse a la demanda de productos le supone incrementar la probabilidad de alcanzar sus objetivos. El presente trabajo se centra en el estudio y aplicación de técnicas estadísticas para datos de conteo y de Machine Learning, con el fin de conseguir una predicción de la demanda de productos. Para ello, se pretende dar una visión global de algunas de las distintas técnicas y algoritmos existentes para el modelado de datos de recuento. Además, al tratar este tipo de datos, se presenta el problema del exceso de ceros, estudiándose modelos que, siguiendo distintas estrategias, abordan dicho problema.

Full text

Grado en Estadística TRABAJO FIN DE GRADO Técnicas estadísticas en predicción de la demanda en el sector comercio Tutor: José Luis Pino Mejías Alumna: Andrea Mesta Carmona Sevilla, Junio de 2021 Índice general Resumen....................................... iii Abstract....................................... iv Introducción 1 1. Técnicas para la previsión de la demanda 3 1.1. Inteligencia de negocios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Técnicasestadísticas ............................. 4 1.2.1. Regresión (Modelo Lineal General) . . . . . . . . . . . . . . . . . 4 1.2.1.1. Modelo de Regresión de Poisson . . . . . . . . . . . . . . 8 1.2.1.2. Modelo de Regresión Binomial Negativa . . . . . . . . . 9 1.2.2. Excesodeceros............................ 10 1.2.2.1. Modelos inflados con ceros . . . . . . . . . . . . . . . . . 10 1.2.2.2. Modelos en dos partes . . . . . . . . . . . . . . . . . . . 11 1.2.3. SeriesTemporales........................... 11 1.2.3.1. Metodología de Box-Jenkins . . . . . . . . . . . . . . . . 13 1.2.3.2. Análisis espectral . . . . . . . . . . . . . . . . . . . . . . 14 1.3. MachineLearning............................... 14 1.3.1. Preprocesamiento de los datos y elección de los modelos . . . . . 15 1.3.1.1. Feature Engineering . . . . . . . . . . . . . . . . . . . . 15 1.3.1.2. Optimizar Hiperparámetros . . . . . . . . . . . . . . . . 15 1.3.1.3. Generar modelos alternativos con diferentes algoritmos . 16 1.3.2. Entrenar el modelo . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.3.3. Evaluar y seleccionar el modelo . . . . . . . . . . . . . . . . . . . 18 2. Aplicación a un caso prático 19 2.1. Modelización y predicción de ventas . . . . . . . . . . . . . . . . . . . . . 19 2.1.1. Descripción de los datos . . . . . . . . . . . . . . . . . . . . . . . 19 2.1.2. Modelo de regresión de Poisson . . . . . . . . . . . . . . . . . . . 23 2.1.3. Modelo de regresión Binomial negativa . . . . . . . . . . . . . . . 30 2.1.4. Modelo inflado con ceros y modelo en dos partes . . . . . . . . . . 35 2.1.5. Modelo de series temporales . . . . . . . . . . . . . . . . . . . . . 41 2.1.6. Modelo ramdonForest . . . . . . . . . . . . . . . . . . . . . . . . 48 2.1.7. Modelo de Gradient Boosting . . . . . . . . . . . . . . . . . . . . 50 2.1.8. ModelodeRNA............................ 52 Conclusiones 57 A. Apéndice: Exploración y manipulación de datos 63 i A.1. Lectura y resumen de datos . . . . . . . . . . . . . . . . . . . . . . . . . 63 A.2.Manipulación ................................. 64 A.3.Gráficos .................................... 65 B. Apéndice: Análisis y predicción 67 B.1.Análisisespectral............................... 67 B.2.Redneuronal ................................. 67 B.3. Función para predicción . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 B.4.Predicción................................... 69 B.4.1.Nuevosdatos ............................. 70 Bibliografía 74 ii Resumen En la actualidad, es imprescindible para cualquier organización contar con un sistema efectivo de análisis de datos, ya que el conocer y anticiparse a la demanda de productos le supone incrementar la probabilidad de alcanzar sus objetivos. El presente trabajo se centra en el estudio y aplicación de técnicas estadísticas para datos de conteo y de Machine Learning, con el fin de conseguir una predicción de la demanda de productos. Para ello, se pretende dar una visión global de algunas de las distintas técnicas y algoritmos existentes para el modelado de datos de recuento. Además, al tratar este tipo de datos, se presenta el problema del exceso de ceros, estudiándose modelos que, siguiendo distintas estrategias, abordan dicho problema. iii Abstract Currently, it’s essential for every company to have an effective system of data analysing. In order to get to know and anticipate to products demand, you can guarantee its goals to succeed. This end of degree project focuses on the research and application of statistical techniques for count data and Machine Learning to predict demand. The aim is to give a global vision of some of the techniques and algorithms available for data modeling. In addition, by working out this type of data, there could be a problem with the excess of zeros. The project will treat different models that following diverse strategies could solve that issue. iv Introducción Conocer la previsión de las ventas y la demanda ayuda a los responsables de las empresas a tomar mejores decisiones en las actividades de planificación, producción, suministro y marketing, por lo que es crucial para satisfacer sus necesidades. Por ello, la Analítica Empresarial se ha convertido en un apoyo indispensable para cualquier tipo de actividad comercial, ya que una previsión de ventas y demanda precisas es esencial para los Procedimientos de Ventas y Operaciones (S&OP). Un área en la que la previsión de la demanda es fundamental es la de los Bienes de Consumo de Alta Rotación (FMCG), en la que disponer del adecuado nivel de inventario de cada producto es un factor clave para la supervivencia de las empresas minoristas. Para que los Procedimientos de Ventas y Operaciones de una organización proporcionen previsiones fiables, es necesario tener una previsión de la demanda adecuada, precisa y eficiente; esto no es fácil de conseguir debido a que el patrón de la demanda de los clientes dependerá, entre otros aspectos, del clima, de los periodos vacacionales, de los patrones estacionales, de las situaciones económicas,... Además, se dispone de una cantidad de datos inmensa que resulta imposible de ser analizada y aún menos de obtener predicciones, sin utilizar software específico. En este trabajo se presenta un análisis para la predicción de la demanda empleando técnicas estadísticas y algoritmos de Machine Learning. Como objetivos propuestos se tienen los siguientes: En primer lugar, se pretende proporcionar una visión global acerca de porqué es tan importante la modelización de ventas y la obtención de predicciones. Para ello, se introduce el concepto de Inteligencia de negocios. En segundo lugar, se pretende explicar, de forma teórica, técnicas de modelado y predicción aplicables a datos de conteo, ya que a lo que se aspira es a la predicción de ventas; y conocer sus etapas de realización. Para ello, se estudian tanto técnicas estadísticas como de Machine Learning. Por último, se aplican todas las técnicas citadas a un producto de una base de datos de ventas anonimizados de una cadena de supermercados, con el fin de modelar y obtener predicciones. Para llevar a cabo dichos objetivos, el presente trabajo se ha estructurado en dos capítulos. En el primero, se habla sobre la Inteligencia de negocios, que incluye un conjunto de técnicas, estrategias y métodos capaces de recopilar, almacenar y analizar los datos de las actividades u operaciones de un negocio, con el fin de obtener la mayor cantidad de información y conocimiento posibles y así poder optimizar su rendimiento. Más adelante, se detallan teóricamente algunas de las técnicas que pueden emplearse para conseguir la previsión de la demanda. 1 ÍNDICE GENERAL Las técnicas a utilizar, pueden clasificarse a partir de las hipótesis realizadas sobre los datos en técnicas algorítmicas (Machine Learning) y técnicas de aprendizaje estadístico. Las técnicas estadísticas descritas se centran en la modelización y predicción de ventas como un modelo de regresión de Poisson y como un modelo de regresión Binomial negativa, al ser dos de los métodos más útiles para modelar datos de conteo; y como modelo de serie temporal. Además, también se estudiarán dos de los problemas más habituales que se dan en los modelos de regresión, la sobredispersión e infradispersión de los datos y las modificaciones producidas por los ceros. Para ello se exponen los modelos inflados y los modelos en dos partes. Las técnicas algorítmicas detalladas corresponden al aprendizaje supervisado, debido a que se trabaja con un conjunto de datos dados, dividido en conjunto de entrenamiento y conjunto test. El segundo y último capítulo, está dedicado a un caso práctico, donde se aplican las técnicas explicadas anteriormente a un producto de una base de datos. Esto se lleva a cabo mediante el software estadístico R. A continuación, se extraen conclusiones generales acerca de los objetivos descritos y sobre las técnicas empleadas, realizando, además, un resumen de los valores de las predicciones en cada modelo para una semana determinada. Finalmente, se realiza una recopilación bibliográfica sobre aquellos textos (libros, artículos, manuales,...) usados para la realización del trabajo. 2ÍNDICE GENERAL Capítulo 1 Técnicas para la previsión de la demanda 1.1. Inteligencia de negocios La mayoría de las organizaciones generan, almacenan y modifican una gran cantidad de datos de cualquier actividad que se registre en ellas, es decir, tienen almacenada su historia en una base datos a través de aplicaciones de gestión de datos cada vez más complicadas y obsoletas. De estas bases de datos se puede extraer conocimiento útil y novedoso y así contribuir a la ayuda de la toma de decisiones. El poder competitivo que puede tener una empresa se basa en la calidad y cantidad de información que sea capaz de usar para mejorar su eficiencia. Gracias a la implementación de la Inteligencia de negocios (BI) se cuenta con una visión integral de todos los datos de la organización, con el objetivo de poder generar el conocimiento necesario tanto para escoger la alternativa que sea más apropiada para el éxito de la empresa y adaptarse rápidamente a los cambios de la demanda, como para reducir posibles malas decisiones. Es decir, BI ofrece a las empresas un sistema de apoyo para conseguir sus metas. La inteligencia de negocios consta de un conjunto de técnicas, metodologías y aplicaciones o herramientas que ayudan a recopilar, procesar, analizar los datos, exprimir toda la información que esconden éstos, así como descubrir posibles tendencias y patrones, y generar el conocimiento que se toma como referencia para la toma de decisiones. Seguidamente se detallan algunas de la herramientas que existen dentro de BI. Minería de datos: disciplina complementaria a la Inteligencia de Negocios que se encarga de recoger, depurar, modelar grandes volúmenes de datos y encontrar ciertos patrones o tendencias previamente desconocidos en ellos. Éstos pueden ser cargardos posteriormente en el Data Warehouse. Data Warehouse: proceso de almacenar datos de distintas fuentes de información. Éstos deben estar depurados, transformados y bien estructurados para poder almacenarlos en una base de datos, con el fin de depurar información, la cual es utilizada posteriormente para el análisis de negocio. OLAP: Procesamiento Analítico en Línea (On-Line Analytical Processing) que se basa en el análisis de grandes cantidades de datos, organizándolos en subconjuntos 3 1.2. TÉCNICAS ESTADÍSTICAS Función enlace g(µi) = θ(µi) = ln αµi 1 + αµi!=Xt iβ=ηi donde φies el predictor lineal 1.2.2. Exceso de ceros Cuando se estudian datos de conteo, se aprecian frecuentemente observaciones cuyo valor es cero; por tanto, modelar estos datos con las distribuciones de Poisson o Binomial negativa, lleva a la conclusión de que esta cantidad de ceros no es consistente con dichos modelos, debido a que por algún motivo, existen más observaciones que toman dicho valor de las que cabría esperar de acuerdo a estas distribuciones. Existen dos tipos de valores nulos, los falsos ceros y los ceros auténticos. A continuación, se presenta un ejemplo que ayuda a distinguirlos: Ejemplo: En el estudio del número de ventas de un determinado producto de un supermercado, aquellos días en los que no existen ventas puede ser debido a dos motivos: El supermercado está cerrado. Falsos ceros El supermercado está abierto y no ha habido ninguna venta de dicho producto. Ceros aunténticos Esta existencia de falsos ceros puede provocar una abundancia de ceros en la base de datos. Dos de los modelos más usuales para lidiar este tipo de situaciones son: 1. Modelo inflado con ceros: estos modelos se utilizan cuando se considera que, por algún motivo, existe una gran cantidad de falsos ceros en los datos. 2. Modelo en dos partes (Hurdle models): estos modelos se utilizan cuando se supone que la mayoría de los ceros son auténticos. 1.2.2.1. Modelos inflados con ceros Éstos se incluyen en los Modelos lineales generalizados mezclados o mixtos (mixture models) y suponen que los ceros provienen de dos procesos distintos: el binomial (falsos ceros) y el proceso que se ha supuesto como Poisson, Binomial negativa,. . . (ceros auténticos y demás observaciones positivas). De esta forma se tiene: P(Yi= 0|yi= 0) = g+ (1 −g)f(0) P(Yi=yi|yi>0) = (1 −g)f(yi) donde: – g está definida por un proceso de decisión binario y representa la probabilidad de los ceros falsos. – f(0) es una distribución para datos de conteo, como la Poisson, Binomial negativa,... Representa la probabilidad de observar un cero en aquellas observaciones que no pertenecen a los falsos ceros. 10 CAPÍTULO 1. TÉCNICAS PARA LA PREVISIÓN DE LA DEMANDA 1.2. TÉCNICAS ESTADÍSTICAS 1.2.2.2. Modelos en dos partes Otra alternativa que recoge de forma adecuada esta abundancia de valores nulos es el modelo en dos partes. Este método tiene como idea principal determinar si el resultado es cero o no mediante una decisión binaria y a continuación, una vez pasado esta primera decisión, determinar la probabilidad de los valores mayores que cero. Este modelo en dos partes se dividen en: 1. Modelo de decisión binaria (generado por una distribución g) 2. Modelo truncado en cero (generado por una distribución f) De forma que: P(Yi=yi|yi= 0) = g(0) P(Yi=yi|yi>0) = (1 −g(0)) f(yi) 1−f(0) donde: –1−g(0) es la probabilidad de no ser el valor cero, pasar la primera decisión. –f(yi)/(1 −f(0)) es la probabilidad de tomar un valor yi, con yi>0 1.2.3. Series Temporales Los modelos explicados anteriormente no tienen en cuenta la estructura temporal de los datos por lo que aplicar técnicas específicas podría ser otra opción. Para datos cuantitativos, un modelo de predicción común es el modelo de series temporales. Se conoce como serie temporal a una sucesión de datos ordenados en el tiempo, correspodientes a una misma variable o característica. Estas observaciones, normalmente se toman en intervalos regulares de tiempo, es decir, presentan el mismo periodo. Cuando se tiene una serie temporal, es muy importante elegir un modelo probabilístico, el cuál se ajuste correctamente a las observaciones. El objetivo principal en el análisis de series temporales es determinar qué proceso estocástico ha sido capaz de generar la serie bajo estudio. Esto es posible utilizando la teoría de los procesos estocásticos y gracias a ello se podrá caracterizar el comportamiento de la serie y predecir en el futuro. Un proceso estocástico es una familia de variables aleatorias, las cuales están relacionadas entre sí y siguen una ley de distribución conjunta, por lo que gran parte de la información de estas distribuciones conjuntas se puede describir en términos de medias, variaciones y covarianzas. Los modelos de serie temporal suponen que la combinación de patrones es frecuente con el tiempo, por lo tanto, mediante el análisis de una serie temporal se podrá describir tanto el comportamiento que la serie ha tenido en el pasado como predecir sus valores en un futuro no muy lejano. En un análisis descriptivo de series temporales se distinguen cuatro etapas, necesarias para elegir el modelo. Éste va a proporcionar información descriptiva o va a facilitar la estimación de los parámetros con los que se ajustan mejor los datos que se tienen y por consiguiente, se va a poder obtener predicciones. CAPÍTULO 1. TÉCNICAS PARA LA PREVISIÓN DE LA DEMANDA 11 1.2. TÉCNICAS ESTADÍSTICAS Representación gráfica: mediante la exploración del gráfico se puede tener una idea del comportamiento de la serie, detectando, por ejemplo, posibles tendencias crecientes o decrecientes, y ofrediendo información acerca de qué métodos serán los más adecuados para aplicar. Modelización: el objetivo en esta etapa es buscar un modelo que se ajuste de la mejor forma posible a los datos de la serie, por lo que aquí se elabora una representación simplificada de las características más importantes de esta. Validación del modelo: es fundamental el análisis de los residuos, los cuales deben tener media o varianzas constantes. En esta etapa es necesario conocer si el modelo que se tiene es el adecuado de cara a efectuar predicciones. Predicción: dada una nueva observación, estimar el valor futuro que tendrá la variable respuesta. Esta predicción puede ser puntual o por intervalos de confianza. Dependiendo del tipo de tendencia y de si presenta o no estacionalidad, se podrán utilizar distintos alisados para conseguir el objetivo de esta etapa. El análisis clásico de las series temporales supone que cualquier serie de tiempo se integra de cuatro componentes responsables de la variación de la variable bajo estudio con respecto al tiempo. Estas componentes son: Tendencia secular: tendencia persistente a largo plazo. Los factores que inluyen en este tipo de tendencia pueden ser debidos a cambios en los hábitos del consumidor o variaciones demográficas. Componente estacional: movimientos regulares de la serie cuya periodicidad es inferior a un año. Recoge las oscilaciones de la serie que se repiten de manera periódica en un año (las estaciones), una semana (los fines de semana), un día (las horas puntas) o en cualquier otro periodo. Variación cíclica: esta variación está caracterizada por movimientos recuerrentes en torno a la tendencia, duran más de un año y ocurre incluso después de eliminar las variaciones estacionales o irregulares. Además, a diferencia de las variaciones estacionales, tienen período y amplitud variables. Componente irregular: incluye las variaciones de la serie que no pueden ser expicadas por las demás componentes. Al no incluir ningún compotarmiento sistemático o regular no será posible su predicción. Este enfoce clásico de series temporales supone además, la existencia de tres tipos de series: Modelo aditivo: supone que la serie está compuesta por la suma de la tendencia, la componente estacional y la irregular. Xt=Tt+Et+It Modelo multiplicativo: supone que la serie está compuesta por el producto de la tendencia, la componente estacional y la irregular. Xt=Tt×Et×It Modelo mixto: supone que la serie está compuesta por la suma y producto, con distintas variantes, de la tendencia, la componente estacional y la irregular. 12 CAPÍTULO 1. TÉCNICAS PARA LA PREVISIÓN DE LA DEMANDA 1.2. TÉCNICAS ESTADÍSTICAS Una vez detectado el modelo, se debe descomponer la serie en sus distintas componentes. Gracias a esto, se podrán ver individualmente y se podrá realizar el posterior análisis y pronóstico sin la influencia del ruido o la estacionalidad. Por un lado, entre los métodos de estimación de la tendencia destaca el método de media móvil que trata de indentidficar a estas mediante una transformación lineal a partir del conjunto de datos. Por otro lado, el análisis de la estacionalidad se realiza con el propósito de desestacionalizar la serie para así hacer comparables los datos correspodientes a estaciones diferentes; y de predecir, ya que se necesita conocer esta componente para el momento de la predicción. Se supone que el efecto de la estacionalidad consiste en aumentar o disminuir la tendencia mediante una cantidad constante, por lo que para la descomposición de la estacionalidad se usan índices llamados IVE (índices de variación estacional), expresando con ellos las variaciones porcentuales de las diferentes estaciones del año respecto a la media anual. La serie desestacionalizada se obtiene restándole a las observaciones su correspondiente IVE. Para que los procesos estocásticos proporcionen una predicción estable, se les imponen la condición de estacionariedad, lo que supone que sus propiedades estadísticas deben ser invariantes ante una traslación del tiempo. Todo proceso lineal es estacionario, luego, cuando la media y la varianza de la serie temporal se mantiene estable en el tiempo, se modelará este conjunto de observaciones a través de distintos modelos como son el modelo autorregresico AR(p), el modelo de medias móviles MA(q) o mediante el modelo autorregresivo de medias móviles ARMA(p,q). Cuando una serie temporal no presenta media y/o varianza constante, entonces se tiene una serie de tiempo no estacionaria. Uno de los modelos clásicos utilizados para el pronóstico de series temporales es el modelo integrado autorregresivo de medias móviles, ARIMA(p,d,q). Estos modelos suponen que al aplicarle al proceso estocástico la d-ésima diferencia, seguirá un ARMA(p+d,q), que es un proceso estacionario. A d, número de diferencias que hay que tomar para que el proceso sea estacionario se le conoce como orden de integración del proceso. 1.2.3.1. Metodología de Box-Jenkins En el análisis de series de tiempo, la metodología de Box-Jenkins, se aplica a los modelos autorregresivos de media móvil (ARMA) o a los modelos autorregresivos integrados de media móvil (ARIMA), para encontrar el mejor ajuste de una serie temporal y así generar pronósticos más acertados. El método original utiliza un enfoque de modelado iterativo en tres fases o estapas: Identificación: donde se representan los datos y las funciones de autocorrelación (FAS) y autocorrelación parcial (FAP), para así estabilizar la serie en el caso de que no exista la estacionariedad. Si los datos no se distribuyen horizontalmente alrededor de una media constante o si la FAS o FAP no caen a cero rapidamente, entonces la serie es no estacionaria y por tanto, será necesario su transformación. En esta etapa también se identifican la tendencia y estacionalidad de la serie. Estimación o test: Tanto la estimación de máxima verosimilitud o mínimos cuadrados no lineales son dos de los métodos más comunes para estimar los parámetros de la serie que mejor se ajustan al modelo seleccionado. CAPÍTULO 1. TÉCNICAS PARA LA PREVISIÓN DE LA DEMANDA 13 1.3. MACHINE LEARNING Diagnóstico de los modelos y selección del mejor: como hipótesis de partida, para que un proceso sea estacionario, los residuos deben ser independientes y tanto la media como la varianza deben ser constantes en el tiempo. Por tanto, para el análisis de los residuos se usa el contraste de Ljung-Box, y para la selección del modelo se puede usar el criterio AIC, criterios de los que ya se hablaron en el modelo de regresión lineal general. Una vez seleccionado el mejor modelo que se ajuste al conjunto de datos, las predicciones se pueden realizar utilizando los parámetros estimados. 1.2.3.2. Análisis espectral La cantidad de ventas de un determinado producto depende de ciertos criterios como pueden ser el día de la semana o mes. De esta forma y considerando el año como tiempo de referencia, es importante el estudio de estas componentes periódicas que, tanto para datos semanales (de periodo 7) como para datos mensuales (de periodo 12), se consideran estacionales. Este tipo de series se conoce como series multiestacionales y es posible modelarla mediante procesos estocásticos estacionarios o no etacionarios; o mediante el análisis espectral. Un enfoque alternativo al análisis clásico es el análisis espectral. Este análisis permite el estudio de la componente estacional, siendo por tanto, una herramienta adecuada para sacar a luz las componentes periódicas de la serie, ya que todo proceso estocástico puede ser representado mediante transformaciones lineales de funciones trigonométricas o, mediante funciones exponenciales complejas, aunque ponderados por coeficientes aleatorios. Este enfoque supone que cualquier serie puede ser transformada, mediante transformaciones de Fourier, en ciclos formados con senos u cosenos, basándose en el análisis de la frecuencia, que es el recíproco del período del ciclo. Por tanto, la idea básica del análisis espectral es que un proceso estacionario puede ser explicado como la suma de movimientos de seno y coseno de diferente frecuencia y amplitud. Para describir el comportamiento de la serie es necesario determinar los ciclos de las diferentes frecuencias que predominan, pudiendo ser éstos de corto o largo plazo. Al final, lo que se consigue es descomponer a la serie en la totalidad de frecuencias existentes. A esta representación se le conoce como representación espectral de un proceso estocástico, siendo la densidad espectral la varianza de los coeficientes de dicha representación. Por tanto, una estimación de esta densidad espectral puede obtenerse mediante la transformada de Fourier. Mediante la representación del periodograma se obtiene una estimación de la densidad espectral y muestra la varianza para cada una de las frecuencias de Fourier. Se puede representar por frecuencia o por periodo. Además, en el eje vertical se representan la suma de los cuadrados del seno y coseno, lo que indica que los datos de mayor valor son las frecuencias más representativas de la serie. 1.3. Machine Learning “Machine Learning es la ciencia que permite que las computadoras aprendan y actúen como lo hacen los humanos, mejorando su aprendizaje a lo largo del 14 CAPÍTULO 1. TÉCNICAS PARA LA PREVISIÓN DE LA DEMANDA 1.3. MACHINE LEARNING tiempo de una forma autónoma, alimentándolas con datos e información en forma de observaciones e interacciones con el mundo real.” — Dan Faggella Machine Learning (ML), subcampo de las ciencias de la computación y técnica del ámbito de la Inteligencia Artificial (IA), se basa en algoritmos de aprendizaje. Los algoritmos de ML construyen modelos basados en los datos de muestra (datos de entrenamiento), siendo éstos modelos no lineales más complejos que los lineales, capaces de abordar distintas incertidumbres como situaciones económicas o clima, además de ofrecer predicciones más precisas y oportunas mediante algoritmos capaces de identificar patrones complejos y predecir comportamientos futuros. Para poder llevar a cabo un problema de ML, se debe seguir una serie de pasos. 1.3.1. Preprocesamiento de los datos y elección de los modelos En primer lugar, se realiza un pre-procesamiento de los datos, ya que a menudo estos pueden presentarse en fomatos no válidos para ser procesados por el modelo. Algunos de los posibles procesos a tener en cuenta, son: el tratamiento de los valores perdidos, la transformación de las variables, la codificación de las variables o la normalización. Se necesita un modelo que consiga la mayor precisión posible, por lo que en segundo lugar, se debe identificar la variable objetivo y el conjunto de características o variables predictoras. Dado que puede ocurrir que exista correlación entre las características se debe aplicar técnicas para reducir su dimensión. Existen varios métodos para optimizar el modelo y conseguir una mejora de éste, dando como resultado uno más fiable y eficaz. Los tres enfoques más comunes para conseguir dicho objetivo son: Feature Engineering es como se denomina en Machine Learning al proceso de transformar los datos brutos en datos utilizables en los modelos predictivos. Optimización de Hiperparámetros. Uso de diferentes algoritmos de ML para crear nuevos modelos. 1.3.1.1. Feature Engineering El rendimiento de un modelo se incrementa reduciendo la carga de datos. En la etapa de Feature Engineering se reduce el número de características si es necesario, identificando aquellas que son importantes para la predicción de la variable objetivo y eliminando las irrelevantes. Llevarlo a cabo es posible mediante diversas técnicas entre las que se encuentra el Análisis de Componentes Principales (PCA). 1.3.1.2. Optimizar Hiperparámetros Otra etapa en el proceso de optimizar el rendimiento de los distintos modelos es ajustando sus hiperparámetros de forma que proporcionen una mayor precisión después de su aprendizaje o entrenamiento. Se conoce como hiperparámetros a determinados parámetros “internos” de los distintos algoritmos de Machine Learning; como por ejemplo, en árboles de decisión existen hiperparámetros tales como número de nodos, números de hojas, profundidad máxima de nodos... Los parámetros del modelo son distintos a los hiperparámetros. Para ajustar los hiperparámetros se debe entender el efecto de cada parámetro, ya que estos difieren según CAPÍTULO 1. TÉCNICAS PARA LA PREVISIÓN DE LA DEMANDA 15 1.3. MACHINE LEARNING el algoritmo utilizado. Es conveniente generar y comparar varios modelos con distintas combinaciones de parámetros para así encontrar la mejor combinación de los mismos. Para ello, puede utilizarse la búsqueda en cuadrícula o la búsqueda aleatoria. Al ajustar los hiperparámetros puede que se produzca un sobreajuste y por tanto, se necesite utilizar la validación cruzada; aunque cuando se trata de Big Data, esta etapa es de difícil implementación . 1.3.1.3. Generar modelos alternativos con diferentes algoritmos La predicción suele variar dependiendo del algoritmo utilizado, por lo que optimizar un único modelo no siempre es la mejor solución. Para obtener el modelo de mejor rendimiento, el modelo optimizado se debería probar con otros algoritmos. A continuación se detallan algunos de los algoritmos de ML. Random Forest Formalizado por Breiman, se utiliza tanto para problemas de regresión como de clasificación y se basa en la creación de múltiples árboles de decisión a partir de los datos de partida. Este algoritmo selecciona de manera aleatoria distintos conjuntos de variables, que posteriormente serán utilizados para la construcción de cada árbol individual. Un árbol de decisión consiste en una partición del espacio, definido por las variables predictoras, en distintas regiones. La creación del árbol parte del nodo raiz, formado por todos los datos del conjunto de entrenamiento y estructurados por las distintas variables. Las particiones del árbol se hacen en función del mejor atributo que lo divida y de unos valores, ambos elegidos por el algoritmo. A cada punto del árbol donde se divide el espacio predictor se le conoce como nodo interno. Si éste no se divide a su vez en otros nodos, entonces se está ante un nodo terminal. Los nodos terminales se dan bien porque solo exista un dato o porque no exista diferencia entre valores. A los segmentos de los árboles que conectan los nodos se les denomina ramas. Su finalidad es encontrar aquella partición o caja del espacio predictor que minimice la suma de los residuos. De esta forma, este algoritmo repite el proceso hasta encontrar el mejor predictor y punto de corte. Random Forest, a diferencia de los árboles, busca la mejor característica entre un subconjunto aleatorio de características al dividir un nodo, presenta un sesgo prácticamente nulo y existe una mayor dificultad de que aparezan algún tipo de sobreajuste en sus hiperparámetros, por la gran cantidad de árboles creados. El proceso que sigue Random Forest es el siguiente: 1. Se divide al conjunto de observaciones en conjunto de datos de entrenamiento y conjunto test. 2. Se especifica un número de variables de entrada siendo este menor al original, de manera que para cada nodo, sean seleccionadas aleatoriamente entre todas. La mejor división de estas variables explicativas es usada para ramificar el árbol. Este número de variables especificado se mantiene constante durante todo el proceso de creación del árbol.A diferencia de los árboles de regresión, aquí no hay proceso de poda, cada árbol crece hasta su máxima extensión. 16 CAPÍTULO 1. TÉCNICAS PARA LA PREVISIÓN DE LA DEMANDA 1.3. MACHINE LEARNING 3. Para realizar una predicción, se elige, entre todos los árboles creados, mediante la media de los valores de predicción por todos los árboles del modelo o mediante el nodo más votado. Gradient-boosting Esta técnica de aprendizaje automático también se basa en árboles de decisión, pero a diferencia de bosques aleatorios, los árboles son entrenados de forma secuencial, de forma que cada nuevo árbol trata de mejorar los errores, ajustando los residuos, de los árboles anteriores. Este algoritmo sigue el siguiente procedimiento: 1. Sobre los datos de entrenamiento, se ajusta un primer modelo con el cuál se predice la variable objetivo, calculándose posteriormente los residuos. 2. Se ajusta un nuevo modelo que trata de corregir los errores del modelo anterior intentando predecir sus residuos. 3. De forma conjunta, se calculan los residuos de ambos modelos y se ajusta un tercer modelo que intenta corregir los errores de los modelos anteriores. 4. Esto se repite M veces, de forma que cada nuevo predictor minimice el error. Redes neuronales artificiales Uno de los tipos de algoritmos más comunes del Machine Learning son las Redes Neuronales Artificiales. Las Redes Neuronales Artificiales (RNA) son sistemas informáticos inspirados en el funcionamiento del cerebro humano de forma que lo puedan imitar. Son capaces de automatizar funciones que en un pincipio solo podían ser realizadas por personas, es decir, adoptan el conocimiento y la percepción de estas a través de ejemplos. Las RNA están formadas por un conjunto de unidades o neuronas artificiales, conectadas entre sí, con el fin de transmitirse señales, a través de unos enlaces de comunicación. Cada uno de estos enlaces tiene asociado un peso en los que se encuentra el conocimiento que tiene la RNA acerca de un determinado problema. Estas neuronas reciben unos datos de entrada y generan unos de salida. A cada neurona le llegan múltiples entradas que van siendo filtradas gracias al peso de esta, que pueden variar, y así poder conocer la importancia y el efecto sobre el procesamiento de la neurona. Este algoritmo es un modelo matemático basado en una estructura de grafo dirigido, cuyos nodos son neuronas artificiales. Su finalidad es modelar la variable objetivo como una función no lineal, a través de las variables de entradas, de las que extrae combinaciones lineales de las características más importantes de cada neurona. Las neuronas que componen la red neuronal están organizadas de forma jerárquica formando capas o niveles, de manera que cada neurona de un mismo nivel tiene como entrada de información la misma fuente y como salida el mismo destino. Existen tres tipos de capas: 1. Capa de entrada: recibe información del exterior. 2. Capa oculta: tanto sus entradas como salidas están dentro del sistema, no tienen contacto con el exterior. En estas capas se optimizan los pesos de las variables de entradas, mediante el método de retropropagación, con el fin de obtener el mejor modelo predictivo. 3. Capa de salida: envía respuesta al exterior. CAPÍTULO 1. TÉCNICAS PARA LA PREVISIÓN DE LA DEMANDA 17 1.3. MACHINE LEARNING Para poder aplicar este algoritmo, uno de los procedimientos más impotantes es ajustar los datos a una escala común, es decir, normalizar los datos y, en el caso de variables categóricas, reescalarlos, para así evitar el efecto de la escala de las variables. Esto hará posible la comparación entre los valores predichos y los reales. Posteriormente, se deshace el cambio para representar las predicciones. 1.3.2. Entrenar el modelo Para cada modelo de aprendizaje supervisado los datos se dividen en conjunto de entrenamiento (donde se entrena el modelo, aprendiendo de estos resultados conocidos) y de prueba (donde se prueba y compara la predicción de la variable objetivo con los valores reales), al disponer de la variable histórica etiquetada para entrenar el modelo, es decir, se conoce cada entrada del conjunto de entrenamiento y sus resultados de salida. En el caso de tener datos que solo contienen entradas de la variable objetivo se hablaría de un problema ML no supervisado. Se debe seleccionar el mejor algoritmo de ML, para ello, se utilizan diversos algoritmos para entrenar un número múltiple de modelos que serán comparados, normalmente, mediante el Error Cuadrático Medio (MSE), que mide la diferencia media cuadrática entre los valores estimados y los reales. 1.3.3. Evaluar y seleccionar el modelo Siempre se debe evaluar el modelo que es seleccionado y ajustado previamente al conjunto de entrenamiento. Mediante el conjunto de prueba se estima el rendiemiento del modelo en los datos nuevos, como por ejemplo, haciendo una estimación del error de generalización del modelo, siendo esta la capacidad del modelo para hacer predicciones utilizando nuevos datos. Por último, si el valor obtenido según la métrica utilizada resulta satisfactorio, se tendrá el modelo listo para realizar predicciones sobre valores futuros. 18 CAPÍTULO 1. TÉCNICAS PARA LA PREVISIÓN DE LA DEMANDA Capítulo 2 Aplicación a un caso prático 2.1. Modelización y predicción de ventas En este capítulo se lleva a cabo la aplicación práctica de técnicas estadísticas para datos de conteo y algoritmos de aprendizaje supervisado, con el fin de predecir la demanda de un producto. Para ello se toma como variable dependiente u objetivo la cantidad diaria vendida de éste. 2.1.1. Descripción de los datos La base de datos de la que se dispone contiene la serie temporal diaria de cierto producto de un supermercado de Las Palmas de Gran Canarias, desde el 2 de Enero de 2014 hasta el 26 de Agosto de 2016, por lo que se cuenta con un total de 973 observaciones. Se tienen recogidas, entre otras, distintas variables climatológicas, pero la existencia de un elevado número de valores perdidos en estas sugiere realizar las pruebas sin esas variables, al tener que eliminar observaciones y por consiguiente, perder la estructura temporal de los datos. Por ello, en estas pruebas, la modelización de las ventas se hace en función de estas variables predictoras: Precio diario, día de la semana y mes. Al no tener información sobre el calendario de apertura en festivos de dicho negocio, se ha creado una nueva covariable, DiaLaborable, en base al calendario laboral de 2014-2016, lo que ofrecerá información sobre si influyen o no en las predicciones. En primer lugar, se realiza un breve resumen descriptivo de los datos recogidos en el fichero “9004Item15.RData”. load("9004Item15.RData") datos=df_item_agr_ampliado[,c(1:3,16:17)] #Seleción de variables Se crea la covariable DiaLaborable, de modo que: DiaLaborable =(1si es laboral 0si no es laboral Se ha tomado como referencia, para la creación de dicha variable, el calendario laboral de las Palmas de Gran Canarias de los años 2014, 2015 y 2016. 19 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS ## DiaSemJueves:MesNoviembre 0.22571 0.08866 2.546 0.010907 * ## DiaSemViernes:MesNoviembre 0.05295 0.09400 0.563 0.573185 ## DiaSemSábado:MesNoviembre 0.33346 0.08713 3.827 0.000130 *** ## DiaSemDomingo:MesNoviembre 0.03064 0.07914 0.387 0.698580 ## DiaSemMartes:MesDiciembre 0.21638 0.07827 2.764 0.005702 ** ## DiaSemMiércoles:MesDiciembre 0.32700 0.08053 4.061 4.89e-05 *** ## DiaSemJueves:MesDiciembre 0.68867 0.07840 8.785 < 2e-16 *** ## DiaSemViernes:MesDiciembre 0.50464 0.08441 5.978 2.25e-09 *** ## DiaSemSábado:MesDiciembre 0.53177 0.08294 6.412 1.44e-10 *** ## DiaSemDomingo:MesDiciembre 0.04291 0.07934 0.541 0.588636 ## --- ## Signif. codes: 0 '***'0.001 '**'0.01 '*'0.05 '.'0.1 ' ' 1 ## ## (Dispersion parameter for poisson family taken to be 1) ## ## Null deviance: 51393 on 942 degrees of freedom ## Residual deviance: 29936 on 856 degrees of freedom ## AIC: 34403 ## ## Number of Fisher Scoring iterations: 10 Como se puede ver, no influyen los festivos en el modelo, es decir, para un p-valor de 0.05, la covariable DiaLaborable es no significativa, al igual que algunos coeficientes de la interacción. Al contrario de esta, el modelo identifica claramente a la covariable Carnaval ya que es significativa y por tanto, influye en el modelo. Esta covariable ayuda a explicar el incremento de ventas que se tiene durante los primeros meses del año. Por otro lado, parece que la interacción entre las variables DiaSem yMes es significativa, es decir, la asociación entre ambas variables varía dependiendo de sus niveles. También aparece en la salida las estimaciones de los coeficientes de regresión para cada una de las variables que se han incluido en el modelo de Regresión de Poisson. A nivel interpretativo, se deben tener en cuenta las categorías de referencia para las variables cualitativas: DiaSem: Lunes, Mes: Enero, DiaLaborable: 0, Carnaval: 0 y la interacción Lunes:Enero. Además, se puede evaluar tanto el ajuste del modelo a los datos como la complejidad de éste gracias al AIC, índice que cuánto más pequeño sea, mejor será el ajuste. En este modelo se tiene un AIC de 34403, un valor excesivamente alto, por lo que se puede concluir que no es un buen ajuste. Por último, se obtienen las predicciones mediante la función predict y se contrastan estos resultados tanto gráfica como numéricamente: 26 CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS 0 200 400 600 0 50 100 150 200 250 300 Reg.Poisson−Entrenamiento Valores reales Valores ajustados 0 20 40 60 80 100 15 20 25 30 35 Reg.Poisson−Test Valores reales Valores predichos Figura 2.5: Modelo de Regresión de Poisson. Modelo con interacción. 0 200 400 600 2014 2015 2016 Años Ventas Conjunto Entrenamiento Test Representación sobre los datos reales: datos ajustados y predicción Figura 2.6: Modelo de Regresión de Poisson. Modelo con interacción. ## LBtest RMSE R2 ## Conjunto_Entrenamiento 0.0000000 50.93735 0.3970711 ## Conjunto_test 0.3356464 35.30911 0.1332997 Tanto en la primera como en la segunda gráfica se representan los valores observados respecto a los estimados o ajustados, para los datos del conjunto de entrenamiento y para los del conjunto test, respectivamente. Para que un modelo sea bueno, todos los puntos estarían sobre la línea de regresión ajustada, es decir, a mayor varianza explicada por el modelo de regresión, más cerca estarán dichos puntos de la línea de regresión ajustada. Este modelo explica el 39’71% de la variabilidad, para los datos de entrenamiento; y tan solo el 13’32% para los datos del conjunto test, y como se observa, los datos no se ajustan bien a la recta. Esto puede ser debido a la poca cantidad de valores que se tienen en el conjunto test. CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 27 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS El p-valor obtenido para el conjunto test es de 0.336, que a diferencia del obtenido para el conjunto de entrenamiento, este acepta que los datos se distribuyen de forma independiente, lo que supone la existencia de correlación entre las variables. Además, ha disminuido el valor de RMSE = 35.3091112 aunque la calidad del modelo para replicar los resultados es mucho menor, como ya se ha comentado. La representación sobre los datos reales muestra que ambos conjuntos oscilan sobre el rango de dichos datos. Además, el conjunto de entrenamiento recoge el gran aumento de ventas de 2014/2015. En general, ambos conjuntos imitan el comportamiento de los valores reales, aunque podría mejorar. Se prueba con un modelo sin interacción. Modelo sin interacción Como se tuvo que la covariable DiaLaborable resultaba ser no significativa, se realiza el nuevo modelo sin interacción, sin este predictor. modeloP2=glm(CantidadDiaria ~ PrecioMedioDiario + DiaSem + Mes + Carnaval,family = "poisson",data = datos[indient,]) summary(modeloP2) ## ## Call: ## glm(formula = CantidadDiaria ~ PrecioMedioDiario + DiaSem + Mes + ## Carnaval, family = "poisson", data = datos[indient, ]) ## ## Deviance Residuals: ## Min 1Q Median 3Q Max ## -18.0745 -4.1752 -0.3023 2.4217 31.3442 ## ## Coefficients: ## Estimate Std. Error z value Pr(>|z|) ## (Intercept) 6.52272 0.03154 206.802 < 2e-16 *** ## PrecioMedioDiario -1.30914 0.01880 -69.647 < 2e-16 *** ## DiaSemMartes -0.04243 0.01949 -2.177 0.02950 * ## DiaSemMiércoles -0.08054 0.01959 -4.112 3.93e-05 *** ## DiaSemJueves 0.05434 0.01895 2.867 0.00414 ** ## DiaSemViernes 0.10526 0.01860 5.659 1.52e-08 *** ## DiaSemSábado -0.01874 0.01929 -0.972 0.33120 ## DiaSemDomingo 0.34011 0.01776 19.153 < 2e-16 *** ## MesFebrero -0.59324 0.01938 -30.615 < 2e-16 *** ## MesMarzo -1.15074 0.02245 -51.264 < 2e-16 *** ## MesAbril -0.83501 0.02476 -33.724 < 2e-16 *** ## MesMayo -0.72766 0.02323 -31.322 < 2e-16 *** ## MesJunio -0.71001 0.02290 -31.002 < 2e-16 *** ## MesJulio -0.92425 0.02487 -37.165 < 2e-16 *** ## MesAgosto -1.01227 0.02965 -34.138 < 2e-16 *** ## MesSeptiembre -0.63797 0.02633 -24.229 < 2e-16 *** ## MesOctubre -0.80671 0.02761 -29.217 < 2e-16 *** 28 CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS ## MesNoviembre -0.56771 0.02553 -22.241 < 2e-16 *** ## MesDiciembre -0.29809 0.02315 -12.875 < 2e-16 *** ## CarnavalSiCarnaval 0.05219 0.01883 2.773 0.00556 ** ## --- ## Signif. codes: 0 '***'0.001 '**'0.01 '*'0.05 '.'0.1 ' ' 1 ## ## (Dispersion parameter for poisson family taken to be 1) ## ## Null deviance: 51393 on 942 degrees of freedom ## Residual deviance: 32091 on 923 degrees of freedom ## AIC: 36425 ## ## Number of Fisher Scoring iterations: 6 Al suponer que no existe interacción, se tiene un modelo con todas las variables significativas y un valor del AIC de 36425 que ha aumentado con respecto al anterior, pero al tener anteriormente un modelo de baja calidad, no se tiene en cuenta este aumento. Para la interpretación de los coeficientes, se debe tener en cuenta las categorías de referencia para las variables cualitativas: DiaSem: Lunes, Mes: Enero y Carnaval: 0 A nivel interpretativo, se tiene que un aumento del PrecioMedioDiario produce una disminución del valor esperado del número de ventas. Con respecto a las variables explicativas definidas, solo CarnavalSi, produce un aumento en el valor esperado de dichas ventas. Como antes, se obtienen las predicciones, mediante la función predict y se contrastan estos resultados gráfica y numéricamente: 0 200 400 600 50 100 150 200 250 Reg.Poisson−Entrenamiento Valores reales Valores ajustados 0 20 40 60 80 100 20 22 24 26 28 30 Reg.Poisson−Test Valores reales Valores predichos Figura 2.7: Modelo de Regresión de Poisson. Modelo sin interacción. CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 29 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS 0 200 400 600 2014 2015 2016 Años Ventas Conjunto Entrenamiento Test Representación sobre los datos reales: datos ajustados y predicción Figura 2.8: Modelo de Regresión de Poisson. Modelo sin interacción. ## LBtest RMSE R2 ## Conjunto_Entrenamiento 0.0000000 52.57640 0.3564272 ## Conjunto_test 0.3283883 35.23966 0.3695807 Este modelo obtiene mejores predicciones en comparativa con el anterior, al tener un valor de R2 = 0.3696, para el conjunto test. A pesar de esto, la variabilidad explicada no es demasiado alta y se aprecia, tanto en los ajustes de la recta de regresión como en la representación con los datos reales, que sigue sin mostrar el gran volumen de ventas de 2016, ya que al igual que el modelo anterior, para 2014 las muestra pero más uniformes. Se prueba con un modelo de regresión Binomial negativa. 2.1.3. Modelo de regresión Binomial negativa Ahora se va a modelizar este conjunto de datos de acuerdo a una binomial negativa como miembro de la familia de modelos lineales generalizados. Se va a utilizar la función glm.nb del paquete MASS, mediante el cual se estiman los parámetros de dicho modelo. Las predicciones se van a obtener igual que en el modelo de poisson, se ajustan los datos al conjunto de entrenamiento y posteriormente se observará si el modelo puede llegar a conseguir buenas predicciones en el conjunto test. Las variables predictivas a tener en cuenta, van a seguir siendo las mismas: PrecioMedioDiario,dia,Mes,DiaLaborable y Carnaval library("MASS") modeloBN1=glm.nb(CantidadDiaria~PrecioMedioDiario + DiaSem + Mes + DiaLaborable + Carnaval, data = datos[indient,]) summary(modeloBN1) ## ## Call: ## glm.nb(formula = CantidadDiaria ~ PrecioMedioDiario + DiaSem + ## Mes + DiaLaborable + Carnaval, data = datos[indient, ], init.theta = 0.8182081439, ## link = log) 30 CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS ## ## Deviance Residuals: ## Min 1Q Median 3Q Max ## -2.94233 -0.63317 -0.02656 0.33708 2.22304 ## ## Coefficients: ## Estimate Std. Error z value Pr(>|z|) ## (Intercept) -2.280e+01 5.571e+04 0.000 0.999673 ## PrecioMedioDiario -1.152e+00 1.875e-01 -6.145 8.01e-10 *** ## DiaSemMartes -2.651e-02 1.381e-01 -0.192 0.847823 ## DiaSemMiércoles 3.949e-02 1.376e-01 0.287 0.774046 ## DiaSemJueves 1.867e-01 1.373e-01 1.360 0.173823 ## DiaSemViernes 3.073e-01 1.374e-01 2.236 0.025378 * ## DiaSemSábado 1.456e-01 1.371e-01 1.062 0.288094 ## DiaSemDomingo 4.504e-01 1.367e-01 3.294 0.000989 *** ## MesFebrero -2.362e-01 2.162e-01 -1.093 0.274600 ## MesMarzo -7.025e-01 1.669e-01 -4.210 2.56e-05 *** ## MesAbril -7.492e-01 1.731e-01 -4.329 1.50e-05 *** ## MesMayo -6.510e-01 1.705e-01 -3.819 0.000134 *** ## MesJunio -5.830e-01 1.711e-01 -3.407 0.000657 *** ## MesJulio -8.519e-01 1.705e-01 -4.997 5.83e-07 *** ## MesAgosto -9.291e-01 1.887e-01 -4.923 8.51e-07 *** ## MesSeptiembre -5.398e-01 1.908e-01 -2.829 0.004666 ** ## MesOctubre -7.300e-01 1.891e-01 -3.860 0.000113 *** ## MesNoviembre -4.426e-01 1.915e-01 -2.311 0.020816 * ## MesDiciembre -1.424e-01 1.904e-01 -0.748 0.454619 ## DiaLaborableSiLaborable 2.883e+01 5.571e+04 0.001 0.999587 ## CarnavalSiCarnaval -5.468e-02 2.163e-01 -0.253 0.800439 ## --- ## Signif. codes: 0 '***'0.001 '**'0.01 '*'0.05 '.'0.1 ' ' 1 ## ## (Dispersion parameter for Negative Binomial(0.8182) family taken to be 1) ## ## Null deviance: 1468.0 on 942 degrees of freedom ## Residual deviance: 1137.1 on 922 degrees of freedom ## AIC: 8623.1 ## ## Number of Fisher Scoring iterations: 1 ## ## ## Theta: 0.8182 ## Std. Err.: 0.0396 ## ## 2 x log-likelihood: -8579.1370 Además de la estimación de los parámetros, esta función ofrece una estimación previa del parámetro de dispersión θ mediante el método de máxima verosimilitud, pero es importante saber que el valor de ˆ θ no es 0’8182 sino el de su inversa, es decir, 1.222. También ofrece, al igual que el modelo de regresión de Poisson, estadísticos adicionales CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 31 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS como el estadístico desviación o el criterio AIC. Según este modelo, se pueden suponer nulos los coeficientes de regresión para las variables DíaLaboral yCarnaval al no ser significativos. Esto se observa en el valor que toma cada pvalor, 0.999 y 0.800 respectivamente. Luego, ni los días laborables ni el carnaval van a influir en la cantidad de ventas y por tanto, se pueden eliminar del modelo. Para la interpretación de los coeficientes, al igual que en el modelo de Poisson, se deben tener en cuenta las categorías de referencia para las variables cualitativas: DiaSem: Lunes, Mes: Enero, DiaLaborable: 0 y Carnaval: 0. Modelo sin DiaLaborable ni Carnaval modeloBN2=glm.nb(CantidadDiaria~PrecioMedioDiario + DiaSem + Mes, data = datos[indient,]) summary(modeloBN2) ## ## Call: ## glm.nb(formula = CantidadDiaria ~ PrecioMedioDiario + DiaSem + ## Mes, data = datos[indient, ], init.theta = 0.778229711, link = log) ## ## Deviance Residuals: ## Min 1Q Median 3Q Max ## -2.87535 -0.64825 -0.02644 0.33063 2.24990 ## ## Coefficients: ## Estimate Std. Error z value Pr(>|z|) ## (Intercept) 5.98773 0.33463 17.893 < 2e-16 *** ## PrecioMedioDiario -1.15653 0.18075 -6.398 1.57e-10 *** ## DiaSemMartes -0.03453 0.14022 -0.246 0.805496 ## DiaSemMiércoles 0.04721 0.14016 0.337 0.736263 ## DiaSemJueves 0.19447 0.13984 1.391 0.164326 ## DiaSemViernes 0.30517 0.13974 2.184 0.028978 * ## DiaSemSábado 0.15973 0.13980 1.143 0.253218 ## DiaSemDomingo 0.46365 0.13956 3.322 0.000893 *** ## MesFebrero -0.23869 0.19314 -1.236 0.216519 ## MesMarzo -0.67477 0.16859 -4.002 6.27e-05 *** ## MesAbril -0.72252 0.17504 -4.128 3.67e-05 *** ## MesMayo -0.61300 0.17288 -3.546 0.000391 *** ## MesJunio -0.55587 0.17319 -3.210 0.001329 ** ## MesJulio -0.81434 0.17290 -4.710 2.48e-06 *** ## MesAgosto -0.89101 0.19174 -4.647 3.37e-06 *** ## MesSeptiembre -0.50140 0.19390 -2.586 0.009712 ** ## MesOctubre -0.69236 0.19216 -3.603 0.000315 *** ## MesNoviembre -0.42178 0.19374 -2.177 0.029478 * ## MesDiciembre -0.13615 0.19166 -0.710 0.477499 ## --- ## Signif. codes: 0 '***'0.001 '**'0.01 '*'0.05 '.'0.1 ' ' 1 32 CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS ## ## (Dispersion parameter for Negative Binomial(0.7782) family taken to be 1) ## ## Null deviance: 1407.4 on 942 degrees of freedom ## Residual deviance: 1147.8 on 924 degrees of freedom ## AIC: 8676.2 ## ## Number of Fisher Scoring iterations: 1 ## ## ## Theta: 0.7782 ## Std. Err.: 0.0375 ## ## 2 x log-likelihood: -8636.1880 En el modelo anterior, se tenía un AIC = 8623.1. En este modelo, el valor del AIC se ha incrementado, aunque mínimamente, por lo que su complejidad no se ha visto apenas afectada. En este modelo, las categorías de referencia a tener en cuenta para las variables cualitativas son: DiaSem: Lunes y Mes: Enero. A nivel interpretativo, el aumento del PrecioMedioDiario produce un descenso del número esperado de ventas. En función a las variables dummys solo DiaSemViernes y DiaSemDomingo aumentan el valor esperado de las ventas, aunque en menor medida que DiaSemLunes. Para los demás días se consideran nulos sus coeficientes, al igual que MesFebrero yMesDiciembre. El resto de meses producen un descenso del número esperado de ventas. Como se realizó antes, el valor esperado del parámetro de dispersión θ es 1/0.7782 = 1.2850. El estadístico desviación D , bajo las hipótesis del modelo correcto, sigue una distribución chi-cuadrado con 924 grados de libertad y un valor de 1147’8. Para detectar sobredispersión en los datos se evalúa la siguiente relación: D gl =1147.8 924 = 1.242 >1 lo que indica sobredispersión en los datos. Se procede a realizar el ajuste sobre el conjunto de entrenamiento y la predicción sobre el conjunto test, al igual que en el modelo de Poisson, mediante la función predict. También se pueden contrastar los resultados numéricamente: CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 33 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS 0 200 400 600 50 100 150 200 Reg.BN−Entrenamiento Valores reales Valores ajustados 0 20 40 60 80 100 18 20 22 24 26 28 Reg.BN−Test Valores reales Valores predichos Figura 2.9: Modelo de regresión Binomial negativa. Modelo sin *DiaLaborable* ni *Car- naval*. 0 200 400 600 2014 2015 2016 Años Ventas Conjunto Entrenamiento Test Representación sobre los datos reales: datos ajustados y predicción Figura 2.10: Modelo de regresión Binomial negativa. Modelo sin *DiaLaborable* ni *Carnaval*. ## LBtest RMSE R2 ## Conjunto_Entrenamiento 0.0000000 54.90988 0.2990190 ## Conjunto_test 0.2991143 35.21979 0.4026964 El modelo de regresión Binomial negativa, para los datos del conjunto de entrenamiento, explica tan solo el 29.90% de la variabilidad, mientras que para el cojunto test, explica el 40.27%, además de haber disminuido la cantidad de error entre los dos conjunto de datos, reales y conjunto test, 35.22. Aún así, en la última gráfica se observa que los datos del conjunto test apenas muestran el comportamiento real. Esto, como se comentó en el modelo de Poisson, puede ser porque este conjuto tan solo está formado por 30 observaciones. 34 CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS 2.1.4. Modelo inflado con ceros y modelo en dos partes Para tratar el tema de la abundancia de valores nulos, es decir, para intentar explicar la causa de las no ventas, se van a utilizar los predictores PrecioMedioDiario,DiaSem, Mes yCarnaval. Inicialmente se van a suponer todos los ceros iguales, por tanto, se va a utilizar un modelo en dos partes (hurdle), mediante el cual se va a estimar la probabilidad de no ser cero. Para ello, se utiliza la libreria pscl y es necesario introducir dos fórmulas, la primera, que corresponde al modelo lineal generalizado que se vaya a utilizar y la segunda al Binomial. En primer lugar se utiliza el modelo de regresión de Poisson: library(pscl) mhurdleP=hurdle(CantidadDiaria ~ PrecioMedioDiario + DiaSem + Mes + Carnaval |PrecioMedioDiario + DiaSem + Mes + Carnaval , dist="poisson", data = datos) summary(mhurdleP) ## ## Call: ## hurdle(formula = CantidadDiaria ~ PrecioMedioDiario + DiaSem + Mes + ## Carnaval | PrecioMedioDiario + DiaSem + Mes + Carnaval, data = datos, ## dist = "poisson") ## ## Pearson residuals: ## Min 1Q Median 3Q Max ## -5.1658 -1.3273 -0.1041 1.1194 9.0045 ## ## Count model coefficients (truncated poisson with log link): ## Estimate Std. Error z value Pr(>|z|) ## (Intercept) 7.00050 0.03146 222.495 < 2e-16 *** ## PrecioMedioDiario -1.55067 0.01979 -78.374 < 2e-16 *** ## DiaSemMartes -0.04329 0.01935 -2.237 0.025298 * ## DiaSemMiércoles -0.16686 0.01925 -8.669 < 2e-16 *** ## DiaSemJueves -0.06175 0.01876 -3.291 0.000999 *** ## DiaSemViernes -0.07261 0.01837 -3.952 7.74e-05 *** ## DiaSemSábado -0.19539 0.01905 -10.257 < 2e-16 *** ## DiaSemDomingo 0.23020 0.01748 13.167 < 2e-16 *** ## MesFebrero -0.44019 0.01997 -22.046 < 2e-16 *** ## MesMarzo -0.51110 0.02419 -21.132 < 2e-16 *** ## MesAbril -0.57990 0.02564 -22.621 < 2e-16 *** ## MesMayo -0.53541 0.02409 -22.229 < 2e-16 *** ## MesJunio -0.58014 0.02384 -24.339 < 2e-16 *** ## MesJulio -0.71505 0.02574 -27.782 < 2e-16 *** ## MesAgosto -0.50429 0.02436 -20.703 < 2e-16 *** ## MesSeptiembre -0.50608 0.02713 -18.652 < 2e-16 *** ## MesOctubre -0.58075 0.02841 -20.441 < 2e-16 *** ## MesNoviembre -0.38738 0.02636 -14.693 < 2e-16 *** CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 35 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS Esta función modeliza la serie temporal a través una función lineal de un conjunto de variables predictoras y de un término error, ajustado de forma automática mediante un modelo ARIMA apropiado. Para poder representar las componentes estacionales, ha sido necesario utilizar la función fourier de R que, mediante desarrollos trigonométricos ha facilitado la obtención de variables que respresenten estas componentes estacionales. library(forecast) Para aplicar el modelo de series temporales se eliminan las variables dummys. Para ello, se crea un nuevo conjunto de datos sin dichas variables. datos2=datos[,c(1:5)] datos2$DiaSem=as.numeric(datos2$DiaSem) datos2$Mes=as.numeric(datos2$Mes) La cantidad diaria de ventas de cierto producto se tiene recogida en distintos períodos de tiempo luego, en primer lugar, se va a estudiar la perioricidad mediante un análisis espectral. Pero antes de proceder a dicho análisis, se va a representar la media de ventas respecto a distintos períodos de tiempo. mfecha=format(datos2$Fecha," %m") afecha=format(datos2$Fecha," %Y") dfecha=format(datos2$Fecha," %d")#DIA DEL MES 2 4 6 8 10 12 40 60 80 100 Mes Media de ventas Figura 2.11: MST. Media de ventas respecto al mes Ya se comentó la gran abundancia de ventas en enero(1) y febrero(2) ocasionada por el Carnaval. 42 CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS 1234567 40 45 50 55 Día de la semana Media de ventas Figura 2.12: MST. Media de ventas respecto al día de la semana Con una clara diferencia, se aprecia que los domingos(7) se da una media de ventas superior al resto de la semana, seguida del viernes(5). Ya anteriormente se supuso que esto pordría ser porque se dispone de mayor tiempo libre para ir a comprar. 0 5 10 15 20 25 30 30 40 50 60 70 Día del mes Media de ventas Figura 2.13: MST. Media de ventas respecto al día del mes Se observa que, tanto a primero como a último de mes es cuando más se vende. Esto puede ser por el cobro de los salarios. Para el estudio de la periodicidad, se va a realizar un análisis espectral utilizando spectrum, en el que se va a respresentar el periodograma sin procesar tanto por frecuencia como período para la variable objetivo, CantidadDiaria. Esta función utiliza la Transformada rápida de Fourier. Periodograma por frecuencia CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 43 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS espectral<- spectrum(datos2$CantidadDiaria) 0.0 0.1 0.2 0.3 0.4 0.5 1 100 10000 frequency spectrum Series: x Raw Periodogram bandwidth = 0.000289 Figura 2.14: MST. Periodograma por frecuencia La (Figura 2.13) representa el periodoframa por frecuencia de la variable analizada, donde se aprecian la existencia de distintos picos, siendo éstos las frecuencias más características de la serie. Periodograma por periodo periodo<- 1/espectral$freq 0 200 400 600 800 1000 0 20000 40000 60000 80000 Periodograma periodo espectral$spec Figura 2.15: MST. Periodograma por periodo El pico más pronunciado se da en un valor aproximado a 365, teniéndose por tanto la periodicidad anual. 44 CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS Se puede considerar la periodicidad dentro de cada mes o no. Por ello, se ajustan a los datos dos tipos de modelos. Periodicidad dentro de cada mes Se debe calcular dicha periodicidad, por lo que se calcula la media de días que tiene un mes, que será incluida al crear la serie temporal: (31+28.25+31+30+31+30+31+31+30+31+30+31)/12 ## [1] 30.4375 Al considerar varias componentes estacionales, se crea la serie temporal mediante msts, donde se incluyen los períodos semanales, mensuales y anuales. y1=msts(datos2$CantidadDiaria[indient], seasonal.periods=c(7,30.44,365.25), ts.frequency=1) Se realiza la transformación de fourier a los datos, ya que esta proporciona funciones que modelizan y simplifican modelos matemáticos. z<- fourier(y1, K=c(2,3,5)) zf <- fourier(y1, K=c(2,3,5), h=nt) xregent=data.frame(z,datos2[indient,c(3)]) xregtest=data.frame(zf,datos2[inditest,c(3)]) El conjunto de datos presenta valores 0, esto ocasiona problemas a la hora de predecir, para ello se le suma una constante a la variable objetivo, eliminando este problema. arima1=auto.arima(y1+10,seasonal=FALSE) summary(arima1) ## Series: y1 + 10 ## ARIMA(1,1,1) ## ## Coefficients: ## ar1 ma1 ## 0.3433 -0.6774 ## s.e. 0.0948 0.0781 ## ## sigma^2 estimated as 1591: log likelihood=-4807.93 ## AIC=9621.85 AICc=9621.88 BIC=9636.4 ## ## Training set error measures: ## ME RMSE MAE MPE MAPE MASE ## Training set -0.1415941 39.82024 21.64648 -35.45436 62.94914 0.9497875 ## ACF1 ## Training set -0.02247888 Se ha ajustado un ARIMA (1,1,1) Para la representación se debe eliminar la constante anteriormente sumada. CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 45 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS 0 200 400 600 0 100 200 300 400 500 600 auto.arima I−Entrenamiento Valores reales Valores ajustados 0 20 40 60 80 100 18 20 22 24 26 auto.arima I−Test Valores reales Valores predichos Figura 2.16: Modelo de Series temporales. Modelo con periodicidad mensual. 0 200 400 600 2014 2015 2016 Años Ventas Conjunto Entrenamiento Test Representación sobre los datos reales: datos ajustados y predicción Figura 2.17: Modelo de Series temporales. Modelo con periodicidad mensual. ## LBtest RMSE R2 ## Conjunto_Entrenamiento 0.5230179 40.89349 0.6392678 ## Conjunto_test 0.2938408 34.52101 0.0538574 A pesar de que para el conjunto de entrenamiento parece que este modelo, por ahora, es el que mejor ajusta los datos, teniéndose explicada el 63’93% de la variabilidad y aceptando la hipótesis de la independencia de los datos, para el conjunto test solo explica un 5%. Ésto se debe a que se está produciendo un sobreajuste, reflejado de forma muy clara en la última gráfica, que aunque se observa que este modelo sí que recoge exitosamente las ventas de los meses enero/febrero, realiza una mala predicción. Sin considerar periodicidad dentro de cada mes 46 CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS Se incluyen los períodos semanales y anuales. y2=msts(datos2$CantidadDiaria[indient], seasonal.periods=c(7,365.25), ts.frequency=1) La transformada de fourier para este modelo: z<- fourier(y2, K=c(2,5)) zf <- fourier(y2, K=c(2,5), h=nt) xregent=data.frame(z,datos2[indient,c(3)]) xregtest=data.frame(zf,datos2[inditest,c(3)]) se ajusta mediente auto.arima: arima2=auto.arima(y2+10,seasonal=FALSE,xreg=as.matrix(xregent)) summary(arima2) ## Series: y2 + 10 ## Regression with ARIMA(0,1,1) errors ## ## Coefficients: ## ma1 drift S1.7 C1.7 S2.7 C2.7 S1.365 C1.365 ## -0.3907 -0.0254 0.7324 -5.1615 4.2652 0.4382 -1.4054 16.1339 ## s.e. 0.0349 0.7887 1.6897 1.6895 1.3228 1.3226 63.9593 65.7805 ## S2.365 C2.365 S3.365 C3.365 S4.365 C4.365 S5.365 C5.365 ## 4.2733 11.6838 12.9786 6.3455 12.0460 -3.7527 10.7095 -12.5468 ## s.e. 32.2598 32.6610 21.6837 21.6525 16.2992 16.2237 12.9295 12.9275 ## datos2.indient..c.3.. ## -61.8675 ## s.e. 12.1493 ## ## sigma^2 estimated as 1547: log likelihood=-4787.3 ## AIC=9610.6 AICc=9611.34 BIC=9697.86 ## ## Training set error measures: ## ME RMSE MAE MPE MAPE MASE ## Training set -0.02376879 38.95864 21.67419 -31.0777 65.91478 0.9510033 ## ACF1 ## Training set 0.02684946 En este modelo, se obtiene un ARIMA(0,1,1), no existe la parte aurorregresiva. De nuevo, se elima la constante sumada y se obtienen las predicciones: CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 47 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS 0 200 400 600 0 100 200 300 400 500 600 auto.arima II−Entrenamiento Valores reales Valores ajustados 0 20 40 60 80 100 20 30 40 50 auto.arima II−Test Valores reales Valores predichos Figura 2.18: Modelo de Series temporales. Modelo sin periodicidad mensual. 0 200 400 600 2014 2015 2016 Años Ventas Conjunto Entrenamiento Test Representación sobre los datos reales: datos ajustados y predicción Figura 2.19: Modelo de Series temporales. Modelo sin periodicidad mensual. ## LBtest RMSE R2 ## Conjunto_Entrenamiento 0.4856349 39.53581 0.6623559 ## Conjunto_test 0.2532062 29.75287 0.1311991 Se vuelve a tener un modelo el cual ajusta los datos de entrenamiento demasiado bien y por tanto, ocasiona un sobreajuste. 2.1.6. Modelo ramdonForest Para la implementación del algoritmo árboles aleatorios se va a utilizar la librería randomForest que aplica el algoritmo de Breiman. Para la obtención del modelo, no se va a fijar el número de árboles y se quiere evaluar la importancia de los predictores. 48 CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS library(randomForest) mRF1=randomForest(CantidadDiaria ~ PrecioMedioDiario + DiaSem + Mes, importance=TRUE, data = datos[indient,]) mRF1 ## ## Call: ## randomForest(formula = CantidadDiaria ~ PrecioMedioDiario + DiaSem + Mes, data = datos[indient, ], importance = TRUE) ## Type of random forest: regression ## Number of trees: 500 ## No. of variables tried at each split: 1 ## ## Mean of squared residuals: 2741.096 ## % Var explained: 35.98 importance(mRF1) ## %IncMSE IncNodePurity ## PrecioMedioDiario 31.11697 917467.8 ## DiaSem -12.44184 213683.9 ## Mes 32.00179 774464.0 Se han creado 500 árboles de regresión y se tiene que el número de variables seleccionadas aleatoriamente es 1. El modelo seleccionado explica el 37 % de la variabilidad de los datos. Además, la variable DiaSem es la variable menos importante. Las predicciones se van a realizar de la misma forma que en los casos anteriores. 0 200 400 600 0 50 100 150 200 250 Random Forest−Entrenamiento Valores reales Valores ajustados 0 20 40 60 80 100 15 20 25 30 35 Random Forest−Test Valores reales Valores predichos Figura 2.20: Algoritmo de RamdonForest. CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 49 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS 0 200 400 600 2014 2015 2016 Años Ventas Conjunto Entrenamiento Test Representación sobre los datos reales: datos ajustados y predicción Figura 2.21: Algoritmo de RamdonForest. ## LBtest RMSE R2 ## Conjunto_Entrenamiento 0.0000000 52.35513 0.3649620 ## Conjunto_test 0.3187755 32.69506 0.2935005 Mediante este algoritmo, se obtiene un peor comportamiento en comparativa con los modelos estudiados anteriormente. Aún así, los valores predichos oscilan sobre el rango de los observados. 2.1.7. Modelo de Gradient Boosting Otra de las técnicas basadas en árboles es Gradient Boosting. Para su aplicación se utiliza la librería gbm. Por defecto, va a ajustar 100 árboles (iteraciones). library(gbm) modelogbm=gbm(CantidadDiaria ~ PrecioMedioDiario + DiaSem + Mes + Carnaval , data = datos[indient,]) summary(modelogbm) 50 CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS DiaSem Mes Relative influence 0 10 20 30 40 50 60 70 ## var rel.inf ## PrecioMedioDiario PrecioMedioDiario 71.481446 ## Mes Mes 19.579801 ## Carnaval Carnaval 6.071268 ## DiaSem DiaSem 2.867485 Con clara diferencia, el predictor más influyente es el precio del producto. 0 200 400 600 50 100 150 200 GBM−Entrenamiento Valores reales Valores ajustados 0 20 40 60 80 100 22 24 26 28 30 32 34 GBM−Test Valores reales Valores predichos Figura 2.22: Algoritmo de Gradient Boosting. CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 51 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS Dias Poisson_I Poisson BN ST_mes ST GB RF RNA Sábado 36 23 25 26 23 28 35 47 Domingo 24 20 22 26 26 23 25 32 Lunes 27 30 29 26 32 34 35 27 Martes 14 21 18 26 27 23 16 35 De acuerdo a los valores pronosticados, en general, el modelo que mayor cantidad de ventas estima es el de Red neuronal, el cual predice que para esa semana, la cantidad de árticulos vendidos por día estarían entre 13 y 51. Ahora se estima la cantidad media según todos los modelos, teniéndose: MediaObservada 39 MediaStock Poisson_I 22 Poisson 22 BN 22 ST_mes 24 ST 23 GB 25 RF 25 RNA 35 Por un lado, se observa que todas las técnicas estadísticas estiman para dicha semana, aproximadamente, la misma cantidad de productos vendidos, entre 22 y 24. Por otro lado, los algoritmos de aprendizaje supervizado prevén una mayor cantidad de ventas, entre 25 y 31, siendo esta última, la cantidad estimada por RNA, como ya se ha comentado. Por tanto, comparando con la media de artículos vendidos en esa semana (39), se aconseja el modelo RNA. Por último, se van a predecir los valores para la semana de la que no se obtienen datos, que corresponde a la primera semana de septiembre de 2016, es decir, desde 01/09/2016 (jueves) al 07/09/2016 (miércoles). Dicha predicción se realiza mediante todas las técnicas utilizadas anteriormente. 58 CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS Tabla 2.5: Cantidad predicha según el precio medio Dia Poisson_I Poisson BN ST_mes ST GB RF RNA Jueves 21 27 29 17 6 14 28 21 Viernes 25 29 32 23 10 19 31 31 Sábado 36 25 28 25 16 14 30 27 Domingo 43 36 37 26 15 25 34 45 Lunes 21 26 23 26 18 14 23 14 Martes 26 25 23 26 24 12 25 22 Miércoles 20 24 25 26 19 14 26 16 Tabla 2.6: Cantidad predicha según el precio máximo Dia Poisson_I Poisson BN ST_mes ST GB RF RNA Jueves 22 29 30 17 9 14 28 21 Viernes 27 31 34 23 13 19 31 31 Sábado 38 27 29 25 19 14 30 27 Domingo 46 39 40 26 18 25 33 45 Lunes 23 27 25 26 21 14 23 14 Martes 28 26 24 26 28 12 24 22 Miércoles 21 25 26 26 22 14 26 16 Tabla 2.7: Cantidad predicha según el precio mínimo Dia Poisson_I Poisson BN ST_mes ST GB RF RNA Jueves 152 199 166 17 99 43 33 373 Viernes 183 210 185 23 103 48 29 266 Sábado 260 185 160 25 110 43 26 191 Domingo 314 265 217 26 108 54 37 482 Lunes 155 189 136 26 111 43 24 495 Martes 193 181 132 26 118 41 20 460 Miércoles 146 174 143 26 113 43 19 372 Tabla 2.8: Cantidad predicha según la mediana de los precios Dia Poisson_I Poisson BN ST_mes ST GB RF RNA Jueves 25 32 33 17 14 30 29 29 Viernes 30 34 37 23 18 35 33 38 Sábado 42 30 32 25 24 30 38 33 Domingo 51 43 44 26 23 40 48 53 Lunes 25 31 27 26 26 30 27 25 Martes 31 29 26 26 32 28 26 30 Miércoles 24 28 29 26 27 30 26 24 CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO 59 2.1. MODELIZACIÓN Y PREDICCIÓN DE VENTAS Se observa como el precio del producto influye en gran medida en la venta de éste. Por ejemplo, la cantidad vendida cuando el precio es mínimo es casi seis veces mayor a cuando el precio es máximo. En general, todos predicen cantidades similares de ventas, excepto, como ya se ha comentado, cuando el precio es mínimo, que las ventas se incrementan de manera razonable. Como posibles líneas futuras, están el estudio de las ventas cruzadas de productos similares, el estudio de impacto de promociones que afecta a conjuntos de productos y la influencia de los factores meteorológicos. 60 CAPÍTULO 2. APLICACIÓN A UN CASO PRÁTICO Agradecimientos Finalmente, quiero agradecer a todos los profesores que me han acompañado durante mi formación en estos años de aprendizaje y muy especialmente a José Luis Pino, mi tutor en esta última etapa, por su dedicación, atención y esfuerzo. También a mis padres, por creer en mí y apoyarme en todo momento. He aprendido este último año que mezclar Trabajo de Fin de Grado y pandemia no es fácil. Y por supuesto, a mis compañeras y amigas, esas que he conocido gracias a la estadística. Sin duda, es lo mejor que me llevo de estos cuatro maravillosos años, mi equipo. 61 Apéndice A Apéndice: Exploración y manipulación de datos A.1. Lectura y resumen de datos load("9004Item15.RData") summary(df_item_agr_ampliado) ## Fecha CantidadDiaria PrecioMedioDiario Lugar ## Min. :2014-01-02 Min. : 0.0 Min. :0.490 Length:973 ## 1st Qu.:2014-09-02 1st Qu.: 14.0 1st Qu.:1.870 Class :character ## Median :2015-05-03 Median : 31.0 Median :1.870 Mode :character ## Mean :2015-05-03 Mean : 42.9 Mean :1.774 ## 3rd Qu.:2016-01-01 3rd Qu.: 48.0 3rd Qu.:1.870 ## Max. :2016-08-31 Max. :735.0 Max. :1.950 ## ## Provincia TMax TMin TMed ## Length:973 Min. :17.40 Min. :12.30 Min. :15.20 ## Class :character 1st Qu.:20.70 1st Qu.:16.90 1st Qu.:18.80 ## Mode :character Median :22.80 Median :18.70 Median :20.70 ## Mean :23.05 Mean :19.07 Mean :21.07 ## 3rd Qu.:25.00 3rd Qu.:21.30 3rd Qu.:23.10 ## Max. :31.80 Max. :25.20 Max. :28.20 ## NA's :209 NA's :209 NA's :209 ## Racha VMax Pre24 Pre00_06 ## Min. :12.00 Min. : 6.00 Min. : 0.0000 Min. :0.00000 ## 1st Qu.:24.00 1st Qu.:12.00 1st Qu.: 0.0000 1st Qu.:0.00000 ## Median :29.00 Median :14.00 Median : 0.0000 Median :0.00000 ## Mean :29.82 Mean :14.55 Mean : 0.4471 Mean :0.07313 ## 3rd Qu.:34.00 3rd Qu.:17.00 3rd Qu.: 0.0000 3rd Qu.:0.00000 ## Max. :73.00 Max. :29.00 Max. :39.9000 Max. :9.50000 ## NA's :212 NA's :212 NA's :226 NA's :184 ## Pre06_12 Pre12_18 Pre18_24 diasem ## Min. : 0.0000 Min. : 0.000 Min. : 0.0000 Min. :1 ## 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.:2 63 A.2. MANIPULACIÓN ## Median : 0.0000 Median : 0.000 Median : 0.0000 Median :4 ## Mean : 0.1489 Mean : 0.116 Mean : 0.1099 Mean :4 ## 3rd Qu.: 0.0000 3rd Qu.: 0.000 3rd Qu.: 0.0000 3rd Qu.:6 ## Max. :36.9000 Max. :11.800 Max. :30.4000 Max. :7 ## NA's :172 NA's :171 NA's :183 ## mes ## Min. : 1.000 ## 1st Qu.: 3.000 ## Median : 6.000 ## Mean : 6.028 ## 3rd Qu.: 9.000 ## Max. :12.000 ## table(df_item_agr_ampliado$Lugar) ## ## Las Palmas de Gran Canaria, Pl. de la Feria ## 839 table(df_item_agr_ampliado$Provincia) ## ## Las Palmas ## 839 A.2. Manipulación # Reenombrar columnas colnames(datos)=c("Fecha","CantidadDiaria","PrecioMedioDiario", "DiaSem","Mes","DiaLaborable","Carnaval") # Reenombrar y reordenar DiaSem datos$DiaSem=factor(datos$DiaSem) levels(datos$DiaSem)=c("Domingo","Lunes","Martes","Miércoles", "Jueves","Viernes","Sábado") levels(datos$DiaSem) datos$DiaSem=factor( datos$DiaSem, levels = levels( datos$DiaSem )[ c( 2,3,4,5,6,7,1)]) levels( datos$DiaSem) # Reenombrar y reordenar Mes datos$Mes=factor(datos$Mes) levels(datos$Mes)=c("Enero","Febrero","Marzo","Abril", "Mayo","Junio","Julio","Agosto", "Septiembre","Octubre","Noviembre","Diciembre") # Reenombrar y reordenar DiaLaborable 64 APÉNDICE A. APÉNDICE: EXPLORACIÓN Y MANIPULACIÓN DE DATOS A.3. GRÁFICOS datos$DiaLaborable=factor(datos$DiaLaborable) levels(datos$DiaLaborable) levels(datos$DiaLaborable)=c("NoLaborable","SiLaborable") # # Reenombrar y reordenar Carnaval datos$Carnaval=factor(datos$Carnaval) levels(datos$Carnaval) levels(datos$Carnaval)=c("NoCarnaval","SiCarnaval") A.3. Gráficos ggplot(data=datos, aes(CantidadDiaria, DiaSem,fill=DiaSem)) + geom_boxplot()+ labs(x= "Ventas",y = "Días de la semana") + theme(axis.title = element_text(face="italic",colour="black", size=rel(1.5))) + theme_minimal() ggplot(datos, aes(CantidadDiaria, Mes, fill=Mes)) + geom_boxplot() + labs(x= "Ventas",y = "Meses") + theme(axis.title = element_text(face="italic",colour="black", size=rel(1.5))) + theme_minimal() ggplot(datos, aes(CantidadDiaria, Carnaval, fill=Carnaval)) + geom_boxplot() + labs(x= "Ventas",y = "Carnaval") + theme(axis.title = element_text(face="italic",colour="black", size=rel(1.5))) + theme_minimal() plot(by(datos2$CantidadDiaria,datos2$Mes,mean),type="h",lwd=3, xlab="Mes",ylab="Media de ventas"); grid() plot(by(datos2$CantidadDiaria,datos2$DiaSem,mean),type="h",lwd=3, xlab="Día de la semana",ylab="Media de ventas"); grid() plot(by(datos2$CantidadDiaria,dfecha,mean),type="h",lwd=3, xlab="Día de la semana",ylab="Media de ventas"); grid() APÉNDICE A. APÉNDICE: EXPLORACIÓN Y MANIPULACIÓN DE DATOS 65 Apéndice B Apéndice: Análisis y predicción B.1. Análisis espectral espectral<- spectrum(datos2$CantidadDiaria) plot(periodo,espectral$spec,main="Periodograma",type="l",col="red") B.2. Red neuronal library(NeuralNetTools) par(mar = numeric(4), family = 'serif') plotnet(modelorna, alpha = 0.6,cex_val=1,circle_cex=3,pad_x=0.7) B.3. Función para predicción library(ggplot2) library(gridExtra) Ajuste<- function(y1,pred1,y2,pred2,titulo1,titulo2) { residuos1=y1-pred1 residuos2=y2-pred2 Predic=c(pred1,pred2) Fecha=datos$Fecha Conjunto=c(rep("Entrenamiento",943),rep("Test",30)) datospred=data.frame(Fecha,datos["CantidadDiaria"],Predic,Conjunto) par(mfrow=c(1,2)) plot1=plot(y1,pred1,main=titulo1, xlab="Valores reales", ylab="Valores ajustados") abline(a=0,b=1,col="blue",lwd=2) grid() plot2=plot(y2,pred2,main=titulo2,xlab="Valores reales", 67 Bibliografía Khakpour, A. (2020). Data Science for Decision Support: Using Machine Learning and Big data in Sales Forecasting for Production and Retail. Master’s thesis. López, E., & Ruiz, M. (2011). Análisis de datos con el modelo lineal generalizado. una aplicación con r. Revista española de pedagogía, (pp. 59–80). Luque, P. L. (2017). Escribir un Trabajo Fin de Estudios con R Markdown. Luque, P. L. (2019). Cómo crear Tablas de información en R Markdown. McCullagh, P., & Nelder, J. A. (1989). Generalized Linear Models. London:Chapman and Hall. McCullagh, P., & Nelder, J. A. (2019). Generalized linear models. Routledge. Pichardo, J. M. (2020). Apuntes asignatura estadística computacional II. Python and R tutorials (2019). neuralnet: Train and Test Neural Networks Using R. datascienceplus. R Core Team (2016). R: A Language and Environment for Statistical Computing. Vienna, Austria. URL https://www.R-project.org/ Román, V. (2019). Introducción al Machine Learning: Una Guía Desde Cero. Obtenido de ciencia & datos: https://medium. com/datos-y-ciencia .... Saavedra, Y. A. (2019). Creación de una red neuronal con R. URL https://yuasaavedraco.github.io/Docs/Redes_Neuronales_con_R.html San-José, M. L. (2017). Métodos estadísticos para la predicción del desvío en la demanda de energía eléctrica aplicado al mercado ibérico. Trabajo fin de grado, Universidad Politécnica de Madrid. Valencia, L. (2020). Apuntes asignatura inteligencia artificial. Wikipedia (2021a). Aprendizaje automático. URL https://es.wikipedia.org/wiki/Aprendizaje_autom%C3%A1tico Wikipedia (2021b). Artificial neural network. URL https://en.wikipedia.org/wiki/Artificial_neural_network Wikipedia (2021c). Machine learning. URL https://en.wikipedia.org/wiki/Machine_learning 74