domingo, 19 de enero de 2020

Como evaluar a un socio de fabricación


Amigos PYME, hoy comparto con ustedes un artículo que trata el tema de las principales consideraciones que debemos tomar en cuenta para evaluar a un socio de fabricación. Generalmente consideramos únicamente el costo que esta decisión nos generará; sin embargo, existen otros aspectos, que al no ser considerados, nos generarán terribles problemas.

Les comparto el enlace:

How to Vet a Manufacturing Partner

Este artículo fué publicado originalmente por:
 www.gembah.com


Nuestros consultores experimentados, que tienen competencias profundas dentro del sector PYME, capacitan a los clientes para tomar decisiones informadas a través de soluciones centradas en procesos y les ayudan a alcanzar una visión global unificada de su negocio para estimular el crecimiento continuo.


Agendar su cita para hacer el diagnóstico integral de su PYME gratis.
Solicite el o los cursos de capacitación que su PYME requiere para una mejor gestión.

Ing. Juan José Crespo Hernández.
https://youtu.be/My3bSQwxqME
Whatsapp    7712160740
Cel.  7712160740  Pachuca Hgo.
consultoriadeprocesos53@gmail.com
https://crespoconsultoriadeprocesos.blogspot.com

martes, 14 de enero de 2020


Pronosticar en R con Prophet


Amigos PYME, en publicaciones anteriores, hemos hablado de la importancia del pronóstico y hemos dicho que es el punto de partida para la gestión de la cadena de suministro.
Actualmente existen softwares y paquetes de código abierto que nos permiten elaborar Pronósticos con una gran exactitud. Es por ello que a continuación comparto con ustedes esta información. La mayoría de las veces nuestra PYME no cuenta con los recursos económicos para adquirir paquetes Informáticos que cuestan bastante dinero. Sin embargo es posible obtener pronósticos de calidad a través de recursos informáticos de código abierto. Les sugiero descargar de internet el software R y el paquete Prophet para elaborar sus Pronósticos.


El pronóstico a menudo se considera una progresión natural de los informes. ¿Informar nos ayuda a responder lo que sucedió? El pronóstico ayuda a responder la siguiente pregunta lógica: ¿qué pasará?
Históricamente, los pronósticos de alta calidad han sido muy difíciles de producir. Esto dio como resultado una grave escasez de analistas que podían entregar pronósticos con el nivel de precisión requerido para impulsar las decisiones comerciales. Para aliviar esta brecha de suministro y hacer que la predicción escalable sea mucho más fácil, el equipo de Core Data Science en Facebook creó Prophet , una biblioteca de predicción para Python y R, que abrieron en 2017.
La intención detrás de Prophet es "hacer que sea más fácil para los expertos y no expertos hacer pronósticos de alta calidad que se mantengan al día con la demanda". Prophet puede producir pronósticos confiables y robustos (a menudo con un mejor desempeño que otras técnicas de pronóstico comunes) con muy pequeño esfuerzo manual al tiempo que permite la aplicación del conocimiento del dominio a través de parámetros fácilmente interpretables.
En esta receta, aprenderá a usar Prophet (en R) para resolver un problema común: pronosticar los pedidos diarios de una empresa para el próximo año. Este ejemplo liviano debería servir como una excelente manera de comenzar con Prophet, y con suerte generará inspiración para profundizar aún más en la vasta funcionalidad de la biblioteca.
Esta receta se divide en cuatro secciones principales:
  1. Preparación de datos y exploración
  2. Transformada de Box-Cox
  3. Previsión
  4. Transformada inversa de Box-Cox
Puede encontrar implementaciones de todos los pasos descritos a continuación en este informe de Modo de ejemplo .

Preparación de datos y exploración

