Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ana Asensio
9/12/2021
library(eurostat)
library(forecast)
1. Descarga la serie temporal del PIB trimestral de España con la configuración descrita arriba. Divide
la serie en entrenamiento (datos de 2013 a 2018) y validación (datos de 2019). Descarta los datos a
partir de 2020.
2. Entrena un modelo con tendencia lineal y estacionalidad aditiva. Comprueba los residuos y mejora la
predicción con un modelo autorregresivo. Nota: Puedes aprovechar el código de la práctica L5.
residuos = x.ts.lm$residuals
# modelo AR
ar_x = Arima(x.ts.lm$residuals, order = c(1, 0, 0))
summary(ar_x)
## Series: x.ts.lm$residuals
## ARIMA(1,0,0) with non-zero mean
##
## Coefficients:
## ar1 mean
## 0.8425 1726.163
## s.e. 0.1275 2274.146
##
## sigma^2 estimated as 3620881: log likelihood=-214.86
## AIC=435.71 AICc=436.91 BIC=439.25
##
1
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -299.0125 1821.851 1462.884 197.3767 231.6221 0.5854684 -0.2923539
autoplot(ar_x)
Inverse AR roots
1.0
0.5
Imaginary
UnitCircle
0.0
Within
−0.5
−1.0
forecast::forecast(forecast::auto.arima(x.ts.train), h=12)
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2019 Q1 297829 295169.6 300488.4 293761.9 301896.1
## 2019 Q2 316103 312342.1 319863.9 310351.2 321854.8
## 2019 Q3 308154 303547.9 312760.1 301109.5 315198.5
## 2019 Q4 326241 320922.3 331559.7 318106.7 334375.3
## 2020 Q1 309096 301574.2 316617.8 297592.4 320599.6
## 2020 Q2 327370 318157.7 336582.3 313281.0 341459.0
## 2020 Q3 319421 308783.6 330058.4 303152.4 335689.6
## 2020 Q4 337508 325615.0 349401.0 319319.2 355696.8
## 2021 Q1 320363 306041.9 334684.1 298460.8 342265.2
## 2021 Q2 338637 322243.6 355030.4 313565.5 363708.5
## 2021 Q3 330688 312456.3 348919.7 302805.1 358570.9
## 2021 Q4 348775 328874.2 368675.8 318339.3 379210.7
2
7500
5000
2500
Residuo
−2500
accuracy((forecast(x.ts.lm,h=12)$mean+forecast(ar_x,h=12)$mean), x.ts.valid)
3
300000
mejorado
280000
260000
240000
2014 2016 2018
Time
autoplot(x.ts.lm$fitted.values)
4
300000
x.ts.lm$fitted.values
280000
260000
240000
autoplot(cbind(mejorado, x.ts.lm$fitted.values))
5
cbind(mejorado, x.ts.lm$fitted.values)
300000
series
280000
mejorado
x.ts.lm$fitted.values
260000
240000
autoplot(ar_x$residuals)
6
2000
ar_x$residuals
−2000
3. Considera los dos modelos anteriores (tendencia lineal con estacionalidad y la versión mejorada de éste)
y los modelos ingenuo e ingenuo con estacionalidad. Compara numérica y gráficamente los pronósticos
generados. ¿Qué modelo genera mejor pronóstico de los datos de validación?
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2019 Q1 314974 297719.5 332228.5 288585.5 341362.5
## 2019 Q2 314974 290572.4 339375.6 277655.0 352293.0
## 2019 Q3 314974 285088.3 344859.7 269267.7 360680.3
## 2019 Q4 314974 280464.9 349483.1 262196.9 367751.1
modelo_estacionalidad
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2019 Q1 286562 274034 299090 267402.1 305721.9
## 2019 Q2 304836 292308 317364 285676.1 323995.9
## 2019 Q3 296887 284359 309415 277727.1 316046.9
## 2019 Q4 314974 302446 327502 295814.1 334133.9
7
autoplot(cbind(x.ts.lm$fitted.values, mejorado, modelo_ingenuo$fitted, modelo_estacionalidad$fitted, x.t
320000
300000
series
x.ts.lm$fitted.values
Modelos
mejorado
280000 modelo_ingenuo$fitted
modelo_estacionalidad$fitted
x.ts
260000
240000
#autoplot((forecast(x.ts.lm,h=4)$mean+forecast(ar_x,h=4)$mean))
#accuracy(exp(log(forecast(x.ts.lm,h=4)$mean)+forecast(ar_x,h=4)$mean), x.ts.valid)
accuracy(forecast(x.ts.lm,h=4)$mean, x.ts.valid)
accuracy(forecast(x.ts.lm,h=4)$mean+forecast(ar_x,h=4)$mean, x.ts.valid)
MAPE ingenuo = MAPE estacionalidad = MAPE arima = 0.4549898 MAPE modelo inicial = 0.7039424
8
4. Asume que la serie representa la demanda de una empresa de moda textil (en euros). La producción de
la empresa se debe ajustar con antelación y se hace en función de la previsión de ventas. Si la previsión
es superior a las ventas, habrá un exceso de stock que pierde valor porque se tiene que vender rebajado
en la propia tienda o en outlets. Si la previsión se queda corta, nos faltará mercancía y no podremos
ingresar tanto como hubiéramos podido. Los costes de producción son del 60% del PVP. Además,
hay 100.000 euros al trimestre en costes fijos. Teniendo en cuenta esta aplicación, ¿qué modelo genera
mejor pronóstico de los datos de validación? Define una función que calcule los beneficios esperados
tomando como entrada las series predicha y real.
sum(beneficios(x.ts.train, x.ts.lm$fitted.values))
## [1] 217798.5
sum(beneficios(x.ts.train, mejorado))
## [1] 222867.6
## [1] 104139.2
## [1] 162321.2
5. ¿Elegirías el mismo modelo si los costes de producción fueran el 50% del PVP?
sum(beneficios(x.ts.train, x.ts.lm$fitted.values))
## [1] 878704.7
sum(beneficios(x.ts.train, mejorado))
## [1] 883056.1
## [1] 733548
9
sum(beneficios(x.ts.train, modelo_estacionalidad$fitted), na.rm=TRUE)
## [1] 702901.5
10