download <- FALSE
if (download) {
library(sidrar)
## 2000-2006
m1 <- seq.Date(from=as.Date("1999-08-01"),to=as.Date("2006-06-01"), by="month")|>substr(start = 1,stop = 7)|>gsub(pattern="-",replacement="")|>paste(collapse=",")
ipca1 <- get_sidra(api=paste0("/t/655/n1/all/v/all/p/",m1, "/c315/7169,7170,7445,7486,7558,7625,7660,7712,7766,7786/d/v63%202"))%>%janitor::clean_names()
## 7/2006-12/2011
m2 <- seq.Date(from=as.Date("2006-07-01"),to=as.Date("2011-12-01"), by="month")|>substr(start = 1,stop = 7)|>gsub(pattern="-",replacement="")|>paste(collapse=",")
ipca2 <- get_sidra(api=paste0("/t/2938/n1/all/v/63/p/", m2, "/c315/7169,7170,7445,7486,7558,7625,7660,7712,7766,7786/d/v63%202"))%>%janitor::clean_names()
## 1/2012-12/2019
m3 <- seq.Date(from=as.Date("2012-01-01"),to=as.Date("2019-12-01"), by="month")|>substr(start = 1,stop = 7)|>gsub(pattern="-",replacement="")|>paste(collapse=",")
ipca3 <- get_sidra(api=paste0("/t/1419/n1/all/v/63/p/", m3, "/c315/7169,7170,7445,7486,7558,7625,7660,7712,7766,7786/d/v63%202"))%>%janitor::clean_names()
## 1/2020-
m4 <- seq.Date(from=as.Date("2020-01-01"),to=as.Date("2024-06-01"), by="month")|>substr(start = 1,stop = 7)|>gsub(pattern="-",replacement="")|>paste(collapse=",")
ipca4 <- get_sidra(api=paste0("/t/7060/n1/all/v/63/p/", m4, "/c315/7169,7170,7445,7486,7558,7625,7660,7712,7766,7786/d/v63%202"))%>%janitor::clean_names()
ipca_all <- bind_rows(ipca1,ipca2,ipca3,ipca4)%>%
mutate(date=lubridate::ym(mes_codigo))%>%
group_by(geral_grupo_subgrupo_item_e_subitem)
readr::write_rds(ipca_all,here::here("data/ipca_all.rds"))
} else {
ipca_all <- readr::read_rds(here::here("data/ipca_all.rds"))
}
## reescalona indice para que o primeiro mes seja = 1
ipca_r <- ipca_all%>%
group_by(geral_grupo_subgrupo_item_e_subitem)%>%
arrange(date)%>%
mutate(indice=cumprod(1 + valor/100))%>%
## filtra um mes por ano
filter(lubridate::month(date)==lubridate::month(max(date)))%>%
mutate(indice=indice/indice[1])
ipca_i <- ipca_r%>%filter(geral_grupo_subgrupo_item_e_subitem=="Índice geral")
ipca <- ipca_r%>%
anti_join(ipca_i)%>%
left_join(ipca_i, by=join_by(nivel_territorial_codigo, nivel_territorial, unidade_de_medida_codigo,
unidade_de_medida, brasil_codigo, brasil, variavel_codigo, variavel, mes_codigo, mes,
date), suffix=c("", "_geral"))%>%
ungroup%>%
mutate(indice_rel=100*indice/indice_geral)%>%
transmute(date,indice_rel, categoria=substr(start = 3, stop = 10000, geral_grupo_subgrupo_item_e_subitem))
## Joining with `by = join_by(nivel_territorial_codigo, nivel_territorial,
## unidade_de_medida_codigo, unidade_de_medida, valor, brasil_codigo, brasil,
## variavel_codigo, variavel, mes_codigo, mes,
## geral_grupo_subgrupo_item_e_subitem_codigo,
## geral_grupo_subgrupo_item_e_subitem, date, indice)`
p <- ggplot(data = ipca, aes(x=date,y=indice_rel, color=categoria)) +
geom_line() +
scale_x_date(limits=c(as.Date(NA), as.Date("2035-01-01")))+
hrbrthemes::theme_ft_rc() +
labs(x = "Data", y = glue::glue("Índice Relativo (Base: 100 em {format(min(ipca$date), '%m/%Y')}"), color = "Grupo de Produtos e Serviços") +
ggtitle("Evolução da Inflação dos Grupos de Produtos e Serviços\nem relação ao Indice Geral (IPCA)")+
labs(x="")
direct.label(p)
O gráfico acima ilustra a variação dos preços de diferentes grupos de produtos e serviços em relação ao índice geral de preços (IPCA) no Brasil, de 2000 a 2024. Por exemplo, se o índice for de 125, significa que a inflação da categoria foi 25% maior do que a medida pelo índice geral. Correspondentemente, um índice de 50 denota uma inflação na categoria 50% menor do que a do índice geral.
Podemos observar que: