Você está na página 1de 26

Análise da série do IGP-DI

2022-11-30

Aluna: Sarah Emmylle Paulino Perazzo


Introdução
o Índice Geral de Preços - Disponibilidade Interna (IGP-DI) ,Disponibilidade Interna (DI) refere-se à produção
nacional e às importações, excluindo as exportações, da Fundação Getulio Vargas (FGV) foi criado em 1944
como o índice de inflação de toda a cadeia produtiva do país” e de acordo com o Instituto Brasileiro de
Economia (IBRE) é um indicador do movimento de preços que há mais de seis décadas serve às comunidades
econômicas nacional e internacional como termômetro de inflação no Brasil.
segundo o Instituto de Pesquisa Econômica Aplicada (Ipea) o IGP-DI já foi considerado o principal índice de
inflação do país, mas findou sua posição para o IPCA, calculado pelo IBGE (Instituto Brasileiro de Geografia
e Estatística).Hoje, ele tem como principal função registrar as atividades comerciais e atuar como deflator –
um índice de correção para retomar o valor real do produto ou serviço – e indicador macroeconômico.
O IGP-DI possui três versões: Índice Geral de Preços - 10 (IGP-10), Índice Geral de Preços do Mercado
(IGP-M) e Índice Geral de Preços – Disponibilidade Interna (IGP-DI). A diferença entre eles está no período
de apuração das informações para cálculo do índice.
Além disso, o IGP-DI é uma média ponderada que considera o Índice de Preços por Atacado (IPA),Índice de
Preços ao Consumidor (IPC) e Índice Nacional de Custo da Construção (INCC).Possuem pesos de 60%,30%
e 10% na composição do IGP-DI respectivamente.
Para efeito de coleta de preços, o IGP-DI mede a evolução de preços no período compreendido entre o primeiro
ao último dia do mês de referência. .o IGP-DI é o índice que será utilizado neste trabalhao.

Metodologia
Serão utilizado os dados do IGP-DI disponibilizados no site do governo do IPEA de Janeiro de 2000 até
o mês de outubro de 2022. Serão feitas duas filtragens, um banco de dados com os dados de Janeiro de
2000 até o dezembro de 2021 e outro de Janeiro de 2000 até o mês de outubro de 2022 com o objetivo de
comparar e prever os valores de 2022 através da Análise de Séries Temporais. Para tal, serão feitos testes
de autocorrelação, autocorrelação parcial,ajuste de modelos Holt-Winters, cálculo de previsões e erros com
RMSE para cada modelo.

Bibliotecas que serão utilizadas


library(rlang)
library(dplyr)
library(ggplot2)
library(randtests)

1
Banco de dados
Instalando o banco de dados de Janeiro de 2000 até dezembro 2021
Dados1<-read.csv2('E:/Users/HD/Downloads/ipeadata[30-11-2022-09-24].csv',sep=';')%>%
filter(ï..Data>=2000.01 & ï..Data<=2021.12)

Instalando o banco de dados de Janeiro de 2000 até outubro 2022


Dados2<-read.csv2('E:/Users/HD/Downloads/ipeadata[30-11-2022-09-24].csv',sep=';')%>%
filter(ï..Data>=2000.01)

Modificando o nome das variáveis dos bancos de dados


