Consumo de Cimento no Brasil

Author

Elton Soares

O Consumo do Cimento

A Série Consumo do Cimento no Brasil, tem a finalidade de analisar o comportamento ao longo dos meses e anos, analisando a correlação com outras fontes de dados como: Admissão na construção civil e desemprego no Brasil e aplicar métodos de previsão para anos vindouros.

Ao analisar essas áreas, mostramos como o consumo do cimento tem um impacto enorme na economia brasileira, já que a construção civil é a área que mais emprega no Brasil.

Ànalise dos dados

library(readxl)
library(dplyr)
library(visdat)
library(forecast)
library(seastests)
library(randtests)
library(tseries)
library(lmtest)
library(nortest)
library(knitr)
dados<-read.csv("C:/Users/elton/Downloads/consumo de cimento no brasil (1).csv", header=FALSE)
dados<- dados |> rename(c(Data=V1,Consumo=V2)) 
dados<- dados |> select(-c(V3))
dados<- dados[-1,]
dados$Consumo<- as.numeric(as.character(dados$Consumo))
vis_dat(dados)

summary(dados)
     Data              Consumo       
 Length:235         Min.   :2489405  
 Class :character   1st Qu.:3815035  
 Mode  :character   Median :4683733  
                    Mean   :4591333  
                    3rd Qu.:5412524  
                    Max.   :6634204  

Gráfico da Série

"consumo cimento"<- dados |> select(-Data)
attach(`consumo cimento`)
"consumo cimento br"<- ts(`consumo cimento`,frequency = 12,start = c(2003,1),end = c(2022,7))
forecast::autoplot(`consumo cimento br`,xlab = "Ano",ylab = "Consumo (Toneladas)",main="Consumo do Cimento no Brasil 2003/2022")

Teste de Tendência

\(H_0\) È aleatório

\(H_1\) Não é aleatório

cox.stuart.test(`consumo cimento br`)

    Cox Stuart test

data:  consumo cimento br
statistic = 87, n = 117, p-value = 1.283e-07
alternative hypothesis: non randomness

Tendência Crescente

\(H_0\) Não é crescente

\(H_1\) È crescente

cox.stuart.test(`consumo cimento br`,alternative = "right.sided")

    Cox Stuart test

data:  consumo cimento br
statistic = 87, n = 117, p-value = 6.414e-08
alternative hypothesis: increasing trend

Há evidência Estatística com 5% de significância e 95% de confiança que a Série apresenta tendência crescente.

Teste de Sazonalidade

\(H_0\) Não tem sazonalidade

\(H_1\) Tem sazonalidade

combined_test(`consumo cimento br`)
Test used:  WO 
 
Test statistic:  1 
P-value:  0 0 1.110223e-16
ggseasonplot(`consumo cimento br`)

Há evidência Estatística com 5% de significância e 95% de confiança que a Série apresenta sazonalidade.

Teste de estacionariedade

\(H_0\) Não é estacionária

\(H_1\) È estacionária

adf.test(`consumo cimento br`)

    Augmented Dickey-Fuller Test

data:  consumo cimento br
Dickey-Fuller = -1.7994, Lag order = 6, p-value = 0.6602
alternative hypothesis: stationary
pp.test(`consumo cimento br`)

    Phillips-Perron Unit Root Test

data:  consumo cimento br
Dickey-Fuller Z(alpha) = -22.438, Truncation lag parameter = 4, p-value
= 0.04024
alternative hypothesis: stationary

Há evidência estatística com 5% de significância e 95% de confiança que a série é não estacionária.

Diferença para tornar a série estacionária

ndiffs(`consumo cimento br`)
[1] 1

Gráfico de alto correlaço amostral

Acf(`consumo cimento br`, main = "Gráfico de correlação amostral", xlab = "Defasagem", ylab = "Autocorrelações")

grafico de alto correlaçao parcial

Pacf(`consumo cimento br`, main = "Gráfico de correlação Parcial", xlab = "Defasagem", ylab = "Autocorrelações")

ggtsdisplay(`consumo cimento br`)

