estimación de demanda usando r · visualizacióndedatos(nuevamente) jan 01 2017 jan 22 2017 feb 12...

33
Estimación de Demanda Usando R Pachá 2019-09-27 Pachá Estimación de Demanda Usando R 2019-09-27 1/1

Upload: others

Post on 08-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Estimación de Demanda Usando R

Pachá

2019-09-27

Pachá Estimación de Demanda Usando R 2019-09-27 1 / 1

Page 2: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Importar datos

Archivo bev.csv

Datos: Estimación Producción de cerveza en EEUUInicio de la serie: 19 de enero de 2014Frecuencia: SemanalCantidad de observaciones: 176¿Cómo lo llevo a un formato adecuado?

Pachá Estimación de Demanda Usando R 2019-09-27 2 / 1

Page 3: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Importar datos

library(readr)library(xts)

bev <- read_csv("bev.csv")dates <- seq(as.Date("2014-01-19"),length = 176, by = "weeks")bev_xts <- xts(bev, order.by = dates)

Pachá Estimación de Demanda Usando R 2019-09-27 3 / 1

Page 4: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Visualizar datos

En los datos MET se refiere a área metropolitanaHigh, end y sp (especialidad) se refieren a las líneas de producto¿Qué ocurre con las ventas en el área metropolitana?

Pachá Estimación de Demanda Usando R 2019-09-27 4 / 1

Page 5: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Visualizar datos

MET_hi <- bev_xts[,"MET.hi"]MET_lo <- bev_xts[,"MET.lo"]MET_sp <- bev_xts[,"MET.sp"]MET_t <- MET_hi + MET_lo + MET_spplot(MET_t)

Pachá Estimación de Demanda Usando R 2019-09-27 5 / 1

Page 6: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Visualizar datos

Jan 19 2014 Jul 06 2014 Jan 04 2015 Jul 05 2015 Jan 03 2016 Jul 03 2016 Dec 25 2016

MET_t 2014−01−19 / 2017−05−28

5000

6000

7000

8000

9000

5000

6000

7000

8000

9000

Pachá Estimación de Demanda Usando R 2019-09-27 6 / 1

Page 7: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

auto.arima()

Proporciona un modelo de partidaSobre los datos puedo definir un conjunto de validación (e.g. 2017)

Pachá Estimación de Demanda Usando R 2019-09-27 7 / 1

Page 8: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

auto.arima()

library(forecast)

MET_hi <- bev_xts[,"MET.hi"]MET_lo <- bev_xts[,"MET.lo"]MET_sp <- bev_xts[,"MET.sp"]MET_t <- MET_hi + MET_lo + MET_spMET_t <- xts(MET_t$MET.hi, order.by = dates)MET_t_train <- MET_t[index(MET_t) < "2017-01-01"]MET_t_valid <- MET_t[index(MET_t) >= "2017-01-01"]

Pachá Estimación de Demanda Usando R 2019-09-27 8 / 1

Page 9: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

auto.arima()

## Series: MET_t_train## ARIMA(1,0,0) with non-zero mean#### Coefficients:## ar1 mean## 0.6706 6252.8350## s.e. 0.0594 181.7488#### sigma^2 estimated as 574014: log likelihood=-1238.86## AIC=2483.72 AICc=2483.88 BIC=2492.83

Pachá Estimación de Demanda Usando R 2019-09-27 9 / 1

Page 10: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Interpretación de auto.arima()

El modelo entrega información respecto del comportamiento de losdatosEn este caso nos dice que un proceso AR 1 describe mejor la serie

Pachá Estimación de Demanda Usando R 2019-09-27 10 / 1

Page 11: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Interpretación de auto.arima()

MET_t_model <- auto.arima(MET_t_train)MET_t_model

## Series: MET_t_train## ARIMA(1,0,0) with non-zero mean#### Coefficients:## ar1 mean## 0.6706 6252.8350## s.e. 0.0594 181.7488#### sigma^2 estimated as 574014: log likelihood=-1238.86## AIC=2483.72 AICc=2483.88 BIC=2492.83

Pachá Estimación de Demanda Usando R 2019-09-27 11 / 1

Page 12: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

forecast()

Con lo anterior puedo hacer una proyecciónCon los datos de entrenamiento puedo hacer una estimación a cincomeses (20 semanas) y contrastar

Pachá Estimación de Demanda Usando R 2019-09-27 12 / 1

Page 13: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

forecast()

forecast_MET_t <- forecast(MET_t_model, h = 22)plot(forecast_MET_t)

Pachá Estimación de Demanda Usando R 2019-09-27 13 / 1

Page 14: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

forecast()Forecasts from ARIMA(1,0,0) with non−zero mean

0 200 400 600 800 1000 1200

5000

6000

7000

8000

9000

Pachá Estimación de Demanda Usando R 2019-09-27 14 / 1

Page 15: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

MAPE y MAE

Error absoluto con respecto a la media (MAE)

1T

n∑i=1|Yt − Yt |

Porcentaje de error absoluto con respecto a la media (MAPE)

100T

n∑i=1

∣∣∣∣∣Yt − YtYt

∣∣∣∣∣

Pachá Estimación de Demanda Usando R 2019-09-27 15 / 1

Page 16: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

MAPE y MAE

for_MET_t <- as.numeric(forecast_MET_t$mean)v_MET_t <- as.numeric(MET_t_valid)

MAE <- mean(abs(for_MET_t - v_MET_t))MAPE <- 100*mean(abs((for_MET_t - v_MET_t) /v_MET_t))

Pachá Estimación de Demanda Usando R 2019-09-27 16 / 1

Page 17: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

MAPE y MAE

print(MAE)

## [1] 898.8403print(MAPE)

## [1] 17.10332

La predicción falla en torno a un 20%¿Qué tanto difiere de los datos de validación?

Pachá Estimación de Demanda Usando R 2019-09-27 17 / 1

Page 18: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Visualización de datos (nuevamente)

for_dates <- seq(as.Date("2017-01-01"), length = 22,by = "weeks")

for_MET_t_xts <- xts(forecast_MET_t$mean,order.by = for_dates)

plot(MET_t_valid, main = 'Prediccion vs Validacion',ylim = c(4000, 8500))

lines(for_MET_t_xts, col = "blue")

Pachá Estimación de Demanda Usando R 2019-09-27 18 / 1

Page 19: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Visualización de datos (nuevamente)

Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017

Prediccion vs Validacion 2017−01−01 / 2017−05−28

5000

6000

7000

8000

5000

6000

7000

8000

Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017

Prediccion vs Validacion 2017−01−01 / 2017−05−28

5000

6000

7000

8000

5000

6000

7000

8000

Pachá Estimación de Demanda Usando R 2019-09-27 19 / 1

Page 20: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Visualización de datos (nuevamente)

Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017

Prediccion vs Validacion 2017−01−01 / 2017−05−28

5000

6000

7000

8000

5000

6000

7000

8000

Pachá Estimación de Demanda Usando R 2019-09-27 20 / 1

Page 21: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Intervalo de confianza

La estimación automáticamente proporciona los intervalos de confianzaal 80% y 95%Se pueden extraer estos elementos de igual modo que seleccionandocolumnas

Pachá Estimación de Demanda Usando R 2019-09-27 21 / 1

Page 22: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Intervalo de confianza

plot(MET_t_valid, main = 'Prediccion vs Validacion',ylim = c(4000, 8500))lines(for_MET_t_xts, col = "blue")

lower <- xts(forecast_MET_t$lower[,"95%"],order.by = for_dates)

upper <- xts(forecast_MET_t$upper[,"95%"],order.by = for_dates)

lines(lower, col = "blue", lty = "dashed")lines(upper, col = "blue", lty = "dashed")

Pachá Estimación de Demanda Usando R 2019-09-27 22 / 1

Page 23: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Intervalo de confianza

Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017

Prediccion vs Validacion 2017−01−01 / 2017−05−28

5000

6000

7000

8000

5000

6000

7000

8000

Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017

Prediccion vs Validacion 2017−01−01 / 2017−05−28

5000

