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)
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)
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
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)
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)
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))
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
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
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)
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)