chooseCRANmirror(ind = 1)
install.packages("tidyr")
## Installing package into 'C:/Users/massi/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'tidyr' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'tidyr'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\massi\AppData\Local\R\win-library\4.3\00LOCK\tidyr\libs\x64\tidyr.dll
## to C:\Users\massi\AppData\Local\R\win-library\4.3\tidyr\libs\x64\tidyr.dll:
## Permission denied
## Warning: restored 'tidyr'
##
## The downloaded binary packages are in
## C:\Users\massi\AppData\Local\Temp\RtmpiYs6oC\downloaded_packages
install.packages("readxl")
## Installing package into 'C:/Users/massi/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'readxl' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'readxl'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\massi\AppData\Local\R\win-library\4.3\00LOCK\readxl\libs\x64\readxl.dll
## to C:\Users\massi\AppData\Local\R\win-library\4.3\readxl\libs\x64\readxl.dll:
## Permission denied
## Warning: restored 'readxl'
##
## The downloaded binary packages are in
## C:\Users\massi\AppData\Local\Temp\RtmpiYs6oC\downloaded_packages
install.packages("prophet")
## Installing package into 'C:/Users/massi/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'prophet' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'prophet'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\massi\AppData\Local\R\win-library\4.3\00LOCK\prophet\libs\x64\prophet.dll
## to C:\Users\massi\AppData\Local\R\win-library\4.3\prophet\libs\x64\prophet.dll:
## Permission denied
## Warning: restored 'prophet'
##
## The downloaded binary packages are in
## C:\Users\massi\AppData\Local\Temp\RtmpiYs6oC\downloaded_packages
install.packages("dplyr")
## Installing package into 'C:/Users/massi/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'dplyr' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'dplyr'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\massi\AppData\Local\R\win-library\4.3\00LOCK\dplyr\libs\x64\dplyr.dll
## to C:\Users\massi\AppData\Local\R\win-library\4.3\dplyr\libs\x64\dplyr.dll:
## Permission denied
## Warning: restored 'dplyr'
##
## The downloaded binary packages are in
## C:\Users\massi\AppData\Local\Temp\RtmpiYs6oC\downloaded_packages
install.packages("ggplot2")
## Installing package into 'C:/Users/massi/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'ggplot2' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\massi\AppData\Local\Temp\RtmpiYs6oC\downloaded_packages
install.packages("Metrics")
## Installing package into 'C:/Users/massi/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'Metrics' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\massi\AppData\Local\Temp\RtmpiYs6oC\downloaded_packages
install.packages("caret")
## Installing package into 'C:/Users/massi/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'caret' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'caret'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\massi\AppData\Local\R\win-library\4.3\00LOCK\caret\libs\x64\caret.dll
## to C:\Users\massi\AppData\Local\R\win-library\4.3\caret\libs\x64\caret.dll:
## Permission denied
## Warning: restored 'caret'
##
## The downloaded binary packages are in
## C:\Users\massi\AppData\Local\Temp\RtmpiYs6oC\downloaded_packages
library (readxl)
## Warning: package 'readxl' was built under R version 4.3.3
library(tidyr)
## Warning: package 'tidyr' was built under R version 4.3.3
library(prophet)
## Warning: package 'prophet' was built under R version 4.3.3
## Loading required package: Rcpp
## Loading required package: rlang
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(Metrics)
## Warning: package 'Metrics' was built under R version 4.3.3
##
## Attaching package: 'Metrics'
## The following object is masked from 'package:rlang':
##
## ll
library(caret)
## Warning: package 'caret' was built under R version 4.3.3
## Loading required package: lattice
##
## Attaching package: 'caret'
## The following objects are masked from 'package:Metrics':
##
## precision, recall
setwd("C:/Users/massi/OneDrive/Documents/MASTER BIG DATA E INTELIGENCIA DE NEGOCIOS/TFM")
Data <- read_excel("Base de Datos 18-23 (AFP).xlsx")
print(Data)
## # A tibble: 72 × 8
## MES ATLÁNTICO `SCOTIA CRECER` `JMMB-BDI` POPULAR RESERVAS
## <dttm> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2018-01-01 00:00:00 0.124 0.105 0.0915 0.108 0.110
## 2 2018-02-01 00:00:00 0.125 0.107 0.0884 0.111 0.114
## 3 2018-03-01 00:00:00 0.117 0.103 0.0888 0.106 0.110
## 4 2018-04-01 00:00:00 0.115 0.103 0.0897 0.107 0.110
## 5 2018-05-01 00:00:00 0.113 0.101 0.0905 0.104 0.108
## 6 2018-06-01 00:00:00 0.105 0.0981 0.0919 0.1 0.104
## 7 2018-07-01 00:00:00 0.103 0.0978 0.092 0.0993 0.103
## 8 2018-08-01 00:00:00 0.0971 0.0944 0.0935 0.0946 0.0995
## 9 2018-09-01 00:00:00 0.0953 0.0929 0.0971 0.0922 0.0965
## 10 2018-10-01 00:00:00 0.0896 0.0884 0.103 0.0882 0.0905
## # ℹ 62 more rows
## # ℹ 2 more variables: ROMANA <dbl>, SIEMBRA <dbl>
Data$MES <- as.Date(Data$MES, format = "%m/%d/%Y")
str(Data)
## tibble [72 × 8] (S3: tbl_df/tbl/data.frame)
## $ MES : Date[1:72], format: "2018-01-01" "2018-02-01" ...
## $ ATLÁNTICO : num [1:72] 0.123 0.125 0.117 0.115 0.113 ...
## $ SCOTIA CRECER: num [1:72] 0.105 0.107 0.103 0.103 0.101 ...
## $ JMMB-BDI : num [1:72] 0.0915 0.0884 0.0888 0.0897 0.0905 ...
## $ POPULAR : num [1:72] 0.108 0.111 0.106 0.107 0.104 ...
## $ RESERVAS : num [1:72] 0.11 0.114 0.11 0.11 0.108 ...
## $ ROMANA : num [1:72] 0.113 0.112 0.108 0.107 0.105 ...
## $ SIEMBRA : num [1:72] 0.115 0.12 0.117 0.117 0.114 ...
AFP_Atlantico <- Data[, c("MES", "ATLÁNTICO")]
AFP_Atlantico <- AFP_Atlantico %>% rename(Rentabilidad = ATLÁNTICO)
datos_prophet_AFP_Atlantico <- data.frame(ds = AFP_Atlantico$MES, y = AFP_Atlantico$Rentabilidad)
train_AFP_Atlantico <- subset(datos_prophet_AFP_Atlantico, ds < as.Date("2023-01-01"))
test_AFP_Atlantico <- subset(datos_prophet_AFP_Atlantico, ds >= as.Date("2023-01-01"))
modelo_prophet_Atlantico <- prophet(train_AFP_Atlantico)
## Disabling weekly seasonality. Run prophet with weekly.seasonality=TRUE to override this.
## Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.
futuro_Atlantico <- make_future_dataframe(modelo_prophet_Atlantico, periods = nrow(test_AFP_Atlantico))
predicciones_Atlantico <- predict(modelo_prophet_Atlantico, futuro_Atlantico)
y_true <- test_AFP_Atlantico$y
y_pred <- predicciones_Atlantico$yhat
rmse_value_Atlantico <- rmse(y_true, y_pred)
mae_value_Atlantico <- mae(y_true, y_pred)
mape_value_Atlantico <- mape(y_true, y_pred) *100
cat("RMSE: ", rmse_value_Atlantico, "\n")
## RMSE: 0.02507188
cat("MAE: ", mae_value_Atlantico, "\n")
## MAE: 0.02345524
cat("MAPE: ", mape_value_Atlantico, "%\n")
## MAPE: 32.21294 %
prophet_plot_Atlantico <- plot(modelo_prophet_Atlantico, predicciones_Atlantico)
print(prophet_plot_Atlantico)
test_AFP_Atlantico$ds <- as.POSIXct(test_AFP_Atlantico$ds)
prophet_plot_Atlantico$ds <- as.POSIXct(prophet_plot_Atlantico$ds)
prophet_plot_Atlantico +
geom_line(data = test_AFP_Atlantico, aes(x = ds, y = y), col = "red", lty = 2) +
labs(title = "Modelo AFP Atlántico", x = "Tiempo", y = "Rentabilidad") +
theme_minimal()
## Modelo AFP Crecer
AFP_Crecer <- Data[, c("MES", "SCOTIA CRECER")]
AFP_Crecer <- AFP_Crecer %>%rename(Rentabilidad = `SCOTIA CRECER`)
datos_prophet_AFP_Crecer <- data.frame(ds = AFP_Crecer$MES, y = AFP_Crecer$Rentabilidad)
train_AFP_Crecer <- subset(datos_prophet_AFP_Crecer, ds < as.Date("2023-01-01"))
test_AFP_Crecer <- subset(datos_prophet_AFP_Crecer, ds >= as.Date("2023-01-01"))
modelo_prophet_Crecer <- prophet(train_AFP_Crecer)
## Disabling weekly seasonality. Run prophet with weekly.seasonality=TRUE to override this.
## Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.
futuro_Crecer <- make_future_dataframe(modelo_prophet_Crecer, periods = nrow(test_AFP_Crecer))
predicciones_Crecer <- predict(modelo_prophet_Crecer, futuro_Crecer)
y_true <- test_AFP_Crecer$y
y_pred<- predicciones_Crecer$yhat
rmse_value_Crecer <- rmse(y_true, y_pred)
mae_value_Crecer <- mae(y_true, y_pred)
mape_value_Crecer<- mape(y_true, y_pred) *100
cat("RMSE: ", rmse_value_Crecer, "\n")
## RMSE: 0.04319033
cat("MAE: ", mae_value_Crecer, "\n")
## MAE: 0.03505047
cat("MAPE: ", mape_value_Crecer, "%\n")
## MAPE: 50.19683 %
prophet_plot_Crecer <- plot(modelo_prophet_Crecer, predicciones_Crecer)
print(prophet_plot_Crecer)
test_AFP_Crecer$ds <- as.POSIXct(test_AFP_Crecer$ds)
prophet_plot_Crecer$ds <- as.POSIXct(prophet_plot_Crecer$ds)
prophet_plot_Crecer +
geom_line(data = test_AFP_Crecer, aes(x = ds, y = y), col = "red", lty = 2) +
labs(title = "Modelo AFP Scotia Crecer", x = "Tiempo", y = "Rentabilidad") +
theme_minimal()
AFP_JMMB <- Data[, c("MES", "JMMB-BDI")]
AFP_JMMB <- AFP_JMMB %>% rename(Rentabilidad = `JMMB-BDI`)
datos_prophet_AFP_JMMB <- data.frame(ds = AFP_JMMB$MES, y = AFP_JMMB$Rentabilidad)
train_AFP_JMMB <- subset(datos_prophet_AFP_JMMB, ds < as.Date("2023-01-01"))
test_AFP_JMMB <- subset(datos_prophet_AFP_JMMB, ds >= as.Date("2023-01-01"))
modelo_prophet_JMMB <- prophet(train_AFP_JMMB)
## Disabling weekly seasonality. Run prophet with weekly.seasonality=TRUE to override this.
## Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.
futuro_JMMB <- make_future_dataframe(modelo_prophet_JMMB, periods = nrow(test_AFP_JMMB))
predicciones_JMMB <- predict(modelo_prophet_JMMB, futuro_JMMB)
y_true <- test_AFP_JMMB$y
y_pred <- predicciones_JMMB$yhat
rmse_value_JMMB <- rmse(y_true, y_pred)
mae_value_JMMB <- mae(y_true, y_pred)
mape_value_JMMB <- mape(y_true, y_pred) *100
cat("RMSE: ", rmse_value_JMMB, "\n")
## RMSE: 0.01593536
cat("MAE: ", mae_value_JMMB, "\n")
## MAE: 0.01286068
cat("MAPE: ", mape_value_JMMB, "%\n")
## MAPE: 14.50026 %
prophet_plot_JMMB <- plot(modelo_prophet_JMMB, predicciones_JMMB)
print(prophet_plot_JMMB)
test_AFP_JMMB$ds <- as.POSIXct(test_AFP_JMMB$ds)
prophet_plot_JMMB$ds <- as.POSIXct(prophet_plot_JMMB$ds)
prophet_plot_JMMB +
geom_line(data = test_AFP_JMMB, aes(x = ds, y = y), col = "red", lty = 2) +
labs(title = "Modelo AFP JMMB-BDI", x = "Tiempo", y = "Rentabilidad") +
theme_minimal()
## Modelo AFP POPULAR
AFP_Popular <- Data[, c("MES", "POPULAR")]
AFP_Popular <- AFP_Popular%>% rename(Rentabilidad = POPULAR)
datos_prophet_AFP_Popular <- data.frame(ds = AFP_Popular$MES, y = AFP_Popular$Rentabilidad)
train_AFP_Popular <- subset(datos_prophet_AFP_Popular, ds < as.Date("2023-01-01"))
test_AFP_Popular <- subset(datos_prophet_AFP_Popular, ds >= as.Date("2023-01-01"))
modelo_prophet_Popular <- prophet(train_AFP_Popular)
## Disabling weekly seasonality. Run prophet with weekly.seasonality=TRUE to override this.
## Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.
futuro_Popular <- make_future_dataframe(modelo_prophet_Popular, periods = nrow(test_AFP_Popular))
predicciones_Popular <- predict(modelo_prophet_Popular, futuro_Popular)
y_true <- test_AFP_Popular$y
y_pred <- predicciones_Popular$yhat
rmse_value_Popular <- rmse(y_true, y_pred)
mae_value_Popular <- mae(y_true, y_pred)
mape_value_Popular <- mape(y_true, y_pred) *100
cat("RMSE: ", rmse_value_Popular, "\n")
## RMSE: 0.03436393
cat("MAE: ", mae_value_Popular, "\n")
## MAE: 0.02793296
cat("MAPE: ", mape_value_Popular, "%\n")
## MAPE: 41.88054 %
prophet_plot_Popular <- plot(modelo_prophet_Popular, predicciones_Popular)
print(prophet_plot_Popular)
test_AFP_Popular$ds <- as.POSIXct(test_AFP_Popular$ds)
prophet_plot_Popular$ds <- as.POSIXct(prophet_plot_Popular$ds)
prophet_plot_Popular +
geom_line(data = test_AFP_Popular, aes(x = ds, y = y), col = "red", lty = 2) +
labs(title = "Modelo AFP Popular", x = "Tiempo", y = "Rentabilidad") +
theme_minimal()
## Modelo AFP Reservas
AFP_Reservas <- Data[, c("MES", "RESERVAS")]
AFP_Reservas <- AFP_Reservas %>% rename(Rentabilidad = RESERVAS)
datos_prophet_AFP_Reservas <- data.frame(ds = AFP_Reservas$MES, y = AFP_Reservas$Rentabilidad)
train_AFP_Reservas <- subset(datos_prophet_AFP_Reservas, ds < as.Date("2023-01-01"))
test_AFP_Reservas <- subset(datos_prophet_AFP_Reservas, ds >= as.Date("2023-01-01"))
modelo_prophet_Reservas <- prophet(train_AFP_Reservas)
## Disabling weekly seasonality. Run prophet with weekly.seasonality=TRUE to override this.
## Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.
futuro_Reservas <- make_future_dataframe(modelo_prophet_Reservas, periods = nrow(test_AFP_Reservas))
predicciones_Reservas <- predict(modelo_prophet_Reservas, futuro_Reservas)
y_true <- test_AFP_Reservas$y
y_pred <- predicciones_Reservas$yhat
rmse_value_Reservas <- rmse(y_true, y_pred)
mae_value_Reservas <- mae(y_true, y_pred)
mape_value_Reservas <- mape(y_true, y_pred) *100
cat("RMSE: ", rmse_value_Reservas, "\n")
## RMSE: 0.02237008
cat("MAE: ", mae_value_Reservas, "\n")
## MAE: 0.01853208
cat("MAPE: ", mape_value_Reservas, "%\n")
## MAPE: 25.30668 %
prophet_plot_Reservas <- plot(modelo_prophet_Reservas, predicciones_Reservas)
print(prophet_plot_Reservas)
test_AFP_Reservas$ds <- as.POSIXct(test_AFP_Reservas$ds)
prophet_plot_Reservas$ds <- as.POSIXct(prophet_plot_Reservas$ds)
prophet_plot_Reservas+
geom_line(data = test_AFP_Reservas, aes(x = ds, y = y), col = "red", lty = 2) +
labs(title = "Modelo AFP Reservas", x = "Tiempo", y = "Rentabilidad") +
theme_minimal()
## Modelo AFP Romana
AFP_Romana <- Data[, c("MES", "ROMANA")]
AFP_Romana <- AFP_Romana %>% rename(Rentabilidad = ROMANA)
datos_prophet_AFP_Romana <- data.frame(ds = AFP_Romana$MES, y = AFP_Romana$Rentabilidad)
train_AFP_Romana <- subset(datos_prophet_AFP_Romana, ds < as.Date("2023-01-01"))
test_AFP_Romana <- subset(datos_prophet_AFP_Romana, ds >= as.Date("2023-01-01"))
modelo_prophet_Romana <- prophet(train_AFP_Romana)
## Disabling weekly seasonality. Run prophet with weekly.seasonality=TRUE to override this.
## Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.
futuro_Romana <- make_future_dataframe(modelo_prophet_Romana, periods = nrow(test_AFP_Romana))
predicciones_Romana <- predict(modelo_prophet_Romana, futuro_Romana)
y_true <- test_AFP_Romana$y
y_pred <- predicciones_Romana$yhat
rmse_value_Reservas <- rmse(y_true, y_pred)
mae_value_Reservas <- mae(y_true, y_pred)
mape_value_Reservas <- mape(y_true, y_pred) *100
cat("RMSE: ", rmse_value_Reservas, "\n")
## RMSE: 0.03485193
cat("MAE: ", mae_value_Reservas, "\n")
## MAE: 0.03255067
cat("MAPE: ", mape_value_Reservas, "%\n")
## MAPE: 47.7113 %
prophet_plot_Romana <- plot(modelo_prophet_Romana, predicciones_Romana)
print(prophet_plot_Romana)
test_AFP_Romana$ds <- as.POSIXct(test_AFP_Romana$ds)
prophet_plot_Romana$ds <- as.POSIXct(prophet_plot_Romana$ds)
prophet_plot_Romana+
geom_line(data = test_AFP_Romana, aes(x = ds, y = y), col = "red", lty = 2) +
labs(title = "Modelo AFP Romana", x = "Tiempo", y = "Rentabilidad") +
theme_minimal()
## Modelo AFP Siembra
AFP_Siembra <- Data[, c("MES", "SIEMBRA")]
AFP_Siembra <- AFP_Siembra %>% rename(Rentabilidad = SIEMBRA)
datos_prophet_AFP_Siembra <- data.frame(ds = AFP_Siembra$MES, y = AFP_Siembra$Rentabilidad)
train_AFP_Siembra <- subset(datos_prophet_AFP_Siembra, ds < as.Date("2023-01-01"))
test_AFP_Siembra <- subset(datos_prophet_AFP_Siembra, ds >= as.Date("2023-01-01"))
modelo_prophet_Siembra <- prophet(train_AFP_Siembra)
## Disabling weekly seasonality. Run prophet with weekly.seasonality=TRUE to override this.
## Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.
futuro_Siembra <- make_future_dataframe(modelo_prophet_Siembra, periods = nrow(test_AFP_Siembra))
predicciones_Siembra <- predict(modelo_prophet_Siembra, futuro_Siembra)
y_true <- test_AFP_Siembra$y
y_pred <- predicciones_Siembra$yhat
rmse_value_Siembra <- rmse(y_true, y_pred)
mae_value_Siembra <- mae(y_true, y_pred)
mape_value_Siembra <- mape(y_true, y_pred) *100
cat("RMSE: ", rmse_value_Siembra, "\n")
## RMSE: 0.03288557
cat("MAE: ", mae_value_Siembra, "\n")
## MAE: 0.02593149
cat("MAPE: ", mape_value_Siembra, "%\n")
## MAPE: 35.35854 %
prophet_plot_Siembra <- plot(modelo_prophet_Siembra, predicciones_Siembra)
print(prophet_plot_Siembra)
test_AFP_Siembra$ds <- as.POSIXct(test_AFP_Siembra$ds)
prophet_plot_Siembra$ds <- as.POSIXct(prophet_plot_Siembra$ds)
prophet_plot_Siembra+
geom_line(data = test_AFP_Siembra, aes(x = ds, y = y), col = "red", lty = 2) +
labs(title = "Modelo AFP Siembra", x = "Tiempo", y = "Rentabilidad") +
theme_minimal()
```