6000

7000

8000

5000

6000

7000

8000

Pachá Estimación de Demanda Usando R 2019-09-27 23 / 1

Page 24: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Intervalo de confianza

Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017

Prediccion vs Validacion 2017−01−01 / 2017−05−28

5000

6000

7000

8000

5000

6000

7000

8000

Pachá Estimación de Demanda Usando R 2019-09-27 24 / 1

Page 25: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Intervalo de confianza

Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017

Prediccion vs Validacion 2017−01−01 / 2017−05−28

5000

6000

7000

8000

5000

6000

7000

8000

Pachá Estimación de Demanda Usando R 2019-09-27 25 / 1

Page 26: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Intervalo de confianza

Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017

Prediccion vs Validacion 2017−01−01 / 2017−05−28

5000

6000

7000

8000

5000

6000

7000

8000

Pachá Estimación de Demanda Usando R 2019-09-27 26 / 1

Page 27: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Elasticidad de la demanda

Tomando las variables (unidimensionales) precio y cantidaddemandada, supongamos que la cantidad se puede escribir en funcióndel precio q = f (p).La elasticidad de q respecto de p corresponde a

ep,q = ∂q∂p ·

pq

Pachá Estimación de Demanda Usando R 2019-09-27 27 / 1

Page 28: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Elasticidad de la demanda

Si p aumenta en un 1% la variación porcentual en q(p) es

q(1, 01p)− q(p)q(p) · 100

Si f es diferenciable se puede aplicar el polinomio de Taylor de grado unopara obtener

q(1, 01p)− q(p)q(p) · 100 ≈ 0, 01p∂q(p)/∂p

q(p) · 100

Pachá Estimación de Demanda Usando R 2019-09-27 28 / 1

Page 29: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Elasticidad de la demanda

Para efectos de la calculabilidad de la elasticidad se puede definirg(p) = ln(q(p)) y entonces

ep,q = ∆ ln(q)∆ ln(p)

Pachá Estimación de Demanda Usando R 2019-09-27 29 / 1

Page 30: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Elasticidad de la demanda

El último resultado es extremadamente útil si uso un software como REn el caso de un modelo log-log, los coeficientes de regresióncorresponden a la elasticidadSi estimo los betas del modelo ln(qi ) = β0 + β1 ln(pi ) + εi , β1 esexactamente la elasticidad precio de la demanda¿Qué se puede decir respecto de la elasticidad precio de la gama altaen la zona metropolitana?

Pachá Estimación de Demanda Usando R 2019-09-27 30 / 1

Page 31: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Elasticidad de la demanda

bev_xts_train <- bev_xts[index(bev_xts) < "2017-01-01"]bev_xts_valid <- bev_xts[index(bev_xts) >= "2017-01-01"]

l_MET_hi_p <- as.vector(log(bev_xts_train[,"MET.hi.p"]))MET_hi_train <- MET_hi[1:length(l_MET_hi_p)]MET_hi_train <- data.frame(as.vector(log(MET_hi_train)),

l_MET_hi_p)colnames(MET_hi_train) <- c("log_sales", "log_price")

model_MET_hi <- lm(log_sales ~ log_price,data = MET_hi_train)

model_MET_hi

Pachá Estimación de Demanda Usando R 2019-09-27 31 / 1

Page 32: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

Elasticidad de la demanda

#### Call:## lm(formula = log_sales ~ log_price, data = MET_hi_train)#### Coefficients:## (Intercept) log_price## 13.977 -1.517

Pachá Estimación de Demanda Usando R 2019-09-27 32 / 1

Page 33: Estimación de Demanda Usando R · Visualizacióndedatos(nuevamente) Jan 01 2017 Jan 22 2017 Feb 12 2017 Mar 05 2017 Mar 26 2017 Apr 16 2017 May 07 2017 May 28 2017 Prediccion vs

This work is licensed as

Creative Commons Attribution-NonCommercial 4.0 International

To view a copy of this license visithttps://creativecommons.org/licenses/by-nc/4.0/

Pachá Estimación de Demanda Usando R 2019-09-27 33 / 1