Prophet funciona mejor con datos de periodicidad diaria con al menos un año de datos históricos. Es posible usar Prophet para pronosticar usando datos sub-diarios o mensuales , pero para los propósitos de esta receta, usaremos la periodicidad diaria recomendada. Usaremos SQL para discutir los datos que nos gustaría pronosticar en una periodicidad diaria:
`select
``  date,
  value
from modeanalytics.daily_orders
order by date`
NOTA: Si bien Prophet es relativamente robusto a la falta de datos, es importante asegurarse de que a su serie temporal no le falte una cantidad significativa de observaciones. Si a su serie temporal le faltan un gran número de observaciones, considere usar una técnica de remuestreo o pronosticar sus datos a una frecuencia menor (por ejemplo, hacer pronósticos mensuales utilizando observaciones mensuales)
Ahora que tenemos nuestros datos en una periodicidad diaria, podemos canalizar nuestro conjunto de resultados de consultas SQL en un objeto de marco de datos R en el cuaderno R. Primero, cambie el nombre de su consulta SQL a Daily Orders. Luego, dentro del cuaderno R, podemos usar la siguiente declaración para canalizar nuestro conjunto de resultados de consulta en un marco de datos df:
df <- datasets[["Daily Orders"]]
Para tener una idea rápida de cuántas observaciones contiene su marco de datos, puede ejecutar la siguiente declaración:
# Retreive dimension of object
dim(df)
Prophet siempre espera dos columnas en el DataFrame de entrada: dsy que y,contienen la fecha y los valores numéricos, respectivamente. Para verificar los tipos de columnas en su DataFrame, puede ejecutar la siguiente instrucción en el cuaderno R:
# Inspect variables
str(df)
En este ejemplo, necesitará hacer una conversión manual de clase:
# Parse date column
df <- mutate (
df,
date = ymd_hms(date) # parse date column using lubridate ymd_hms function
)
Una vez que haya confirmado que las columnas en su marco de datos son las clases correctas, puede crear una nueva columna dsen su marco de datos que sea una copia exacta de la columna de fecha, y una nueva columna yque sea una copia exacta de la columna de valor:
df <- mutate (
df,
ds = date,  # Create new ds column from date using mutate
y = value   # Create new y column from value using mutate
)
Luego puede reutilizar la datecolumna que se utilizará como índice del marco de datos:
# # Repurpose date column to be used as dataframe index
df <- column_to_rownames(df, var = "date")
Ahora que tiene sus datos preparados para usarlos con Prophet, es una buena práctica trazarlos e inspeccionar cómo se ven los datos antes de introducirlos en Prophet. Usando nuestros datos de ejemplo, podemos usar ggplot2 para crear la siguiente visualización:






Exploración visual de pedidos diarios


Hay algunas cosas que notar sobre esta trama:
  1. Hay un cambio notable en la trayectoria de la tendencia alrededor de mayo de 2017. Por defecto, Prophet detecta automáticamente este tipo de " puntos de cambio de tendencia " y permite que la tendencia se adapte adecuadamente. Prophet también permite un control más detallado sobre la identificación de estos puntos de cambio de tendencia .
  2. Hay una notable estacionalidad semanal y anual. Prophet se ajustará automáticamente a las estacionalidades semanales y anuales si la serie temporal tiene más de dos ciclos de duración.
  3. La media y la varianza de nuestras observaciones aumentan con el tiempo. Prophet modela de forma nativa el aumento de la media de los datos a lo largo del tiempo, pero debemos tomar medidas adicionales para normalizar la mayor variación posible para lograr los resultados de pronóstico más precisos. Podemos hacer esto aplicando una transformación de potencia a nuestros datos.

Transformada de Box-Cox

