Introdução

Sobre o Dataset

Os dados estão agora disponíveis de 2004 a maio de 2021. O site oficial da ANP tem dados mensais até fevereiro de 2022, mas como esse conjunto de dados é organizado semanalmente, será atualizado para 2022, assim que essas informações estiverem disponíveis.

Os dados

A Agência Nacional de Petróleo, Gás Natural e Biocombustíveis (ANP) divulga relatórios semanais de preços de gás, diesel e outros combustíveis utilizados no transporte em todo o país. Esses conjuntos de dados trazem o valor médio por litro, o número de postos de gasolina analisados e outras informações agrupadas por regiões e estados em todo o país.

Como dito anteriormente, esses conjuntos de dados são fornecidos pela ANP, e são atualizados regularmente com novas datas e informações - que podem ser recuperadas aqui Agência Nacional de Petróleo (2004-2021) (em português).

res <- knitr::knit_child('_example_body.Rmd', quiet = TRUE)
cat(res, sep = '\n')
# Read data
dados <- read_csv('preco-combustivel-2004-2021.csv')
# glimpse(dados)

Análise exploratória dos dados

As análises aqui realizadas serão divididas em perguntas, acompanhadas de sua motivação, para com isso guiar as análises realizadas na base utilizada.

Primero ponto

A quantidade de postos de combustíveis e suas respectivas regiões, isso pode influenciar os preços ?.

quantidade_regiao <- aggregate(dados$`NÚMERO DE POSTOS PESQUISADOS`, by=list(dados$REGIÃO), FUN=sum)
quantidade_regiao <- quantidade_regiao[order(quantidade_regiao$x),]

N POSTOS PESQUISADOS

Grafico
quantidade_regiao <- quantidade_regiao[order(quantidade_regiao$x),]

ggplot(quantidade_regiao, aes(x = Group.1, y = x)) + 
  geom_bar(stat = "identity", fill = "royalblue", color = "black", alpha = 0.6) +
  labs(x = "REGIÃO", y = "NÚMERO DE POSTOS") +
  theme_minimal()

N DE POSTOS PESQUISADOS
tab <-quantidade_regiao
colnames(tab)[colnames(tab) == 'Group.1'] <- 'REGIÃO'
colnames(tab)[colnames(tab) == 'x'] <- 'NÚMERO DE POSTOS PESQUISADOS'

kable(tab)
REGIÃO NÚMERO DE POSTOS PESQUISADOS
3 NORTE 1754917
1 CENTRO OESTE 2284267
5 SUL 4806124
2 NORDESTE 4882880
4 SUDESTE 12981725
PREÇO MÉD REV
dados_regiao_max <- aggregate(dados$`PREÇO MÉDIO REVENDA`, by = list(dados$REGIÃO), FUN = max)

tab <-dados_regiao_max
colnames(tab)[colnames(tab) == 'Group.1'] <- 'REGIÃO'
colnames(tab)[colnames(tab) == 'x'] <- 'PREÇO MÉDIO REVENDA'

kable(tab)
REGIÃO PREÇO MÉDIO REVENDA
CENTRO OESTE 105.194
NORDESTE 91.725
NORTE 107.500
SUDESTE 87.091
SUL 91.189
PREÇO MIN REV
dados_regiao_min <- aggregate(dados$`PREÇO MÉDIO REVENDA`, by=list(dados$REGIÃO), FUN=min)

tab <-dados_regiao_min
colnames(tab)[colnames(tab) == 'Group.1'] <- 'REGIÃO'
colnames(tab)[colnames(tab) == 'x'] <- 'PREÇO MINIO REVENDA'

kable(tab)
REGIÃO PREÇO MINIO REVENDA
CENTRO OESTE 1.097
NORDESTE 0.975
NORTE 1.219
SUDESTE 0.766
SUL 0.922

De acordo com a análise da quantidade de combustíveis por região, entendemos que a região influencia no preço.

Segundo ponto

Qual a média de valores dos combustíveis durante a pandemia (2020-2021) no Brasil? Faça o mesmo com cada região.

dados$DATA_INICIAL <- as.Date(dados$`DATA INICIAL`)
dados$Ano <- format(dados$DATA_INICIAL, "%Y")


data_inicial <- 2020
data_final <- 2022

df_pandemia <- dados[dados$Ano >= data_inicial & dados$Ano < data_final, ]

dados_regiao <- df_pandemia %>%
  group_by(REGIÃO) %>%
  summarize(`PREÇO MÉDIO REVENDA` = round(mean(`PREÇO MÉDIO REVENDA`), 2))

dados_regiao <- dados_regiao[order(dados_regiao$`PREÇO MÉDIO REVENDA`),]

kable(dados_regiao)
REGIÃO PREÇO MÉDIO REVENDA
SUDESTE 14.19
SUL 14.86
NORDESTE 15.06
CENTRO OESTE 16.73
NORTE 19.01

Terceiro ponto

Quais foram as regiões com os valores mais altos e qual período? Assim como os valores mais baixos e suas respectivas datas.

# Região com o preço mais alto
preco_maximo <- aggregate(dados$`PREÇO MÉDIO REVENDA`, by = list(dados$REGIÃO), FUN = max)
regiao_preco_maximo <- preco_maximo$Group.1[which.max(preco_maximo$x)]
valor_preco_maximo <- max(preco_maximo$x)


# Região com o preço mais baixo
preco_minimo <- aggregate(dados$`PREÇO MÉDIO REVENDA`, by = list(dados$REGIÃO), FUN = min)
regiao_preco_minimo <- preco_minimo$Group.1[which.min(preco_minimo$x)]
valor_preco_minimo <- min(preco_minimo$x)

# Período do preço mais alto
periodo_preco_maximo <- dados[dados$REGIÃO == regiao_preco_maximo & 
                               dados$`PREÇO MÉDIO REVENDA` == valor_preco_maximo, 
                               c("DATA INICIAL", "DATA FINAL")]

# Período do preço mais baixo
periodo_preco_minimo <- dados[dados$REGIÃO == regiao_preco_minimo & 
                               dados$`PREÇO MÉDIO REVENDA` == valor_preco_minimo, 
                               c("DATA INICIAL", "DATA FINAL")]

cat("Região com o preço mais alto:", regiao_preco_maximo, "(Valor: R$", valor_preco_maximo,")\nPeríodo do preço mais alto:", paste(periodo_preco_maximo$`DATA INICIAL`, collapse = ", "), "a", paste(periodo_preco_maximo$`DATA FINAL`, collapse = ", "), "\n\nRegião com o preço mais baixo:", regiao_preco_minimo, "(Valor: R$", valor_preco_minimo, ")\nPeríodo do preço mais baixo:", paste(periodo_preco_minimo$`DATA INICIAL`, collapse = ", "), "a", paste(periodo_preco_minimo$`DATA FINAL`, collapse = ", "), "\n")
Região com o preço mais alto: NORTE (Valor: R$ 107.5 )
Período do preço mais alto: 2021-03-14 a 2021-03-20 

Região com o preço mais baixo: SUDESTE (Valor: R$ 0.766 )
Período do preço mais baixo: 2004-05-16 a 2004-05-22 

Plote histogramas / boxplots

Por região

Histogramas

#  Histogramas por região
ggplot(dados, aes(x = `PREÇO MÉDIO REVENDA`, fill = REGIÃO)) +
  geom_histogram(position = "stack", bins = 30) +
  geom_density(aes(y = ..density..), alpha = 0.5) +
  labs(title = "Distribuição de Preços por Região",
       x = "Preço", 
       y = "Contagem", 
       fill = "Região") +
  theme_minimal()

Boxplots

# Boxplots por região
ggplot(dados, aes(x = `PREÇO MÉDIO REVENDA`, y = REGIÃO)) +
  geom_boxplot() +
  labs(title = "Boxplots de Preço por Região",
       x = "Preço Médio Revenda", 
       y = "Região") +
  theme_minimal()

Por produto

Histogramas

#  Histogramas por região
ggplot(dados, aes(x = `PREÇO MÉDIO REVENDA`, fill = PRODUTO)) +
  geom_histogram(position = "stack", bins = 30) +
  geom_density(aes(y = ..density..), alpha = 0.5) +
  labs(title = "Distribuição de Preços por Produto",
       x = "Preço", 
       y = "Contagem", 
       fill = "Produto") +
  theme_minimal()

Boxplots

# Boxplots por produto
ggplot(dados, aes(x = `PREÇO MÉDIO REVENDA`, y = PRODUTO)) +
  geom_boxplot() +
  labs(title = "Boxplots de Preços por Produto",
       x = "Preço Médio Revenda", 
       y = "Produto") +
  theme_minimal()

Quarto ponto

Você notou diferenças nítidas dos preços em um curto período de tempo? Você percebeu uma grande diferença de valores nas regiões/estados no mesmo período

dados_grafico <- dados[, c("REGIÃO", "DATA INICIAL", "PREÇO MÉDIO REVENDA", "ESTADO")]

# Separando o dataframe acima por região
dados_centro_oeste <- dados_grafico[dados_grafico$REGIÃO == "CENTRO OESTE", ]
dados_nordeste <- dados_grafico[dados_grafico$REGIÃO == "NORDESTE", ]
dados_norte <- dados_grafico[dados_grafico$REGIÃO == "NORTE", ]
dados_sul <- dados_grafico[dados_grafico$REGIÃO == "SUL", ]
dados_sudeste <- dados_grafico[dados_grafico$REGIÃO == "SUDESTE", ]

#kable( head(dados_grafico, 15))

CENTRO OESTE
# Plotando o gráfico de linha para cada estado do Centro Oeste
for (estado in unique(dados_centro_oeste$ESTADO)) {
  dados_estado <- dados_centro_oeste[dados_centro_oeste$ESTADO == estado, ]
  dado_agregado <- aggregate(dados_estado$`PREÇO MÉDIO REVENDA`, by = list(dados_estado$`DATA INICIAL`, dados_estado$ESTADO), FUN = max)
  names(dado_agregado) <- c("DATA.INICIAL", "ESTADO", "PREÇO.MÉDIO.REVENDA")
  #dado_agregado <- dado_agregado[order(dado_agregado$`DATA INICIAL`), ]

  plot(dado_agregado$DATA.INICIAL, dado_agregado$PREÇO.MÉDIO.REVENDA, type = "l", xlab = "Tempo", ylab = "Preço", main = paste("Variação de Preços no Estado", estado))
}