Verificando serie

auto.arima(`consumo cimento br`)
Series: consumo cimento br 
ARIMA(2,1,0)(0,1,1)[12] 

Coefficients:
         ar1      ar2     sma1
      -0.696  -0.3699  -0.8395
s.e.   0.064   0.0639   0.0596

sigma^2 = 6.794e+10:  log likelihood = -3089.65
AIC=6187.3   AICc=6187.48   BIC=6200.91

ajustando o Modelo

fit <- astsa::sarima(`consumo cimento br`,p=2,d=1,q=0,P=0,D=1,Q=1,S=12)
initial  value 12.937066 
iter   2 value 12.677583
iter   3 value 12.489142
iter   4 value 12.483405
iter   5 value 12.482158
iter   6 value 12.481257
iter   7 value 12.480713
iter   8 value 12.480696
iter   9 value 12.480695
iter   9 value 12.480695
iter   9 value 12.480695
final  value 12.480695 
converged
initial  value 12.498737 
iter   2 value 12.498457
iter   3 value 12.498401
iter   4 value 12.498399
iter   5 value 12.498399
iter   5 value 12.498399
iter   5 value 12.498399
final  value 12.498399 
converged

fit$ttable
     Estimate     SE  t.value p.value
ar1   -0.6960 0.0640 -10.8661       0
ar2   -0.3699 0.0639  -5.7862       0
sma1  -0.8395 0.0596 -14.0903       0

Análise Diagnóstico dos Resíduos

residuos <- fit$fit$residuals
residuos_padronizados <- c((residuos - mean(residuos))/sd(residuos))
checkresiduals(residuos_padronizados)


    Ljung-Box test

data:  Residuals
Q* = 17.883, df = 10, p-value = 0.05698

Model df: 0.   Total lags used: 10

Teste de normalidade

\(H_0\) Tem normalidade

\(H_1\) Não tem normalidade

jarque.bera.test(residuos_padronizados)

    Jarque Bera Test

data:  residuos_padronizados
X-squared = 26.036, df = 2, p-value = 2.22e-06
lillie.test(residuos_padronizados)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  residuos_padronizados
D = 0.088289, p-value = 0.0001349

Há evidência estatística com 5% de significância e 95% de confiança que os erros não segue normalidade.

Como o modelo negou a suposição de normalidade, logo não podemos seguir com alguns modelos de previsão. Vamos utilizar Alisamento Exponencial

Alisamento Exponencial

fit2 <- HoltWinters(`consumo cimento br`, seasonal = "multiplicative")
fit2
Holt-Winters exponential smoothing with trend and multiplicative seasonal component.

Call:
HoltWinters(x = `consumo cimento br`, seasonal = "multiplicative")

Smoothing parameters:
 alpha: 0.2834238
 beta : 0.1003921
 gamma: 0.2116322

Coefficients:
             [,1]
a    5.256747e+06
b   -5.024995e+03
s1   1.097499e+00
s2   1.056415e+00
s3   1.064062e+00
s4   1.001946e+00
s5   8.943060e-01
s6   9.438850e-01
s7   8.900429e-01
s8   9.917546e-01
s9   9.579643e-01
s10  1.003100e+00
s11  1.011051e+00
s12  1.081409e+00
fit3<- HoltWinters(`consumo cimento br`, seasonal = "additive")
fit3
Holt-Winters exponential smoothing with trend and additive seasonal component.

Call:
HoltWinters(x = `consumo cimento br`, seasonal = "additive")

Smoothing parameters:
 alpha: 0.2695348
 beta : 0.09506498
 gamma: 0.2569866

Coefficients:
           [,1]
a   5259287.620
b     -4362.539
s1   492809.971
s2   292011.649
s3   312254.663
s4    -9443.779
s5  -571917.144
s6  -332625.016
s7  -556011.118
s8   -45943.636
s9  -215936.304
s10   27014.572
s11   41155.930
s12  413234.317

Predições

Método Multiplicativo

(prev_multiplicativo <- predict(fit2, n.ahead = 12, prediction.interval = T))
             fit     upr     lwr
