Instalar paquetes y llamar librerias

#install.packages("forecast")
library(forecast)
library(readxl)

Ejemplo. Produccion

Contexto

Una Serie de tiempo es una coleccion de observaciones sobre un determinado fenomeno efectuadas en momentos de tiempo sucesivos, usualmente equiespaciados.

Ejemplos de series de tiempo son:
1. Precio de acciones 2. Niveles de inventario 3. Rotacion de personal 4. Ventas 5. PIB

Crear la serie de tiempo

Ejemplo: Los siguientes datos de produccion trimestral inician en el primer trimestre del 2020. Se busca pronosticar la produccion de los siguientes 5 trimestres

produccion <- c(50, 53, 55, 57, 55, 60)

st_produccion <- ts(data = produccion, start = c(2020,1), frequency = 4) #En este caso, la serie de tiempo inicia en 2020, en el primer trimestre

Crear el modelo de ARIMA

Arima Significa Modelo Autorregresivo integrado de promedio movil

modelo_produccion <- auto.arima(st_produccion, D= 1) # Diferenciacion estacional
modelo_produccion
## Series: st_produccion 
## ARIMA(0,0,0)(0,1,0)[4] with drift 
## 
## Coefficients:
##        drift
##       1.5000
## s.e.  0.1768
## 
## sigma^2 = 2.01:  log likelihood = -2.84
## AIC=9.68   AICc=-2.32   BIC=7.06
summary(modelo_produccion)
## Series: st_produccion 
## ARIMA(0,0,0)(0,1,0)[4] with drift 
## 
## Coefficients:
##        drift
##       1.5000
## s.e.  0.1768
## 
## sigma^2 = 2.01:  log likelihood = -2.84
## AIC=9.68   AICc=-2.32   BIC=7.06
## 
## Training set error measures:
##                      ME      RMSE       MAE        MPE      MAPE       MASE
## Training set 0.03333332 0.5787923 0.3666667 0.03685269 0.6429133 0.06111111
##                    ACF1
## Training set -0.5073047
# Al comparar modelos, seleccionamos el que tenga el menor MAPE (Porcentaje de error promedio absoluto)

Generar el pronostico

pronostico_produccion <- forecast(modelo_produccion, level = c(95), h = 5)
" Si no nos dicen otra cosa, el nivel de confiabilidad es 95%. Los periodos de pronostico son la h"
## [1] " Si no nos dicen otra cosa, el nivel de confiabilidad es 95%. Los periodos de pronostico son la h"
pronostico_produccion
##         Point Forecast    Lo 95    Hi 95
## 2021 Q3             61 58.22127 63.77873
## 2021 Q4             63 60.22127 65.77873
## 2022 Q1             61 58.22127 63.77873
## 2022 Q2             66 63.22127 68.77873
## 2022 Q3             67 63.07028 70.92972
plot(pronostico_produccion)

Ejercicio 1. Mexico rumbo al 2050

Seleccionar un estado de mexico, obtener los datos historicos de su poblacion, generar un pronostico hasta 2050. Crear la serie de tiempo

NL_poblacion <-c(3098736,3550114,3834141,4199292,4653458,5119504,5784442)
st_poblacion <- ts(data = NL_poblacion, start = c(1990, 1), frequency = 0.2)
st_poblacion
## Time Series:
## Start = 1990 
## End = 2020 
## Frequency = 0.2 
## [1] 3098736 3550114 3834141 4199292 4653458 5119504 5784442

Crear el modelo de ARIMA

modelo_poblacion <- auto.arima(NL_poblacion, D = 1)
modelo_poblacion
## Series: NL_poblacion 
## ARIMA(0,1,0) with drift 
## 
## Coefficients:
##           drift
##       447617.67
## s.e.   47489.21
## 
## sigma^2 = 1.624e+10:  log likelihood = -78.5
## AIC=161   AICc=165   BIC=160.58
summary(modelo_poblacion)
## Series: NL_poblacion 
## ARIMA(0,1,0) with drift 
## 
## Coefficients:
##           drift
##       447617.67
## s.e.   47489.21
## 
## sigma^2 = 1.624e+10:  log likelihood = -78.5
## AIC=161   AICc=165   BIC=160.58
## 
## Training set error measures:
##                   ME     RMSE      MAE        MPE     MAPE      MASE      ACF1
## Training set 378.731 107699.6 70680.83 -0.2544811 1.525664 0.1579045 0.2038744
pronostico_poblacion <- forecast(modelo_poblacion, level = c(95), h = 6)
pronostico_poblacion
##    Point Forecast   Lo 95   Hi 95
##  8        6232060 5982298 6481822
##  9        6679677 6326461 7032894
## 10        7127295 6694695 7559895
## 11        7574913 7075389 8074437
## 12        8022530 7464046 8581015
## 13        8470148 7858359 9081937
plot(pronostico_poblacion)

Ejercicio 2. Shiny APP

Agregar una pestaña en la aplicacion de shiny con el ejercicio Mexico rumbo al 2050. En el menu se debe seleccionar la cantidad de años a pronosticar y el nivel de confiabilidad. Aplicacion de shiny

Ejercicio 3. Pregunta reflexion

1.El rol de los negocios en la sociedad: Aprendizaje de KPIS, fodas
2.Decisiones financerias: Estados de resultados, balances generales, analisis de empresa e inversion
3.Pensamiento Estadistico: Fundamentos estadisticos y uso en excel para analisis
4.Comunicacion que insipira: La verdad no me acuerd
5.Estrategia de mercado y diferenciacion: Aprendimos al powerBI, me insipiro a meterme a LIT, recopilacion de datos de encuestas
6.Evaluacion de proyectos de inversion: No me acuerdo
7.Manipulacion de datos: Manejo de bases de datos, uso de herramientas para depuracion de bases de datos e analisis de resultados
8.Mineria de Datos: No me acuerdo muy bien pero algo de redes neuronales
9.Bootcamp de analisis de datos: Reforze conocimientos de analisis de datos y presentacion visual con tableros como tableu
10.Concentracion: Inteligencia aritifical para entorno empresarial: Modelos de ML como random forest, xgboost

Actividad 2. Hersheys.

Crear la serie de tiempo.

ventas <- read_excel("C:\\Users\\gabri\\Downloads\\Tec\\Sem 9\\Generacion de Escenarios Futuros\\M1\\Ventas.xlsx")
str(ventas)
## tibble [36 × 1] (S3: tbl_df/tbl/data.frame)
##  $ Ventas: num [1:36] 25521 23740 26254 25868 27073 ...
st_ventas <- ts(data = ventas, start = c(2017,1), frequency = 12)

Crear modelo ARIMA

modelo_ventas <- auto.arima(st_ventas)
modelo_ventas
## Series: st_ventas 
## ARIMA(1,0,0)(1,1,0)[12] with drift 
## 
## Coefficients:
##          ar1     sar1     drift
##       0.6383  -0.5517  288.8979
## s.e.  0.1551   0.2047   14.5026
## 
## sigma^2 = 202701:  log likelihood = -181.5
## AIC=371   AICc=373.11   BIC=375.72
summary(modelo_ventas)
## Series: st_ventas 
## ARIMA(1,0,0)(1,1,0)[12] with drift 
## 
## Coefficients:
##          ar1     sar1     drift
##       0.6383  -0.5517  288.8979
## s.e.  0.1551   0.2047   14.5026
## 
## sigma^2 = 202701:  log likelihood = -181.5
## AIC=371   AICc=373.11   BIC=375.72
## 
## Training set error measures:
##                    ME    RMSE    MAE        MPE      MAPE       MASE      ACF1
## Training set 25.22158 343.864 227.17 0.08059932 0.7069542 0.06491044 0.2081026

Generar modelo pronostico

pronostico_ventas <- forecast(modelo_ventas, level = c(95), h = 12)
pronostico_ventas
##          Point Forecast    Lo 95    Hi 95
## Jan 2020       35498.90 34616.48 36381.32
## Feb 2020       34202.17 33155.28 35249.05
## Mar 2020       36703.01 35596.10 37809.92
## Apr 2020       36271.90 35141.44 37402.36
## May 2020       37121.98 35982.07 38261.90
## Jun 2020       37102.65 35958.90 38246.40
## Jul 2020       37151.04 36005.73 38296.34
## Aug 2020       38564.64 37418.70 39710.58
## Sep 2020       38755.22 37609.03 39901.42
## Oct 2020       39779.02 38632.72 40925.32
## Nov 2020       38741.63 37595.28 39887.97
## Dec 2020       38645.86 37499.50 39792.22
plot(pronostico_ventas)