A menudo, en el pronóstico, elegirá explícitamente un tipo específico de transformación de potencia para aplicar a los datos para eliminar el ruido antes de alimentar los datos en un modelo de pronóstico (por ejemplo, una transformación logarítmica o una transformación de raíz cuadrada, entre otros). Sin embargo, a veces puede ser difícil determinar qué tipo de transformación de potencia es adecuada para sus datos. Aquí es donde entra en juego la transformación Box-Cox .
Las transformaciones de Box-Cox son transformaciones de datos que evalúan un conjunto de coeficientes lambda (λ) y selecciona el valor que logra la mejor aproximación de la normalidad.
La biblioteca de pronóstico R proporciona una función de transformación Box-Cox incorporada, llamada BoxCox () . La función BoxCox () tiene dos entradas requeridas: un vector numérico o series de tiempo de clase tsy un parámetro de transformación de coeficiente lambda. Para determinar el coeficiente lambda para usar en la transformación Box-Cox, puede usar la función incorporada BoxCox.lambda () , que selecciona automáticamente el coeficiente lambda óptimo para la transformación.
Para nuestro ejemplo, dejaremos que la [BoxCox.lambda()](https://www.rdocumentation.org/packages/forecast/versions/8.1/topics/BoxCox.lambda)función determine el λ óptimo para usar en la transformación, y luego usaremos ese valor en la función BoxCox () :
# The BoxCox.lambda() function will choose a value of lambda
lam = BoxCox.lambda(df$value, method = "loglik")
df$y = BoxCox(df$value, lam)
df.m <- melt(df, measure.vars=c("value", "y"))
Si trazamos nuestros datos recién transformados junto con los datos no transformados, podemos ver que la transformación de Box-Cox pudo eliminar gran parte de la variación creciente en nuestras observaciones a lo largo del tiempo:





Datos transformados de Box-Cox

Previsión

El primer paso para crear un pronóstico usando Prophet es importar la fbprophetbiblioteca en nuestro cuaderno R:
library(prophet)
Una vez que haya imprimido la biblioteca del profeta, estará listo para ajustar un modelo a sus datos históricos. Para ello, llame a la prophet()función utilizando su marco de datos preparado como entrada:
m <- prophet(df)
Una vez que haya usado Prophet para ajustar el modelo usando el conjunto de datos transformado de Box-Cox, ahora puede comenzar a hacer predicciones para fechas futuras. Prophet tiene una función auxiliar incorporada make_future_dataframepara crear un marco de datos de fechas futuras. La make_future_dataframefunción le permite especificar la frecuencia y el número de períodos que le gustaría pronosticar en el futuro. Por defecto, la frecuencia se establece en días. Como estamos usando datos de periodicidad diaria en este ejemplo, dejaremos freqel valor predeterminado y estableceremos el periodsargumento en 365, lo que indica que nos gustaría pronosticar 365 días en el futuro.
future <- make_future_dataframe(m, periods = 365)
Ahora podemos usar la predict()función para hacer predicciones para cada fila en el marco de datos futuro.
forecast <- predict(m, future)
En este punto, Prophet habrá creado un nuevo marco de datos asignado a la variable de pronóstico que contiene los valores pronosticados para fechas futuras en una columna llamada yhat, así como intervalos de incertidumbre y componentes para el pronóstico. Podemos visualizar el pronóstico utilizando la plotfunción auxiliar incorporada de Prophet :
plot(m, forecast)
En nuestro ejemplo, nuestro pronóstico es el siguiente:




Pronóstico del profeta
Si desea visualizar los componentes de pronóstico individuales, puede usar la función incorporada de Prophet plot_components:
prophet_plot_components(m, forecast)
La ejecución plot_componentsde nuestros datos de ejemplo devuelve el siguiente conjunto de visualizaciones de componentes:


Componentes del pronóstico del profeta
Las previsiones y las visualizaciones de componentes muestran que Prophet pudo modelar con precisión la tendencia subyacente en los datos, al tiempo que modeló con precisión la estacionalidad semanal y anual (por ejemplo, menor volumen de pedidos en fin de semana y días festivos).

Transformada inversa de Box-Cox

Dado que Prophet se usó en los datos transformados de Box-Cox, deberá transformar sus valores pronosticados nuevamente en sus unidades originales. Para transformar sus nuevos valores pronosticados nuevamente en sus unidades originales, deberá realizar una transformación inversa de Box-Cox.
La biblioteca de pronóstico R proporciona una función de transformación inversa inversa de Box-Cox, llamada [InvBoxCox()](https://www.rdocumentation.org/packages/forecast/versions/8.1/topics/BoxCox). La InvBoxCox()función tiene dos entradas requeridas; un vector numérico o series de tiempo de clase tsy un parámetro de transformación del coeficiente lambda. Transformaremos inversamente columnas específicas en nuestro marco de datos de pronóstico, y suministraremos el valor λ que obtuvimos anteriormente de nuestra primera transformación Box-Cox almacenada en la lamvariable:
inverse_forecast <- forecast
inverse_forecast <- column_to_rownames(inverse_forecast, var = "ds")
inverse_forecast$yhat_untransformed = InvBoxCox(forecast$yhat, lam)
Ahora que sus valores pronosticados se transforman nuevamente a sus unidades originales, puede visualizar los valores pronosticados junto con los valores históricos:


Profeta Pronóstico Final
Nuestros consultores experimentados, que tienen competencias profundas dentro del sector PYME, capacitan a los clientes para tomar decisiones informadas a través de soluciones centradas en procesos y les ayudan a alcanzar una visión global unificada de su negocio para estimular el crecimiento continuo.



Agendar su cita para hacer el diagnóstico integral de su PYME gratis.
Solicite el o los cursos de capacitación que su PYME requiere para una mejor gestión.

Ing. Juan José Crespo Hernández.
https://youtu.be/My3bSQwxqME
Whatsapp    7712160740
Cel.  7712160740  Pachuca Hgo.
consultoriadeprocesos53@gmail.com
https://crespoconsultoriadeprocesos.blogspot.com