Aug 2022 5763758 5984434 5543082
Sep 2022 5542688 5810798 5274578
Oct 2022 5577464 5896987 5257941
Nov 2022 5246840 5603001 4890678
Dec 2022 4678671 5055118 4302224
Jan 2023 4933307 5377649 4488964
Feb 2023 4647423 5121200 4173646
Mar 2023 5173535 5749433 4597636
Apr 2023 4992452 5605047 4379858
May 2023 5222636 5919148 4526124
Jun 2023 5258953 6019257 4498649
Jul 2023 5619485 6464246 4774723

Método aditivo

(prev_aditivo<- predict(fit3, n.ahead = 12, prediction.interval = T))
             fit     upr     lwr
Aug 2022 5747735 6264508 5230962
Sep 2022 5542574 6081388 5003761
Oct 2022 5558455 6122192 4994717
Nov 2022 5232394 5823871 4640916
Dec 2022 4665558 5287496 4043619
Jan 2023 4900487 5555496 4245479
Feb 2023 4672739 5363305 3982172
Mar 2023 5178444 5906933 4449955
Apr 2023 5004088 5772742 4235435
May 2023 5242677 6053621 4431732
Jun 2023 5252456 6107706 4397205
Jul 2023 5620171 6521641 4718702

Gráfico das Predições

par(mfrow=c(2,2))
plot(fit2,prev_multiplicativo,main = "Método Multiplicativo", xlab = "Tempo", ylab = "Consumo em Toneladas")
plot(fit3,prev_aditivo,main = "Método aditivo", xlab = "Tempo", ylab = "Consumo em Toneladas")

Predições

(fit4<- hw(`consumo cimento br`,seasonal = "additive"))
         Point Forecast   Lo 80   Hi 80   Lo 95   Hi 95
Aug 2022        5759739 5431243 6088234 5257348 6262129
Sep 2022        5587017 5238496 5935538 5054000 6120034
Oct 2022        5659258 5289569 6028948 5093867 6224650
Nov 2022        5391829 4999894 5783765 4792416 5991243
Dec 2022        4932676 4517476 5347876 4297683 5567669
Jan 2023        5119385 4679958 5558813 4447339 5791432
Feb 2023        4844530 4379960 5309099 4134032 5555028
Mar 2023        5328942 4838360 5819523 4578662 6079221
Apr 2023        5132207 4614784 5649629 4340877 5923537
May 2023        5377273 4832216 5922331 4543679 6210867
Jun 2023        5369702 4796248 5943155 4492680 6246724
Jul 2023        5705118 5102537 6307699 4783550 6626687
Aug 2023        5839945 5207522 6472369 4872737 6807154
Sep 2023        5667224 5004287 6330161 4653349 6681098
Oct 2023        5739465 5045357 6433574 4677918 6801013
Nov 2023        5472036 4746116 6197956 4361838 6582235
Dec 2023        5012883 4254531 5771235 3853084 6172682
Jan 2024        5199592 4408204 5990980 3989269 6409915
Feb 2024        4924737 4099725 5749748 3662990 6186483
Mar 2024        5409148 4549938 6268359 4095099 6723198
Apr 2024        5212413 4318443 6106384 3845204 6579623
May 2024        5457480 4528202 6386759 4036271 6878690
Jun 2024        5449909 4484784 6415033 3973878 6925939
Jul 2024        5785325 4783828 6786823 4253667 7316983
(fit5<- hw(`consumo cimento br`,seasonal = "multiplicative"))
         Point Forecast   Lo 80   Hi 80   Lo 95   Hi 95
