Vamos utilizar o prophet para fazer predições das despesas para 2020 por ação.
# predicao orcamento 2020 - dados mensais
# modelo ARIMA e prophet
# kassio camelo ferreira da silva - proplan - ufersa
library(readxl)
library(tidyr)
library(dplyr)
library(plyr)
library(TSA)
library(prophet)
library(lubridate)
library(ggplot2)
library(forecast)
library(ggQC)
# Abrindo os dados --------------------------------------------------------
mensal <- read_excel("G:/Drives compartilhados/ESTATISTICA/predicao_orcamento/mensal.xlsx")
# funcao -----------------------------------------------------------------
gera_prophet <- function(nome_acao){
# agrupar por mês
mensal %>% filter(., acao==nome_acao) %>% select(data, despesas) %>%
as.data.frame %>% group_by(., data) %>%
summarise_all(list(sum)) -> dados_mensal
# converter as datas
dados_mensal$data <- parse_date_time(dados_mensal$data, orders = c("bdy", "bY"))
# ordenar a série temporal pelas datas
dados_mensal <- arrange(dados_mensal, data)
colnames(dados_mensal) <- c("ds", "y")
m <- prophet(dados_mensal, seasonality.mode = 'multiplicative')
future <- make_future_dataframe(m, periods = 12, freq = "month")
fcst <- predict(m, future)
plot(m, fcst)
#prophet_plot_components(m, fcst)
dados_mensal$y[1:12] %>% sum
dados_mensal$y[13:24] %>% sum
dados_mensal$y[25:36] %>% sum
dados_mensal$y[37:48] %>% sum
dados_mensal$y[49:60] %>% sum
# predicoes para o ano que vem
return(list(predicao = fcst$yhat[(length(fcst$yhat)-12):length(fcst$yhat)] %>% sum, m=m, fcst= fcst))
}# 0181 --------------------------------------------------------------------
acao.0181 = gera_prophet("0181")
dyplot.prophet(acao.0181$m, acao.0181$fcst)## [1] 38939487
# 09HB --------------------------------------------------------------------
acao.09HB = gera_prophet("09HB")
dyplot.prophet(acao.09HB$m, acao.09HB$fcst)## [1] 34303227
# 2004 --------------------------------------------------------------------
acao.2004 = gera_prophet("2004")
dyplot.prophet(acao.2004$m, acao.2004$fcst)## [1] 3699049
# 20TP --------------------------------------------------------------------
acao.20TP = gera_prophet("20TP")
dyplot.prophet(acao.20TP$m, acao.20TP$fcst)## [1] 195955491
# 212B --------------------------------------------------------------------
acao.212B = gera_prophet("212B")
dyplot.prophet(acao.212B$m, acao.212B$fcst)## [1] 10401823
As demais ações apresentam dados até 2017 (ações 00M1, 2010, 2011, 2012 e 216H) ou poucas observações (ação 005).
As previsões para o ano de 2020 são apresentadas na tabela abaixo: