Enlace de shiny

Aplicacion de shiny # Instalar paquetes y llamar librerias

install.packages("forecast", repos = "https://cloud.r-project.org/")
## 
## The downloaded binary packages are in
##  /var/folders/8g/1pq8n_gx55dcqp83jzn8k0l00000gp/T//RtmpQryWxu/downloaded_packages
install.packages("readxl", repos = "https://cloud.r-project.org/")
## 
## The downloaded binary packages are in
##  /var/folders/8g/1pq8n_gx55dcqp83jzn8k0l00000gp/T//RtmpQryWxu/downloaded_packages
library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(readxl)

Ejemplo. Producción

Contexto

Una serie de tiempo es una coleccion de observaciones sobre un determinado fenomeno efectuadas en momento de tiempo sucesivos, usualmente equiespaciodos.

Ejemplos de series de tiempo: 1. precios de acciones 2. Niveles de inventario 3. Rotación de personal 4. Ventas 5. PIB (GDP)

Crear la serie de tiempo

Ejemplo: los siguientes datos de producción trimestral inician en el primer trimestre de 2020. se busca pronosticar la producción 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 1er trimestre
#Mensual: st_produccion <- ts(data=produccion, start= c(2020,1))
#frequency=12) # en este caso la serie de tiempo inicia en 2020 en el primer mes
#st_produccion <- ts(data=produccion, start= c(2020,8))
#frequency=12) # en este caso la serie de tiempo inicia en 2020 en el octavo mes
#st_produccion <- ts(data=produccion, start= c(2020,1))
#frequency=4) # en este caso la serie de tiempo inicia en 2020 en el primer mes

Crear el modelo ARIMA

ARIMA significa modelo autorregresivo integrado de promedio movil, en ingles.

modelo_produccion <- auto.arima(st_produccion, D=1) #Diferenciación Estacional
modelo_produccion
## Series: st_produccion 
## ARIMA(0,1,0) 
## 
## sigma^2 = 9.2:  log likelihood = -12.64
## AIC=27.29   AICc=28.62   BIC=26.89
summary(modelo_produccion)
## Series: st_produccion 
## ARIMA(0,1,0) 
## 
## sigma^2 = 9.2:  log likelihood = -12.64
## AIC=27.29   AICc=28.62   BIC=26.89
## 
## Training set error measures:
##                 ME    RMSE      MAE      MPE     MAPE      MASE       ACF1
## Training set 1.675 2.76895 2.341667 2.933747 4.145868 0.8363095 -0.5152989
# Al comparar modelos, seleccionamos el que tenga 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 a pronosticar es h.
pronostico_produccion
##      Point Forecast    Lo 95    Hi 95
## 2026             60 54.05497 65.94503
## 2027             60 51.59246 68.40754
## 2028             60 49.70291 70.29709
## 2029             60 48.10995 71.89005
## 2030             60 46.70652 73.29348
plot(pronostico_produccion)

Ejercicio 1. México rumbo al 2050

En equipos de 2 o 3, seleccionar un estado de mexico, obtener los datos historicos de su población, generar un pronostico hasta 2050

library(forecast)

# Datos oficiales recientes de Aguascalientes
años <- c(2010, 2020, 2024)
poblacion <- c(1184996, 1425607, 1530185)

# Interpolación anual solo de los últimos años
todos_años <- 2010:2024
poblacion_interp <- approx(x = años, y = poblacion, xout = todos_años)$y

# Serie temporal anual interpolada
st_poblacion <- ts(data = poblacion_interp, start = 2010, frequency = 1)

# Modelo ARIMA simple para evitar sobreestimación
modelo_poblacion <- auto.arima(st_poblacion, seasonal = FALSE)

# Pronóstico hasta 2050
horizonte <- 2050 - 2024
pronostico_poblacion <- forecast(modelo_poblacion, h = horizonte, level = 95)

# Último valor pronosticado en 2050
ultimo_valor <- round(pronostico_poblacion$mean[horizonte])
cat("Pronóstico de población en 2050:", format(ultimo_valor, big.mark = ","), "\n")
## Pronóstico de población en 2050: 2,209,942
# Gráfica limpia
plot(pronostico_poblacion,
     main = "Pronóstico de población de Aguascalientes (2010–2050)",
     ylab = "Población", xlab = "Año",
     ylim = c(min(st_poblacion), max(pronostico_poblacion$mean) * 1.05))

library(forecast)

# Datos oficiales de población de Aguascalientes
años <- c(2000, 2005, 2010, 2020, 2024)
poblacion <- c(944285, 1065416, 1184996, 1425607, 1530185)

# Interpolación anual para tener serie completa
todos_años <- 2019:2024
poblacion_interp <- approx(x = años, y = poblacion, xout = todos_años)$y

# Serie temporal anual interpolada
st_poblacion <- ts(data = poblacion_interp, start = 2000, frequency = 1)

# Modelo ARIMA automático
modelo_poblacion <- auto.arima(st_poblacion, seasonal = FALSE)

# Pronóstico hasta 2050
horizonte <- 2050 - 2024
pronostico_poblacion <- forecast(modelo_poblacion, h = 26)

# Último valor pronosticado en 2050
ultimo_valor <- round(pronostico_poblacion$mean[horizonte])
cat("Pronóstico de población en 2050:", format(ultimo_valor, big.mark = ","), "\n")
## Pronóstico de población en 2050: 2,199,108
# Gráfica limpia
plot(pronostico_poblacion,
     main = "Pronóstico de población de Aguascalientes (2000–2050)",
     ylab = "Población", xlab = "Año",
     ylim = c(min(st_poblacion), max(pronostico_poblacion$mean) * 1.05))

Ejercicio 2

Agregar una pestaña en la aplicación Shiny con el ejercicio México rumbo al 2050. En el menú se debe seleccionar la cantidad de años a pronosticar

Ejercicio 3

1.Foda y pestel 2.Modelación de Escenarios de Financiamiento 3.muestreo y probabilidad 4.aprender las formas de comunicarte con tu equipo 5.benchmarking e invsetigacion secundaria y cualitativa 6.Flujos de efectivo y depreciación 7.Exploración y estructura de datos 8.redes neuronales y clusters 9.Bootcamp de programación 10.Inteligencia artificial con enfoque empresarial

Actividad 2. Hershey’s

ventas <- read_excel("/Users/sebastianfajardo/Downloads/Ventas_Históricas_Lechitas.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 el 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 el 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)