“Previsão de Vendas”
Ana Clara e Livânia - Engenharia civil 2023
O código começa carregando várias bibliotecas necessárias para análises de dados, como dplyr, forecast, fpp, fpp2, tseries, patchwork, xts, zoo, tibble, e readxl.
library(dplyr)
##
## 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(forecast) # análises
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(tseries)
library(xts)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## ######################### Warning from 'xts' package ##########################
## # #
## # The dplyr lag() function breaks how base R's lag() function is supposed to #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or #
## # source() into this session won't work correctly. #
## # #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop #
## # dplyr from breaking base R's lag() function. #
## # #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning. #
## # #
## ###############################################################################
##
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
##
## first, last
library(zoo)
library(readxl)
library(ggplot2)
Os dados de vendas são lidos a partir de um arquivo Excel chamado “Vendas.xlsx” usando a função read_excel do pacote readxl. Os dados são então visualizados com a função View.
Vendas <- read_excel("/cloud/project/Vendas.xlsx")
Criação de uma tabela venda_consolidada que agrupa as vendas mensais a partir dos dados originais, somando as vendas diárias para cada ano e mês.
venda_consolidada <- Vendas %>%
group_by(ano, mes) %>%
summarise(venda_mensal = sum(venda_diaria)) %>%
arrange(ano, mes)
## `summarise()` has grouped output by 'ano'. You can override using the `.groups`
## argument.
Define o cálculo para encargos sobre as vendas.
venda_consolidada$venda_mensal <- venda_consolidada$venda_mensal * 1.28
Os dados consolidados de vendas são convertidos em um objeto de série temporal (ts) com frequência mensal (frequency = 12) a partir do ano de 2017.
ts_vendas <- ts(venda_consolidada$venda_mensal, frequency = 12,start = c(2017,1))
Um gráfico de linha é gerado para visualizar a série temporal de vendas mensais.
plot(ts_vendas)
Utiliza a função auto.arima do pacote forecast para ajustar automaticamente um modelo SARIMA aos dados de vendas.
modelo_sarima <- auto.arima(ts_vendas)
Ajusta um modelo ETS aos dados de vendas
modelo_ets <- ets(ts_vendas)
Ajusta automaticamente um modelo ARIMA aos dados de vendas
modelo_arima <- auto.arima(ts_vendas)
Faz uma previsão para os próximos 12 meses usando o modelo SARIMA ajustado.
previsao <- forecast(modelo_sarima, h = 12)
Faz uma previsão para os próximos 12 meses usando o modelo ETS.
previsao_ets <- forecast(modelo_ets, h = 12)
Fazer previsão para os próximos 12 meses usando o modelo ARIMA
previsao_arima <- forecast(modelo_arima, h = 12)
Um gráfico de linha é gerado para visualizar a série temporal de vendas mensais. Gera um gráfico de linha que mostra a série temporal de vendas, juntamente com a previsão gerada pelo modelo SARIMA. Em resumo, o código carrega dados de vendas, realiza manipulações e cálculos, cria uma série temporal, ajusta um modelo SARIMA automaticamente, faz previsões futuras e gera gráficos para visualização. A função calc_pag_realizados está definida, mas não é utilizada no código fornecido.
autoplot(previsao) +
autolayer(ts_vendas, series = "Vendas") +
labs(title = "Previsão de Vendas com Modelo SARIMA",
y = "Vendas",
x = "Data")
Gerar gráfico com a série temporal de vendas e as previsões dos modelos ARIMA e ETS
autoplot(previsao_arima) +
autolayer(ts_vendas, series = "Vendas") +
labs(title = "Previsão de Vendas com Modelos ARIMA e ETS",
y = "Vendas",
x = "Data")
autoplot(previsao_arima) +
autolayer(previsao_ets, series = "Previsão ETS") +
labs(title = "Previsão de Vendas com Modelos ARIMA e ETS",
y = "Vendas",
x = "Data")