Ingresos y previsiones

Un usuario Pregunto ✅


¿Te perdiste las partes anteriores de esta serie? Consulte Conviértase en el asesor estratégico de su organización mediante el uso de Machine Learning y Power BI

La previsión es una parte importante de la mayoría de los puestos de gestión. Saber cuántos productos se venderán dónde y cuándo informa las decisiones de recursos, como la dotación de personal y el inventario. También es una forma intuitiva de comparar el rendimiento entre diferentes unidades de negocio, categorías de productos, etc. Para los propietarios de pérdidas y ganancias, es una herramienta esencial para gestionar de forma proactiva su margen adaptando los niveles de inversión.

Sobre la base de la publicación anterior, la primera técnica de pronóstico que exploraremos será una proyección de series de tiempo. Al igual que la descomposición que vimos en la publicación anterior, puede entenderse conceptualmente como extrapolar y sumar los vectores de estacionalidad y tendencia. Como era de esperar, este tipo de pronósticos funcionan bien para empresas con tendencias persistentes y estacionalidad. A diferencia de un modelo de regresión que puede tener en cuenta los cambios planificados, este tipo de modelos solo considera el pasado. En una publicación posterior, veremos modelos de pronóstico alternativos si se planea un gran cambio para el negocio.

Una técnica popular para la previsión basada en series temporales es el suavizado exponencial, y la función de previsión integrada en Power BI utiliza una implementación de este algoritmo. Aquí lo usaremos para predecir los ingresos y la cantidad de nuestros datos de muestra. A continuación, se muestra un ejemplo que creé al duplicar la página de mi última publicación y cambiar los scripts de las imágenes R para pronosticar un año adelante utilizando primero un modelo Holt-Winters multiplicativo y, en segundo lugar, un suavizado exponencial con estacionalidad aditiva.

Todos estos gráficos se hicieron con una columna categórica y la suma de los ingresos. Los pronósticos de series de tiempo se realizaron con un R-visuals utilizando el siguiente script.

cb1.png

En las dos imágenes R con los pronósticos, la línea azul son los valores reales hasta la fecha, la línea roja es la media de los valores pronosticados y las áreas sombreadas representan los intervalos de confianza del 75 y 95% respectivamente. Como puede ver, las áreas sombreadas son en ambos casos grandes. Esto es indicativo de una precisión de pronóstico limitada, es decir, no hay mucho poder explicativo en las cifras históricas de ingresos por sí solas. Para este conjunto de datos, esto se debe a múltiples experimentos históricos deliberados. En una publicación posterior, exploraremos modelos de pronóstico alternativos que mejoren la precisión de la predicción al tener en cuenta dichos factores.

Uso del informe

Para que este informe funcione en Power BI Desktop, necesita tener instalado el pronóstico del paquete. Si no ha usado previamente este paquete en su computadora, instálelo yendo a su consola R en R Studio u otra GUI de R y escriba install.packages («pronóstico») y presione la tecla Intro.

Al hacer clic y profundizar en las diferentes tiendas y productos, podemos cambiar entre pronosticar una sola tienda, producto o usar la flecha de desglose para una combinación de ambos, por ejemplo, Producto 5 y tienda 3: una combinación donde las dos metodologías sugieren tendencias dispares. y alta incertidumbre.

cb2.png

Al igual que con la descomposición en la publicación anterior, un pronóstico basado en series de tiempo no es aditivo, por ejemplo, es poco probable que la suma de los pronósticos para los productos individuales coincida exactamente con el pronóstico total del negocio, debido a la ley de cancelación de grandes números. algo de ruido cuando los productos se suman por primera vez. Por esa razón, una configuración dinámica como Power BI es una gran ventaja, ya que ofrece la capacidad de hacer clic rápidamente en las diferentes áreas comerciales, clases de productos, geografías y obtener automáticamente un pronóstico para cada uno, así como los agregados más precisos para cualquier combinación subyacente. . Esto funciona porque la funcionalidad básica de Power BI filtra el modelo de datos subyacente y solo envía al script R los datos que se seleccionaron. El script R luego vuelve a calcular el nuevo subconjunto, actualizando el pronóstico. Esto también sucederá cuando filtre a tiempo, al limitar la cantidad de historial que puede analizar el script. Eso puede ser deseable, por ejemplo, para filtrar un año con grandes anomalías, pero también puede disminuir la precisión al limitar demasiado los datos disponibles.

Un pronóstico preciso para cada parte del negocio puede informar las decisiones de asignación de recursos, cuánto inventario llevar y servir como un indicador principal de una oportunidad o riesgo comercial en crecimiento.

Recreando el informe

Los elementos visuales de R funcionarán automáticamente en Power BI cuando el informe se publique en el servicio, donde ya se han instalado los paquetes más comunes, pero para que funcionen en Power BI Desktop necesita una instalación local de R (consulte mi publicación anterior para Instrucciones de instalación).

Para crear este informe, dupliqué la página «TimeSeriesAnalysis» haciendo clic derecho en la pestaña de la página y seleccionando «Duplicar página». Luego reorganicé las imágenes y cambié el script R* a:

## Load the library "forecast" to gain access to the exponential smoothing function ets()

## If you have not installed this package you will get an error message saying that the library was not found. In that case install it by typing: install.packages("forecast") directly in your R Console.

require(forecast)

## Convert the column "Revenue" in the Power BI input "dataset" into a time series object with the right periodicity (12 for months per year)

## as.numeric(substr(dataset[1,'Date'],0,4)) returns 2013, the first year in the dataset which helps the user understand the time scale

myts <- ts(dataset[,'Revenue'], start = as.numeric(substr(dataset[1,'Date'],0,4)), frequency= 12)