Aug 2022        5776335 5378853 6173816 5168439 6384230
Sep 2022        5579106 5173125 5985088 4958211 6200001
Oct 2022        5685232 5246056 6124408 5013570 6356894
Nov 2022        5339311 4900257 5778365 4667835 6010786
Dec 2022        4774895 4356196 5193595 4134549 5415241
Jan 2023        5017627 4548013 5487241 4299415 5735839
Feb 2023        4723287 4251342 5195232 4001510 5445064
Mar 2023        5251853 4691797 5811910 4395321 6108386
Apr 2023        5042088 4468638 5615537 4165072 5919103
May 2023        5316635 4672390 5960880 4331347 6301923
Jun 2023        5221108 4547852 5894365 4191451 6250765
Jul 2023        5624368 4853626 6395110 4445620 6803116
Aug 2023        5749245 4913164 6585327 4470569 7027922
Sep 2023        5552931 4697256 6408607 4244288 6861575
Oct 2023        5658549 4735997 6581101 4247627 7069470
Nov 2023        5314242 4398911 6229572 3914364 6714119
Dec 2023        4752467 3888956 5615979 3431840 6073095
Jan 2024        4994050 4038199 5949900 3532203 6455897
Feb 2024        4701084 3754595 5647573 3253554 6148614
Mar 2024        5227156 4121613 6332699 3536374 6917939
Apr 2024        5018368 3904848 6131887 3315386 6721349
May 2024        5291614 4061338 6521889 3410070 7173157
Jun 2024        5196527 3932137 6460916 3262810 7130244
Jul 2024        5597877 4174105 7021650 3420405 7775349

Gráfico preditivo

plot(fit4, xlab = "Ano",ylab = "Consumo de cimento")

plot(fit5, xlab = "Ano",ylab = "Consumo de cimento")

Acurácia

aditivo<-accuracy(fit4)
multiplicativo<-accuracy(fit5)

stargazer:: stargazer(multiplicativo,type = "text",title = "Método Multiplicativo")

Método Multiplicativo
=========================================================================
                 ME        RMSE         MAE      MPE   MAPE  MASE   ACF1 
-------------------------------------------------------------------------
Training set -2,157.293 233,680.900 179,211.800 -0.175 3.999 0.484 -0.066
-------------------------------------------------------------------------
stargazer::stargazer(aditivo,type = "text",title = "Método Aditivo")

Método Aditivo
=========================================================================
                 ME        RMSE         MAE      MPE   MAPE  MASE   ACF1 
-------------------------------------------------------------------------
Training set -1,900.472 247,446.600 191,824.800 -0.142 4.358 0.518 -0.019
-------------------------------------------------------------------------

Escolha do Modelo

(fit5<- hw(`consumo cimento br`,seasonal = "multiplicative"))
         Point Forecast   Lo 80   Hi 80   Lo 95   Hi 95
Aug 2022        5776335 5378853 6173816 5168439 6384230
Sep 2022        5579106 5173125 5985088 4958211 6200001
Oct 2022        5685232 5246056 6124408 5013570 6356894
Nov 2022        5339311 4900257 5778365 4667835 6010786
Dec 2022        4774895 4356196 5193595 4134549 5415241
Jan 2023        5017627 4548013 5487241 4299415 5735839
Feb 2023        4723287 4251342 5195232 4001510 5445064
Mar 2023        5251853 4691797 5811910 4395321 6108386
Apr 2023        5042088 4468638 5615537 4165072 5919103
May 2023        5316635 4672390 5960880 4331347 6301923
Jun 2023        5221108 4547852 5894365 4191451 6250765
Jul 2023        5624368 4853626 6395110 4445620 6803116
Aug 2023        5749245 4913164 6585327 4470569 7027922
Sep 2023        5552931 4697256 6408607 4244288 6861575
Oct 2023        5658549 4735997 6581101 4247627 7069470
Nov 2023        5314242 4398911 6229572 3914364 6714119
Dec 2023        4752467 3888956 5615979 3431840 6073095
Jan 2024        4994050 4038199 5949900 3532203 6455897
Feb 2024        4701084 3754595 5647573 3253554 6148614
Mar 2024        5227156 4121613 6332699 3536374 6917939
Apr 2024        5018368 3904848 6131887 3315386 6721349
May 2024        5291614 4061338 6521889 3410070 7173157
Jun 2024        5196527 3932137 6460916 3262810 7130244
Jul 2024        5597877 4174105 7021650 3420405 7775349