Nos estados do Centro Oeste houve grande queda seguida de alta nos preços no Distrito Federal em meados de 2006 e também em 2018, a qual também coincidiu com uma grande queda no mesmo período no estado de Goiás.

NORDESTE
# Plotando o gráfico de linha para cada estado do Centro Oeste
for (estado in unique(dados_nordeste$ESTADO)) {
  dados_estado <- dados_nordeste[dados_nordeste$ESTADO == estado, ]
  dado_agregado <- aggregate(dados_estado$`PREÇO MÉDIO REVENDA`, by = list(dados_estado$`DATA INICIAL`, dados_estado$ESTADO), FUN = max)
  names(dado_agregado) <- c("DATA.INICIAL", "ESTADO", "PREÇO.MÉDIO.REVENDA")
  #dado_agregado <- dado_agregado[order(dado_agregado$`DATA INICIAL`), ]

  plot(dado_agregado$DATA.INICIAL, dado_agregado$PREÇO.MÉDIO.REVENDA, type = "l", xlab = "Tempo", ylab = "Preço", main = paste("Variação de Preços no Estado", estado))
}

Já no Nordeste, essa queda alta em 2006 também aconteceu no Maranhão e no Piauí, enquanto que a queda em 2018 coincidiu em Sergipe e Alagoas.

Norte
# Plotando o gráfico de linha para cada estado do Centro Oeste
for (estado in unique(dados_norte$ESTADO)) {
  dados_estado <- dados_norte[dados_norte$ESTADO == estado, ]
  dado_agregado <- aggregate(dados_estado$`PREÇO MÉDIO REVENDA`, by = list(dados_estado$`DATA INICIAL`, dados_estado$ESTADO), FUN = max)
  names(dado_agregado) <- c("DATA.INICIAL", "ESTADO", "PREÇO.MÉDIO.REVENDA")
  #dado_agregado <- dado_agregado[order(dado_agregado$`DATA INICIAL`), ]

  plot(dado_agregado$DATA.INICIAL, dado_agregado$PREÇO.MÉDIO.REVENDA, type = "l", xlab = "Tempo", ylab = "Preço", main = paste("Variação de Preços no Estado", estado))
}

SUL
# Plotando o gráfico de linha para cada estado do Centro Oeste
for (estado in unique(dados_sul$ESTADO)) {
  dados_estado <- dados_sul[dados_sul$ESTADO == estado, ]
  dado_agregado <- aggregate(dados_estado$`PREÇO MÉDIO REVENDA`, by = list(dados_estado$`DATA INICIAL`, dados_estado$ESTADO), FUN = max)
  names(dado_agregado) <- c("DATA.INICIAL", "ESTADO", "PREÇO.MÉDIO.REVENDA")
  #dado_agregado <- dado_agregado[order(dado_agregado$`DATA INICIAL`), ]

  plot(dado_agregado$DATA.INICIAL, dado_agregado$PREÇO.MÉDIO.REVENDA, type = "l", xlab = "Tempo", ylab = "Preço", main = paste("Variação de Preços no Estado", estado))
}

Já nos estados do Norte e do Sul não houve variações tão bruscas quanto nos outros estados, com alguns picos e baixas menores coincidindo em alguns desses mesmos períodos.

SUDESTE
# Plotando o gráfico de linha para cada estado do Centro Oeste
for (estado in unique(dados_sudeste$ESTADO)) {
  dados_estado <- dados_sudeste[dados_sudeste$ESTADO == estado, ]
  dado_agregado <- aggregate(dados_estado$`PREÇO MÉDIO REVENDA`, by = list(dados_estado$`DATA INICIAL`, dados_estado$ESTADO), FUN = max)
  names(dado_agregado) <- c("DATA.INICIAL", "ESTADO", "PREÇO.MÉDIO.REVENDA")
  #dado_agregado <- dado_agregado[order(dado_agregado$`DATA INICIAL`), ]

  plot(dado_agregado$DATA.INICIAL, dado_agregado$PREÇO.MÉDIO.REVENDA, type = "l", xlab = "Tempo", ylab = "Preço", main = paste("Variação de Preços no Estado", estado))
}

Por fim, no Sudeste, houve duas quedas grandes no Espírito Santo, mas em momentos diferentes. A primeira em 2009/2010 e a segunda em meados de 2020/2021.

Referências

Agência Nacional de Petróleo, Gás Natural e Biocombustíveis (ANP). 2004-2021. “Série Histórica Do Levantamento de Preços.” https://www.gov.br/anp/pt-br/assuntos/precos-e-defesa-da-concorrencia/precos/precos-revenda-e-de-distribuicao-combustiveis/serie-historica-do-levantamento-de-precos.