## Create the ets model with the right parameters, type ?ets in your R console after loading the forecast library for details

myets <- ets(myts, "ZZA")

## The second argument in the function forecast() defines how many values you want to forecast. Since this is monthly data 12 is a whole year ahead

## Level determines which confidence intervals to plot, c(75,95) sets them to 75% and 95%.

myprediction <- forecast(myets, 12, level = c(75,95))

## Find the last row with actual values (to know which color to use for the plot)

lastValue = tail(myprediction$x,1)

## Get the mean value for all future fitted dates

myprediction$mean=ts(c(lastValue,myprediction$mean), 
               	frequency = frequency(myprediction$mean), 
                     	end=end(myprediction$mean))

## Populate the upper values for all future fitted dates

myprediction$upper=ts(rbind(c(lastValue,lastValue),myprediction$upper), 
                      	frequency = frequency(myprediction$upper), 
                      	end=end(myprediction$upper))

## And the same for the the lower range values for all future fitted dates  

myprediction$lower=ts(rbind(c(lastValue,lastValue),myprediction$lower), 
                      	frequency = frequency(myprediction$lower), 
                      	end=end(myprediction$lower))

## Plot the results with historical values in blue and future values in red with shaded confidence intervals

plot(myprediction, lwd=2, col="blue", fcol="red", flwd=2, shaded=TRUE, col.sub = "gray50", cex.sub=0.75, xlab = "", ylab = "Revenue")

La implementación de ets se documenta aquí. El parámetro del modelo «myets» se puede cambiar, por ejemplo, a «MAM» para un modelo Holt-Winters multiplicativo, «MNA» para un suavizado exponencial con estacionalidad aditiva o «ZZZ» para un modelo completamente automatizado (la función ets probará las tres opciones para cada “Z” que encuentre y utilice la opción de mejor ajuste).

Para cambiar uno de los elementos visuales de R para pronosticar cantidad en lugar de Ingresos:

  1. Seleccione el objeto visual R que debería pronosticar la cantidad en su lugar
  2. En el menú del lado izquierdo en Power BI Desktop, busque la columna «Unidades_vendidas» en la tabla Ventas y haga clic en el cuadro a la izquierda para agregarlo al objeto visual.
  3. Elimine la columna «Ingresos» de la sección Valores para el elemento visual
  4. En la misma área, haga clic en la flecha hacia abajo para Units_sold y configúrelo en «Suma» para agregarlo a un solo valor por día
    cb3.png
  5. Modifique el script R en la segunda fila (sin contar los comentarios marcados con un hashtag inicial) a: myts <- ts(dataset[,’Units_sold’], inicio = as.numeric(substr(conjunto de datos[1,'Date'],0,4)), frecuencia= 12)
  6. Actualice el script R en la última fila del script para nombrar la cantidad del eje Y en lugar de Revenue: plot(myprediction, lwd=2, col=»blue», fcol=»red», flwd=2, shaded=TRUE, col .sub = «gray50», cex.sub=0.75, xlab = «», ylab = «Cantidad»)

En el paso 5, también puede usar una referencia relativa para hacer que el nombre de la columna del script sea agnóstico, es decir, «myts <- ts (conjunto de datos[,2], inicio = as.numeric(substr(conjunto de datos[1,'Date'],0,4)), frecuencia= 12)” siempre usará la segunda columna en la entrada. Para obtener un ejemplo más sólido sobre cómo manejar diferentes opciones de fecha en Power BI, recomiendo echar un vistazo al ejemplo de Pronóstico en el escaparate de R en PowerBI.com.

Consejos y trucos

Es posible que desee ampliar los últimos años del eje x para que el pronóstico sea más frecuente. En lugar de usar los controles de Power BI para cambiar esto (lo que puede disminuir la precisión del pronóstico), puede lograrlo modificando el comando de trazado en la última fila para:

plot(myprediction, lwd=2, col="blue", fcol="red", flwd=2, shaded=TRUE, xlim=c(2015, 2018), col.sub = "gray50", cex.sub=0.75, xlab = "", ylab = "Revenue")

Sin embargo, esto puede producir un eje x con decimales. Para resolver eso agregamos:

plot(myprediction, lwd=2, col="blue", fcol="red", flwd=2, shaded=TRUE, xlim=c(2015, 2018), xaxt = "n", col.sub = "gray50", cex.sub=0.75, xlab = "", ylab = "Revenue")
axis(1, at = 2015:2018, labels = 2015:2018)

El parámetro xaxt=”n” inicialmente suprime el eje x. La segunda línea del script establece el eje x usando la función axis().

Si se encuentra con un error de secuencia de comandos R y tiene dificultades para encontrar la causa raíz, la segunda flecha en el editor de secuencias de comandos R mueve los datos seleccionados actualmente a su editor de secuencias de comandos predeterminado.

cb4.png

Enlaces y descargas

Pronóstico en el escaparate de R en Power BI

Ajuste de regresión polinomial local

* Derechos de autor (c) Microsoft Corporation. Reservados todos los derechos.

Programas de terceros. Este software le permite obtener aplicaciones de software de otras fuentes.

Esas aplicaciones son ofrecidas y distribuidas por terceros bajo sus propios términos de licencia.

Microsoft no está desarrollando, distribuyendo ni licenciando esas aplicaciones para usted, sino que, en cambio,

para su comodidad, le permite usar este software para obtener esas aplicaciones directamente desde

los proveedores de aplicaciones.

Al usar el software, usted reconoce y acepta que obtiene las aplicaciones directamente

de los proveedores externos y bajo términos de licencia separados, y que es su responsabilidad localizar,

entender y cumplir con esos términos de licencia.

Microsoft no le otorga derechos de licencia para el software o las aplicaciones de terceros que se obtienen mediante este software.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *