#install.packages("forecast")
library(forecast)
library(readxl)
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
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
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)
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)
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
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)
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
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
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)
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
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)