Dados1 <- rename(Dados1, Anos = ï..Data,
DI=IGP.DI......a.m.....FundaÃ.Ã.o.Getulio.Vargas..Conjuntura.EconÃ.mica...IGP..FGV.Conj

Dados2 <- rename(Dados2, Anos = ï..Data,


DI=IGP.DI......a.m.....FundaÃ.Ã.o.Getulio.Vargas..Conjuntura.EconÃ.mica...IGP..FGV.Conj

Criação da série temporal


IGPDI <- ts(Dados1$DI, frequency = 12,start = c(2000.01))
plot(IGPDI)
6
5
4
3
IGPDI

2
1
0
−1

2000 2005 2010 2015 2020

Time

Ao observar a série tem-se indícios de uma tendência constante porque o gráfico apresenta tanto movimentos
consecutivos de decida quanto de subida.Também detecta-se indícios de sazonlidade estocástica aditiva com a
repetição de diferentes movimentos em formato de M praticamente a cada ano e além disso, tais repetições

2
não tem a aplitude elevando-se.
Também tem-se indícios de sazonalidade aditiva, pois percebemos que a série indica que fenômenos que
ocorrem durante o tempo se repetem a cada período idêntico de tempo, neste caso, que a Disponibilidade
Interna aumenta e dimuniu em certos períodos.

Gráficos de Autocorrelação e Autocorrelação Parcial


Gráfico de autocorrelação
acf(IGPDI,36)

Series IGPDI
1.0
0.8
0.6
ACF

0.4
0.2
0.0

0.0 0.5 1.0 1.5 2.0 2.5 3.0

Lag

A linha tracejada azul indica onde é significativamente diferente de zero. Como é possível ver na imagem,
utilizando-se uma defasagem de 36 meses(3 anos),poucos valores na série são significativos,ou seja, a autocor-
relação é diferente de zero. Além disso, existe uma queda rápida no ACF o que revela indícios de a série não
tem tendência.
Oberserva-se existência de curvas que geraam indícios de uma sazonalidade que não é forte o suficiente para
ser significativa, pois as relações se mantiveram no intervalo de confiança.

Gráfico de autocorrelação parcial


pacf(IGPDI)

3
Series IGPDI
0.6
0.4
Partial ACF

0.2
0.0

0.5 1.0 1.5 2.0

Lag

Neste gráfico ,percebe-se que maioria das autocorrelações parciais são não significativas por estarem dentro
do intervalo de confiança.
#Retirando a sazonalidade
IPD=as.vector(IGPDI)
Anos<-c(rep(2000,12),rep(2001,12),rep(2002,12),rep(2003,12),
rep(2004,12),rep(2005,12),rep(2006,12),rep(2007,12),
rep(2008,12),rep(2009,12),rep(2010,12),rep(2011,12),
rep(2012,12),rep(2013,12),rep(2014,12),rep(2015,12),
rep(2016,12),rep(2017,12),rep(2018,12),rep(2019,12),
rep(2020,12),rep(2021,12))
mes=c(rep(c("Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"),22))

friedman.test(IPD~Anos|mes)

##
## Friedman rank sum test
##
## data: IPD and Anos and mes
## Friedman chi-squared = 63.666, df = 21, p-value = 3.505e-06
kruskal.test(IPD~Anos)

##
## Kruskal-Wallis rank sum test
##
## data: IPD by Anos

4
## Kruskal-Wallis chi-squared = 68.675, df = 21, p-value = 5.721e-07
Ao aplicar os teste de Friedman e Kruskal-Wallis para saber se a série possui sazonalidade, nota-se que de
fato a série é sazonal, pois o valor-p em ambos os testes é menor que o nível de significância aceitavel de 0,05.
Isso implica que a hipótese de não ter sazonalidade foi rejeitada.

Tentando retirar a sazonalidade determinística


D1=rep(c(1,rep(0,10),-1),22)
D2=rep(c(0,1,rep(0,9),-1),22)
D3=rep(c(0,0,1,rep(0,8),-1),22)
D4=rep(c(0,0,0,1,rep(0,7),-1),22)
D5=rep(c(rep(0,4),1,rep(0,6),-1),22)
D6=rep(c(rep(0,5),1,rep(0,5),-1),22)
D7=rep(c(rep(0,6),1,rep(0,4),-1),22)
D8=rep(c(rep(0,7),1,rep(0,3),-1),22)
D9=rep(c(rep(0,8),1,rep(0,2),-1),22)
D10=rep(c(rep(0,9),1,rep(0,1),-1),22)
D11=rep(c(rep(0,10),1,-1),22)

cbind(D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11)

## D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11
## [1,] 1 0 0 0 0 0 0 0 0 0 0
## [2,] 0 1 0 0 0 0 0 0 0 0 0
## [3,] 0 0 1 0 0 0 0 0 0 0 0
## [4,] 0 0 0 1 0 0 0 0 0 0 0
## [5,] 0 0 0 0 1 0 0 0 0 0 0
## [6,] 0 0 0 0 0 1 0 0 0 0 0
## [7,] 0 0 0 0 0 0 1 0 0 0 0
## [8,] 0 0 0 0 0 0 0 1 0 0 0
## [9,] 0 0 0 0 0 0 0 0 1 0 0
## [10,] 0 0 0 0 0 0 0 0 0 1 0
## [11,] 0 0 0 0 0 0 0 0 0 0 1
## [12,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [13,] 1 0 0 0 0 0 0 0 0 0 0
## [14,] 0 1 0 0 0 0 0 0 0 0 0
## [15,] 0 0 1 0 0 0 0 0 0 0 0
## [16,] 0 0 0 1 0 0 0 0 0 0 0
## [17,] 0 0 0 0 1 0 0 0 0 0 0
## [18,] 0 0 0 0 0 1 0 0 0 0 0
## [19,] 0 0 0 0 0 0 1 0 0 0 0
## [20,] 0 0 0 0 0 0 0 1 0 0 0
## [21,] 0 0 0 0 0 0 0 0 1 0 0
## [22,] 0 0 0 0 0 0 0 0 0 1 0
## [23,] 0 0 0 0 0 0 0 0 0 0 1
## [24,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [25,] 1 0 0 0 0 0 0 0 0 0 0
## [26,] 0 1 0 0 0 0 0 0 0 0 0
## [27,] 0 0 1 0 0 0 0 0 0 0 0
## [28,] 0 0 0 1 0 0 0 0 0 0 0
## [29,] 0 0 0 0 1 0 0 0 0 0 0
## [30,] 0 0 0 0 0 1 0 0 0 0 0
## [31,] 0 0 0 0 0 0 1 0 0 0 0

5
## [32,] 0 0 0 0 0 0 0 1 0 0 0
## [33,] 0 0 0 0 0 0 0 0 1 0 0
## [34,] 0 0 0 0 0 0 0 0 0 1 0
## [35,] 0 0 0 0 0 0 0 0 0 0 1
## [36,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [37,] 1 0 0 0 0 0 0 0 0 0 0
## [38,] 0 1 0 0 0 0 0 0 0 0 0
## [39,] 0 0 1 0 0 0 0 0 0 0 0
## [40,] 0 0 0 1 0 0 0 0 0 0 0
## [41,] 0 0 0 0 1 0 0 0 0 0 0
## [42,] 0 0 0 0 0 1 0 0 0 0 0
## [43,] 0 0 0 0 0 0 1 0 0 0 0
## [44,] 0 0 0 0 0 0 0 1 0 0 0
## [45,] 0 0 0 0 0 0 0 0 1 0 0
## [46,] 0 0 0 0 0 0 0 0 0 1 0
## [47,] 0 0 0 0 0 0 0 0 0 0 1
## [48,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [49,] 1 0 0 0 0 0 0 0 0 0 0
## [50,] 0 1 0 0 0 0 0 0 0 0 0
## [51,] 0 0 1 0 0 0 0 0 0 0 0
## [52,] 0 0 0 1 0 0 0 0 0 0 0
## [53,] 0 0 0 0 1 0 0 0 0 0 0
## [54,] 0 0 0 0 0 1 0 0 0 0 0
## [55,] 0 0 0 0 0 0 1 0 0 0 0
## [56,] 0 0 0 0 0 0 0 1 0 0 0
## [57,] 0 0 0 0 0 0 0 0 1 0 0
## [58,] 0 0 0 0 0 0 0 0 0 1 0
## [59,] 0 0 0 0 0 0 0 0 0 0 1
## [60,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [61,] 1 0 0 0 0 0 0 0 0 0 0
## [62,] 0 1 0 0 0 0 0 0 0 0 0
## [63,] 0 0 1 0 0 0 0 0 0 0 0
## [64,] 0 0 0 1 0 0 0 0 0 0 0
## [65,] 0 0 0 0 1 0 0 0 0 0 0
## [66,] 0 0 0 0 0 1 0 0 0 0 0
## [67,] 0 0 0 0 0 0 1 0 0 0 0
## [68,] 0 0 0 0 0 0 0 1 0 0 0
## [69,] 0 0 0 0 0 0 0 0 1 0 0
## [70,] 0 0 0 0 0 0 0 0 0 1 0
## [71,] 0 0 0 0 0 0 0 0 0 0 1
## [72,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [73,] 1 0 0 0 0 0 0 0 0 0 0
## [74,] 0 1 0 0 0 0 0 0 0 0 0
## [75,] 0 0 1 0 0 0 0 0 0 0 0
## [76,] 0 0 0 1 0 0 0 0 0 0 0
## [77,] 0 0 0 0 1 0 0 0 0 0 0
## [78,] 0 0 0 0 0 1 0 0 0 0 0
## [79,] 0 0 0 0 0 0 1 0 0 0 0
## [80,] 0 0 0 0 0 0 0 1 0 0 0
## [81,] 0 0 0 0 0 0 0 0 1 0 0
## [82,] 0 0 0 0 0 0 0 0 0 1 0
## [83,] 0 0 0 0 0 0 0 0 0 0 1
## [84,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [85,] 1 0 0 0 0 0 0 0 0 0 0

6
## [86,] 0 1 0 0 0 0 0 0 0 0 0
## [87,] 0 0 1 0 0 0 0 0 0 0 0
## [88,] 0 0 0 1 0 0 0 0 0 0 0
## [89,] 0 0 0 0 1 0 0 0 0 0 0
## [90,] 0 0 0 0 0 1 0 0 0 0 0
## [91,] 0 0 0 0 0 0 1 0 0 0 0
## [92,] 0 0 0 0 0 0 0 1 0 0 0
## [93,] 0 0 0 0 0 0 0 0 1 0 0
## [94,] 0 0 0 0 0 0 0 0 0 1 0
## [95,] 0 0 0 0 0 0 0 0 0 0 1
## [96,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [97,] 1 0 0 0 0 0 0 0 0 0 0
## [98,] 0 1 0 0 0 0 0 0 0 0 0
## [99,] 0 0 1 0 0 0 0 0 0 0 0
## [100,] 0 0 0 1 0 0 0 0 0 0 0
## [101,] 0 0 0 0 1 0 0 0 0 0 0
## [102,] 0 0 0 0 0 1 0 0 0 0 0
## [103,] 0 0 0 0 0 0 1 0 0 0 0
## [104,] 0 0 0 0 0 0 0 1 0 0 0
## [105,] 0 0 0 0 0 0 0 0 1 0 0
## [106,] 0 0 0 0 0 0 0 0 0 1 0
## [107,] 0 0 0 0 0 0 0 0 0 0 1
## [108,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [109,] 1 0 0 0 0 0 0 0 0 0 0
## [110,] 0 1 0 0 0 0 0 0 0 0 0
## [111,] 0 0 1 0 0 0 0 0 0 0 0
## [112,] 0 0 0 1 0 0 0 0 0 0 0
## [113,] 0 0 0 0 1 0 0 0 0 0 0
## [114,] 0 0 0 0 0 1 0 0 0 0 0
## [115,] 0 0 0 0 0 0 1 0 0 0 0
## [116,] 0 0 0 0 0 0 0 1 0 0 0
## [117,] 0 0 0 0 0 0 0 0 1 0 0
## [118,] 0 0 0 0 0 0 0 0 0 1 0
## [119,] 0 0 0 0 0 0 0 0 0 0 1
## [120,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [121,] 1 0 0 0 0 0 0 0 0 0 0
## [122,] 0 1 0 0 0 0 0 0 0 0 0
## [123,] 0 0 1 0 0 0 0 0 0 0 0
## [124,] 0 0 0 1 0 0 0 0 0 0 0
## [125,] 0 0 0 0 1 0 0 0 0 0 0
## [126,] 0 0 0 0 0 1 0 0 0 0 0
## [127,] 0 0 0 0 0 0 1 0 0 0 0
## [128,] 0 0 0 0 0 0 0 1 0 0 0
## [129,] 0 0 0 0 0 0 0 0 1 0 0
## [130,] 0 0 0 0 0 0 0 0 0 1 0
## [131,] 0 0 0 0 0 0 0 0 0 0 1
## [132,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [133,] 1 0 0 0 0 0 0 0 0 0 0
## [134,] 0 1 0 0 0 0 0 0 0 0 0
## [135,] 0 0 1 0 0 0 0 0 0 0 0
## [136,] 0 0 0 1 0 0 0 0 0 0 0
## [137,] 0 0 0 0 1 0 0 0 0 0 0
## [138,] 0 0 0 0 0 1 0 0 0 0 0
## [139,] 0 0 0 0 0 0 1 0 0 0 0

7
## [140,] 0 0 0 0 0 0 0 1 0 0 0
## [141,] 0 0 0 0 0 0 0 0 1 0 0
## [142,] 0 0 0 0 0 0 0 0 0 1 0
## [143,] 0 0 0 0 0 0 0 0 0 0 1
## [144,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [145,] 1 0 0 0 0 0 0 0 0 0 0
## [146,] 0 1 0 0 0 0 0 0 0 0 0
## [147,] 0 0 1 0 0 0 0 0 0 0 0
## [148,] 0 0 0 1 0 0 0 0 0 0 0
## [149,] 0 0 0 0 1 0 0 0 0 0 0
## [150,] 0 0 0 0 0 1 0 0 0 0 0
## [151,] 0 0 0 0 0 0 1 0 0 0 0
## [152,] 0 0 0 0 0 0 0 1 0 0 0
## [153,] 0 0 0 0 0 0 0 0 1 0 0
## [154,] 0 0 0 0 0 0 0 0 0 1 0
## [155,] 0 0 0 0 0 0 0 0 0 0 1
## [156,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [157,] 1 0 0 0 0 0 0 0 0 0 0
## [158,] 0 1 0 0 0 0 0 0 0 0 0
## [159,] 0 0 1 0 0 0 0 0 0 0 0
## [160,] 0 0 0 1 0 0 0 0 0 0 0
## [161,] 0 0 0 0 1 0 0 0 0 0 0
## [162,] 0 0 0 0 0 1 0 0 0 0 0
## [163,] 0 0 0 0 0 0 1 0 0 0 0
## [164,] 0 0 0 0 0 0 0 1 0 0 0
## [165,] 0 0 0 0 0 0 0 0 1 0 0
## [166,] 0 0 0 0 0 0 0 0 0 1 0
## [167,] 0 0 0 0 0 0 0 0 0 0 1
## [168,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [169,] 1 0 0 0 0 0 0 0 0 0 0
## [170,] 0 1 0 0 0 0 0 0 0 0 0
## [171,] 0 0 1 0 0 0 0 0 0 0 0
## [172,] 0 0 0 1 0 0 0 0 0 0 0
## [173,] 0 0 0 0 1 0 0 0 0 0 0
## [174,] 0 0 0 0 0 1 0 0 0 0 0
## [175,] 0 0 0 0 0 0 1 0 0 0 0
## [176,] 0 0 0 0 0 0 0 1 0 0 0
## [177,] 0 0 0 0 0 0 0 0 1 0 0
## [178,] 0 0 0 0 0 0 0 0 0 1 0
## [179,] 0 0 0 0 0 0 0 0 0 0 1
## [180,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [181,] 1 0 0 0 0 0 0 0 0 0 0
## [182,] 0 1 0 0 0 0 0 0 0 0 0
## [183,] 0 0 1 0 0 0 0 0 0 0 0
## [184,] 0 0 0 1 0 0 0 0 0 0 0
## [185,] 0 0 0 0 1 0 0 0 0 0 0
## [186,] 0 0 0 0 0 1 0 0 0 0 0
## [187,] 0 0 0 0 0 0 1 0 0 0 0
## [188,] 0 0 0 0 0 0 0 1 0 0 0
## [189,] 0 0 0 0 0 0 0 0 1 0 0
## [190,] 0 0 0 0 0 0 0 0 0 1 0
## [191,] 0 0 0 0 0 0 0 0 0 0 1
## [192,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [193,] 1 0 0 0 0 0 0 0 0 0 0

8
## [194,] 0 1 0 0 0 0 0 0 0 0 0
## [195,] 0 0 1 0 0 0 0 0 0 0 0
## [196,] 0 0 0 1 0 0 0 0 0 0 0
## [197,] 0 0 0 0 1 0 0 0 0 0 0
## [198,] 0 0 0 0 0 1 0 0 0 0 0
## [199,] 0 0 0 0 0 0 1 0 0 0 0
## [200,] 0 0 0 0 0 0 0 1 0 0 0
## [201,] 0 0 0 0 0 0 0 0 1 0 0
## [202,] 0 0 0 0 0 0 0 0 0 1 0
## [203,] 0 0 0 0 0 0 0 0 0 0 1
## [204,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [205,] 1 0 0 0 0 0 0 0 0 0 0
## [206,] 0 1 0 0 0 0 0 0 0 0 0
## [207,] 0 0 1 0 0 0 0 0 0 0 0
## [208,] 0 0 0 1 0 0 0 0 0 0 0
## [209,] 0 0 0 0 1 0 0 0 0 0 0
## [210,] 0 0 0 0 0 1 0 0 0 0 0
## [211,] 0 0 0 0 0 0 1 0 0 0 0
## [212,] 0 0 0 0 0 0 0 1 0 0 0
## [213,] 0 0 0 0 0 0 0 0 1 0 0
## [214,] 0 0 0 0 0 0 0 0 0 1 0
## [215,] 0 0 0 0 0 0 0 0 0 0 1
## [216,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [217,] 1 0 0 0 0 0 0 0 0 0 0
## [218,] 0 1 0 0 0 0 0 0 0 0 0
## [219,] 0 0 1 0 0 0 0 0 0 0 0
## [220,] 0 0 0 1 0 0 0 0 0 0 0
## [221,] 0 0 0 0 1 0 0 0 0 0 0
## [222,] 0 0 0 0 0 1 0 0 0 0 0
## [223,] 0 0 0 0 0 0 1 0 0 0 0
## [224,] 0 0 0 0 0 0 0 1 0 0 0
## [225,] 0 0 0 0 0 0 0 0 1 0 0
## [226,] 0 0 0 0 0 0 0 0 0 1 0
## [227,] 0 0 0 0 0 0 0 0 0 0 1
## [228,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [229,] 1 0 0 0 0 0 0 0 0 0 0
## [230,] 0 1 0 0 0 0 0 0 0 0 0
## [231,] 0 0 1 0 0 0 0 0 0 0 0
## [232,] 0 0 0 1 0 0 0 0 0 0 0
## [233,] 0 0 0 0 1 0 0 0 0 0 0
## [234,] 0 0 0 0 0 1 0 0 0 0 0
## [235,] 0 0 0 0 0 0 1 0 0 0 0
## [236,] 0 0 0 0 0 0 0 1 0 0 0
## [237,] 0 0 0 0 0 0 0 0 1 0 0
## [238,] 0 0 0 0 0 0 0 0 0 1 0
## [239,] 0 0 0 0 0 0 0 0 0 0 1
## [240,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [241,] 1 0 0 0 0 0 0 0 0 0 0
## [242,] 0 1 0 0 0 0 0 0 0 0 0
## [243,] 0 0 1 0 0 0 0 0 0 0 0
## [244,] 0 0 0 1 0 0 0 0 0 0 0
## [245,] 0 0 0 0 1 0 0 0 0 0 0
## [246,] 0 0 0 0 0 1 0 0 0 0 0
## [247,] 0 0 0 0 0 0 1 0 0 0 0

9
## [248,] 0 0 0 0 0 0 0 1 0 0 0
## [249,] 0 0 0 0 0 0 0 0 1 0 0
## [250,] 0 0 0 0 0 0 0 0 0 1 0
## [251,] 0 0 0 0 0 0 0 0 0 0 1
## [252,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
## [253,] 1 0 0 0 0 0 0 0 0 0 0
## [254,] 0 1 0 0 0 0 0 0 0 0 0
## [255,] 0 0 1 0 0 0 0 0 0 0 0
## [256,] 0 0 0 1 0 0 0 0 0 0 0
## [257,] 0 0 0 0 1 0 0 0 0 0 0
## [258,] 0 0 0 0 0 1 0 0 0 0 0
## [259,] 0 0 0 0 0 0 1 0 0 0 0
## [260,] 0 0 0 0 0 0 0 1 0 0 0
## [261,] 0 0 0 0 0 0 0 0 1 0 0
## [262,] 0 0 0 0 0 0 0 0 0 1 0
## [263,] 0 0 0 0 0 0 0 0 0 0 1
## [264,] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
t=seq(1:264)
mod=lm(IGPDI~t+D1+D2+D3+D4+D5+D6+D7+D8+D9+D10+D11)
summary(mod)

##
## Call:
## lm(formula = IGPDI ~ t + D1 + D2 + D3 + D4 + D5 + D6 + D7 + D8 +
## D9 + D10 + D11)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.9587 -0.5190 -0.1594 0.3730 5.0350
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.856e-01 1.121e-01 6.113 3.71e-09 ***
## t 7.121e-05 7.339e-04 0.097 0.923
## D1 5.221e-02 1.853e-01 0.282 0.778
## D2 -1.097e-01 1.853e-01 -0.592 0.555
## D3 -3.157e-02 1.853e-01 -0.170 0.865
## D4 -1.439e-01 1.853e-01 -0.777 0.438
## D5 -1.711e-03 1.853e-01 -0.009 0.993
## D6 -1.054e-01 1.853e-01 -0.569 0.570
## D7 -1.096e-01 1.853e-01 -0.591 0.555
## D8 4.217e-02 1.853e-01 0.228 0.820
## D9 1.389e-01 1.853e-01 0.750 0.454
## D10 2.438e-01 1.853e-01 1.316 0.189
## D11 1.170e-01 1.853e-01 0.631 0.529
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9078 on 251 degrees of freedom
## Multiple R-squared: 0.01703, Adjusted R-squared: -0.02996
## F-statistic: 0.3625 on 12 and 251 DF, p-value: 0.9751
novo <- as.vector(IGPDI-mod$fitted.values)

10
friedman.test(novo~Anos|mes)

##
## Friedman rank sum test
##
## data: novo and Anos and mes
## Friedman chi-squared = 64.209, df = 21, p-value = 2.886e-06
kruskal.test(novo~Anos)

##
## Kruskal-Wallis rank sum test
##
## data: novo by Anos
## Kruskal-Wallis chi-squared = 71.69, df = 21, p-value = 1.878e-07
Observando o valor-p dos coeficientes, percebe-se que nenhum deles é significativo ao nível de 0,05 e além disso,
a reaplicação dos testes de Friedman e Kruskal-Wallis confirmam que não foi possível retirar a sazonalidade
com esse método, pois o valor-p dos testes continuam não significativos. Ademais, isso corrobora que a série
não tem uma sazonalidade determinística.

Tentando retirar a sazonalidade estocástica


df <- as.vector(diff(IGPDI,12))

Anos<-c(rep(2001,12),rep(2002,12),rep(2003,12),rep(2004,12),
rep(2005,12),rep(2006,12),rep(2007,12),rep(2008,12),
rep(2009,12),rep(2010,12),rep(2011,12),rep(2012,12),
rep(2013,12),rep(2014,12),rep(2015,12),rep(2016,12),
rep(2017,12),rep(2018,12),rep(2019,12),rep(2020,12),
rep(2021,12))
mes=c(rep(c("Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"),21))

friedman.test(df~Anos|mes)

##
## Friedman rank sum test
##
## data: df and Anos and mes
## Friedman chi-squared = 56.602, df = 20, p-value = 2.358e-05
kruskal.test(df~Anos)

##
## Kruskal-Wallis rank sum test
##
## data: df by Anos
## Kruskal-Wallis chi-squared = 62.841, df = 20, p-value = 2.565e-06
Aplicando o método da diferença sazonal para tentar retirar a sazonalidade estocástica, percebe-se que mesmo
que o valor-p dos testes de Friedman e Kruskal-Wallis tenha se aproximado mais do nível de significância de
0,05, o método ainda não foi o suficiente para retirar a sazonalidade.
#Retirar a têndencia
Como é necessario ter retirado a sazonalidade da série para depois tirar a tendência, não é possivel verificar a
tendência por meio dos testes adequados.

11
Ajustando um modelo Holt-winters aos dados originais
Modelo de série com tendencia e com sazonalidade aditiva:
M1 <- HoltWinters(IGPDI)
plot(M1)
(M1 <- HoltWinters(IGPDI, seasonal = "additive"))

## Holt-Winters exponential smoothing with trend and additive seasonal component.


##
## Call:
## HoltWinters(x = IGPDI, seasonal = "additive")
##
## Smoothing parameters:
## alpha: 0.590772
## beta : 0
## gamma: 0.4667273
##
## Coefficients:
## [,1]
## a 0.761916874
## b 0.005777972
## s1 0.326322090
## s2 0.138300756
## s3 0.146035817
## s4 -0.362195687
## s5 0.064869465
## s6 -0.675686498
## s7 -0.332044540
## s8 -0.321894822
## s9 0.063271204
## s10 0.543799172
## s11 -0.262630772
## s12 0.193014585
plot(M1)

12
Holt−Winters filtering
6
5
Observed / Fitted

4
3
2
1
0
−1

2005 2010 2015 2020

Time

Obervando o Modelo de série sem sazonalidade, apenas tendência:


(M2 <- HoltWinters(IGPDI, gamma=FALSE))

## Holt-Winters exponential smoothing with trend and without seasonal component.


##
## Call:
## HoltWinters(x = IGPDI, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.7507759
## beta : 0.07525806
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 0.86461043
## b -0.03242788
plot(M2)

13
Holt−Winters filtering
6
5
Observed / Fitted

4
3
2
1
0
−1

2000 2005 2010 2015 2020

Time

Obervando um modelo se série sem tendência, apenas sazonalidade:


(M3 <- HoltWinters(IGPDI, beta=FALSE))

## Holt-Winters exponential smoothing without trend and with additive seasonal component.
##
## Call:
## HoltWinters(x = IGPDI, beta = FALSE)
##
## Smoothing parameters:
## alpha: 0.590536
## beta : FALSE
## gamma: 0.4662028
##
## Coefficients:
## [,1]
## a 0.7205426
## s1 0.3631724
## s2 0.1753174
## s3 0.1832107
## s4 -0.3246513
## s5 0.1025415
## s6 -0.6373093
## s7 -0.2938191
## s8 -0.2830337
## s9 0.1022348

14
## s10 0.5824282
## s11 -0.2233971
## s12 0.2318368
plot(M3)

Holt−Winters filtering
6
5
Observed / Fitted

4
3
2
1
0
−1

2005 2010 2015 2020

Time

Obervando um modelo se série sem tendência e sem sazonalidae:


(M4 <- HoltWinters(IGPDI, beta=FALSE, gamma = FALSE))

## Holt-Winters exponential smoothing without trend and without seasonal component.


##
## Call:
## HoltWinters(x = IGPDI, beta = FALSE, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.6347246
## beta : FALSE
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 0.7845786
plot(M4)

15
Holt−Winters filtering
6
5
Observed / Fitted

4
3
2
1
0
−1

2000 2005 2010 2015 2020

Time

Calculando previsões para cada modelo


Modelo 1
P1 <- predict(M1, 10, prediction.interval = TRUE)
plot(M1, P1)

16
Holt−Winters filtering
6
4
Observed / Fitted

2
0
−2

2005 2010 2015 2020

Time

## Modelo 2
P2 <- predict(M2, 10, prediction.interval = TRUE)
plot(M2, P2)

17
Holt−Winters filtering
6
4
Observed / Fitted

2
0
−2
−4

2000 2005 2010 2015 2020

Time

## Modelo 3
P3 <- predict(M3, 10, prediction.interval = TRUE)
plot(M3, P3)

18
Holt−Winters filtering
6
4
Observed / Fitted

2
0
−2

2005 2010 2015 2020

Time

## Modelo 4
P4 <- predict(M4, 10, prediction.interval = TRUE)
plot(M4, P4)

19
Holt−Winters filtering
6
4
Observed / Fitted

2
0
−2

2000 2005 2010 2015 2020

Time

Para saber o melhor modelo é necessário calcular os erros, neste caso será utilizada a Raiz
Quadrada do Erro Quadrático Médio (RMSE),Erro total (ET) e o Erro médio absoluto (EMA).

Filtrando os Dados adivindos de Dados2 com apenas os meses do ano de 2022.

F1 <- Dados2
F1$DI

## [1] 1.02 0.19 0.18 0.13 0.67 0.93 2.26 1.82 0.69 0.37 0.39 0.76
## [13] 0.49 0.34 0.80 1.13 0.44 1.46 1.62 0.90 0.38 1.45 0.76 0.18
## [25] 0.19 0.18 0.11 0.70 1.11 1.74 2.05 2.36 2.64 4.21 5.84 2.70
## [37] 2.17 1.59 1.66 0.41 -0.67 -0.70 -0.20 0.62 1.05 0.44 0.48 0.60
## [49] 0.80 1.08 0.93 1.15 1.46 1.29 1.14 1.31 0.48 0.53 0.82 0.52
## [61] 0.33 0.40 0.99 0.51 -0.25 -0.45 -0.40 -0.79 -0.13 0.63 0.33 0.07
## [73] 0.72 -0.06 -0.45 0.02 0.38 0.67 0.17 0.41 0.24 0.81 0.57 0.26
## [85] 0.43 0.23 0.22 0.14 0.16 0.26 0.37 1.39 1.17 0.75 1.05 1.47
## [97] 0.99 0.38 0.70 1.12 1.88 1.89 1.12 -0.38 0.36 1.09 0.07 -0.44
## [109] 0.01 -0.13 -0.84 0.04 0.18 -0.32 -0.64 0.09 0.25 -0.04 0.07 -0.11
## [121] 1.01 1.09 0.63 0.72 1.57 0.34 0.22 1.10 1.10 1.03 1.58 0.38
## [133] 0.98 0.96 0.61 0.50 0.01 -0.13 -0.05 0.61 0.75 0.40 0.43 -0.16
## [145] 0.30 0.07 0.56 1.02 0.91 0.69 1.52 1.29 0.88 -0.31 0.25 0.66
## [157] 0.31 0.20 0.31 -0.06 0.32 0.76 0.14 0.46 1.36 0.63 0.28 0.69
## [169] 0.40 0.85 1.48 0.45 -0.45 -0.63 -0.55 0.06 0.02 0.59 1.14 0.38
## [181] 0.67 0.53 1.21 0.92 0.40 0.68 0.58 0.40 1.42 1.76 1.19 0.44
## [193] 1.53 0.79 0.43 0.36 1.13 1.63 -0.39 0.43 0.03 0.13 0.05 0.83
## [205] 0.43 0.06 -0.38 -1.24 -0.51 -0.96 -0.30 0.24 0.62 0.10 0.80 0.74

20
## [217] 0.58 0.15 0.56 0.93 1.64 1.48 0.44 0.68 1.79 0.26 -1.14 -0.45
## [229] 0.07 1.25 1.07 0.90 0.40 0.63 -0.01 -0.51 0.50 0.55 0.85 1.74
## [241] 0.09 0.01 1.64 0.05 1.07 1.60 2.34 3.87 3.30 3.68 2.64 0.76
## [253] 2.91 2.71 2.17 2.22 3.40 0.11 1.45 -0.14 -0.55 1.60 -0.58 1.25
## [265] 2.01 1.50 2.37 0.41 0.69 0.62 -0.38 -0.55 -1.22 -0.62

Cálculo dos Erros para cada Modelo


Erro para o modelo 1
Erro1 <- NULL
for (i in 1:10){
Erro1[i] <- (P1[i,1]-F1$DI[i])
}

Erro1

## [1] 0.07401694 0.72177357 0.74528661 0.29283308 0.18567620 -0.80910179


## [7] -1.78968186 -1.33375417 0.18718983 0.99349577
m1=mean(Erro1ˆ2)
raiz1=sqrt(m1)
total1=sum(Erro1)
absoluto1=mean(abs(Erro1))

Erro para o modelo 2


Erro2 <- NULL
for (i in 1:10){
Erro2[i] <- (P2[i,1]-F1$DI[i])
}

Erro2

## [1] -0.18781745 0.60975468 0.58732680 0.60489892 0.03247105 -0.25995683


## [7] -1.62238470 -1.21481258 -0.11724046 0.17033167
m2=mean(Erro2ˆ2)
raiz2=sqrt(m2)
total2=sum(Erro2)
absoluto2=mean(abs(Erro2))

Erro para o modelo 3


Erro3 <- NULL
for (i in 1:10){
Erro3[i] <- (P3[i,1]-F1$DI[i])
}

Erro3

## [1] 0.06371501 0.70585994 0.72375330 0.26589125 0.15308410 -0.84676673


## [7] -1.83327650 -1.38249113 0.13277742 0.93297082

21
m3=mean(Erro3ˆ2)
raiz3=sqrt(m3)
total3=sum(Erro3)
absoluto3=mean(abs(Erro3))

Erro para o modelo 4


Erro4 <- NULL
for (i in 1:10){
Erro4[i] <- (P1[i,1]-F1$DI[i])
}

Erro4

## [1] 0.07401694 0.72177357 0.74528661 0.29283308 0.18567620 -0.80910179


## [7] -1.78968186 -1.33375417 0.18718983 0.99349577
m4=mean(Erro4ˆ2)
raiz4=sqrt(m4)
total4=sum(Erro4)
absoluto4=mean(abs(Erro4))

Tabela com os erros estimados para o ano de 2022


Erros <- data.frame(Datas=seq(as.Date('2022/1/1'),as.Date('2022/10/1'),'month'),
Erro_1=Erro1,Erro_2=Erro2,Erro_3=Erro3, Erro_4=Erro4 )
Erros

## Datas Erro_1 Erro_2 Erro_3 Erro_4


## 1 2022-01-01 0.07401694 -0.18781745 0.06371501 0.07401694
## 2 2022-02-01 0.72177357 0.60975468 0.70585994 0.72177357
## 3 2022-03-01 0.74528661 0.58732680 0.72375330 0.74528661
## 4 2022-04-01 0.29283308 0.60489892 0.26589125 0.29283308
## 5 2022-05-01 0.18567620 0.03247105 0.15308410 0.18567620
## 6 2022-06-01 -0.80910179 -0.25995683 -0.84676673 -0.80910179
## 7 2022-07-01 -1.78968186 -1.62238470 -1.83327650 -1.78968186
## 8 2022-08-01 -1.33375417 -1.21481258 -1.38249113 -1.33375417
## 9 2022-09-01 0.18718983 -0.11724046 0.13277742 0.18718983
## 10 2022-10-01 0.99349577 0.17033167 0.93297082 0.99349577
Modelos <- c('Modelo 1','Modelo 2','Modelo 3','Moldelo 4')
RMSE <- c(raiz1,raiz2,raiz3,raiz4)
ET <- c(total1,total2,total3,total4)
EMA <- c(absoluto1,absoluto2,absoluto3,absoluto4)

Tabela com a Raiz Quadrada do Erro Quadrático Médio (RMSE)


para cada modelo:
BD <- data.frame(Modelos,RMSE,ET,EMA)
BD

## Modelos RMSE ET EMA

22
## 1 Modelo 1 0.8866056 -0.7322658 0.7132810
## 2 Modelo 2 0.7305630 -1.3974289 0.5406995
## 3 Modelo 3 0.8942881 -1.0844825 0.7040586
## 4 Moldelo 4 0.8866056 -0.7322658 0.7132810
A partir dos valores da tabela acima, tem-se que o melhor modelo é o Modelo 2 que é a série sem sazonalidade,
apenas tendência.Todavia, as análises de gráficos anteiores demonstram o inverso disso.

Gerando previsões
Gráfico da série original com as previsões futuras do Modelo 2:

g <- c(rep(NA,264),as.vector(P2[,1]))

ggplot(Dados2)+
aes(x=seq(as.Date('2000/1/1'),as.Date('2022/10/1'),'month'),y=DI)+
geom_line(aes(col='Série'))+
geom_line(aes(y=g,col='Previsão'))+
labs(x='Anos',y='IGPDI',title = 'Série IGPDI com as previsões futuras')

## Warning: Removed 264 row(s) containing missing values (geom_path).

Série IGPDI com as previsões futuras


6

colour
IGPDI

Previsão
2
Série

2000 2005 2010 2015 2020


Anos

23
Gráficos dos outros modelos
Gráfico da série original com as previsões futuras do Modelo 1:

h <- c(rep(NA,264),as.vector(P1[,1]))

ggplot(Dados2)+
aes(x=seq(as.Date('2000/1/1'),as.Date('2022/10/1'),'month'),y=DI)+
geom_line(aes(col='Série'))+
geom_line(aes(y=h,col='Previsão'))+
labs(x='Anos',y='IGPDI',title = 'Série IGPDI com as previsões futuras')

## Warning: Removed 264 row(s) containing missing values (geom_path).

Série IGPDI com as previsões futuras


6

colour
IGPDI

Previsão
2
Série

2000 2005 2010 2015 2020


Anos

Gráfico da série original com as previsões futuras do Modelo 3:

i <- c(rep(NA,264),as.vector(P3[,1]))

ggplot(Dados2)+
aes(x=seq(as.Date('2000/1/1'),as.Date('2022/10/1'),'month'),y=DI)+
geom_line(aes(col='Série'))+
geom_line(aes(y=i,col='Previsão'))+
labs(x='Anos',y='IGPDI',title = 'Série IGPDI com as previsões futuras')

## Warning: Removed 264 row(s) containing missing values (geom_path).

24
Série IGPDI com as previsões futuras
6

colour
IGPDI

Previsão
2
Série

2000 2005 2010 2015 2020


Anos

Gráfico da série original com as previsões futuras do Modelo 4:

j <- c(rep(NA,264),as.vector(P4[,1]))

ggplot(Dados2)+
aes(x=seq(as.Date('2000/1/1'),as.Date('2022/10/1'),'month'),y=DI)+
geom_line(aes(col='Série'))+
geom_line(aes(y=j,col='Previsão'))+
labs(x='Anos',y='IGPDI',title = 'Série IGPDI com as previsões futuras')

## Warning: Removed 264 row(s) containing missing values (geom_path).

25
Série IGPDI com as previsões futuras
6

colour
IGPDI

Previsão
2
Série

2000 2005 2010 2015 2020


Anos

Conclusão
Tendo em vista as previsões feitas, o modelo de série sem sazonalidade é o que se destacou. Entretanto, existe
a limitação de que ainda não foram aplicados testes que de fato confirmem a não existência de tendência. Para
tal, seria necessário retirar a sazonalizadade da série e observar como a série se comprtaria. Esta é apenas
uma análise de dignótico que indica um modelo de série com uma sazonalidade que precisa ser tratada e que
a série original necessita da aplicação de testes mais avançados. No mais, o modelo 3 previu relativamente
bem no sentido de que acompanha a queda e os picos.
Tendo como base o IGPM (Índice Geral de Preços do Mercado), que têm é cálculado com os mesmos índices
do IGP-DI, mudando apenas o fato de que o IGPM considera os preços entre os dias 21 de um mês e 20
do mês seguinte, e é divulgado mensalmente, ou seja, muda apenas o período, temos que se os preços tem
alta, o índice sobe, espelhando a desvalorização do real em relação a outras moedas, com impactos sobre
os rendimentos dos ativos.Caso a taxa de juros da moeda americana aumente e o dólar esteja valorizado,
produtos importados ficam mais caros. Isso influencia os preços praticados no Brasil. Quando há queda,
ocorre o inverso dos fenômenos supramencionados.
Ademais, com a evolução do índice IGPM, a correção não ocorre com a mesma rapidez na rentabilidade de sua
carteira. Por isso, todo investimento que não esteja protegido em relação à inflação pode sofrer consequências,
perdendo rentabilidade.Além disso, grandes acontecimentos influenciam o IGP-M, por exemplo eleições, crises
humanitárias e greves. Assim, os mesmos fatídicos ocorre para o IGP-Di.

26

Você também pode gostar