erico andre da silva

# Read data
dados <- read_csv('preco-combustivel-2004-2021.csv')
## Rows: 120823 Columns: 18
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (10): REGIÃO, ESTADO, PRODUTO, UNIDADE DE MEDIDA, MARGEM MÉDIA REVENDA,...
## dbl   (6): NÚMERO DE POSTOS PESQUISADOS, PREÇO MÉDIO REVENDA, DESVIO PADRÃO ...
## date  (2): DATA INICIAL, DATA FINAL
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# glimpse(dados)
# Convert dates to datetime
dados$DATA_INICIAL <- as.POSIXct(dados$'DATA INICIAL', format = "%d/%m/%Y")
dados$DATA_FINAL <- as.POSIXct(dados$'DATA FINAL', format = "%d/%m/%Y")
  1. Faça a exploração de todos os dados com seus respectivos valores. Analise a quantidade de postos de combustíveis e suas respectivas regiões, isso pode influenciar os preços? Faça um comparativo entre as mesmas e represente-as em gráficos.

NÚMERO DE POSTOS PESQUISADOS

# Sum of number of gas stations by region
quantidade_regiao <- aggregate(dados$`NÚMERO DE POSTOS PESQUISADOS`, by=list(dados$REGIÃO), FUN=sum)
quantidade_regiao <- quantidade_regiao[order(quantidade_regiao$x),]
quantidade_regiao
##        Group.1        x
## 3        NORTE  1754917
## 1 CENTRO OESTE  2284267
## 5          SUL  4806124
## 2     NORDESTE  4882880
## 4      SUDESTE 12981725
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()

PREÇO MÉDIO REVENDA

dados_regiao_min <- aggregate(dados$`PREÇO MÉDIO REVENDA`, by=list(dados$REGIÃO), FUN=min)
dados_regiao_min
##        Group.1     x
## 1 CENTRO OESTE 1.097
## 2     NORDESTE 0.975
## 3        NORTE 1.219
## 4      SUDESTE 0.766
## 5          SUL 0.922

PREÇO MÉDIO REVENDA

dados_regiao_max <- aggregate(dados$`PREÇO MÉDIO REVENDA`, by = list(dados$REGIÃO), FUN = max)
dados_regiao_max
##        Group.1       x
## 1 CENTRO OESTE 105.194
## 2     NORDESTE  91.725
## 3        NORTE 107.500
## 4      SUDESTE  87.091
## 5          SUL  91.189
preco_max <- aggregate(dados$`PREÇO MÉDIO REVENDA`, by = list(dados$REGIÃO), FUN = max)
preco_max
##        Group.1       x
## 1 CENTRO OESTE 105.194
## 2     NORDESTE  91.725
## 3        NORTE 107.500
## 4      SUDESTE  87.091
## 5          SUL  91.189

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

2) Qual a média e mediana 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")

head(dados)
## # A tibble: 6 × 21
##   `DATA INICIAL` `DATA FINAL` REGIÃO       ESTADO PRODUTO NÚMERO DE POSTOS PES…¹
##   <date>         <date>       <chr>        <chr>  <chr>                    <dbl>
## 1 2004-05-09     2004-05-15   CENTRO OESTE DISTR… ETANOL…                    127
## 2 2004-05-09     2004-05-15   CENTRO OESTE GOIAS  ETANOL…                    387
## 3 2004-05-09     2004-05-15   CENTRO OESTE MATO … ETANOL…                    192
## 4 2004-05-09     2004-05-15   CENTRO OESTE MATO … ETANOL…                    162
## 5 2004-05-09     2004-05-15   NORDESTE     ALAGO… ETANOL…                    103
## 6 2004-05-09     2004-05-15   NORDESTE     BAHIA  ETANOL…                    408
## # ℹ abbreviated name: ¹​`NÚMERO DE POSTOS PESQUISADOS`
## # ℹ 15 more variables: `UNIDADE DE MEDIDA` <chr>, `PREÇO MÉDIO REVENDA` <dbl>,
## #   `DESVIO PADRÃO REVENDA` <dbl>, `PREÇO MÍNIMO REVENDA` <dbl>,
## #   `PREÇO MÁXIMO REVENDA` <dbl>, `MARGEM MÉDIA REVENDA` <chr>,
## #   `COEF DE VARIAÇÃO REVENDA` <dbl>, `PREÇO MÉDIO DISTRIBUIÇÃO` <chr>,
## #   `DESVIO PADRÃO DISTRIBUIÇÃO` <chr>, `PREÇO MÍNIMO DISTRIBUIÇÃO` <chr>,
## #   `PREÇO MÁXIMO DISTRIBUIÇÃO` <chr>, `COEF DE VARIAÇÃO DISTRIBUIÇÃO` <chr>, …
dados_filtered <- dados[dados$Ano >= 2020 & dados$Ano < 2022, ]
#rownames(dados) <- dados$DATA_INICIAL
#dados$DATA_INICIAL <- NULL

head(dados, 2)
## # A tibble: 2 × 21
##   `DATA INICIAL` `DATA FINAL` REGIÃO       ESTADO PRODUTO NÚMERO DE POSTOS PES…¹
##   <date>         <date>       <chr>        <chr>  <chr>                    <dbl>
## 1 2004-05-09     2004-05-15   CENTRO OESTE DISTR… ETANOL…                    127
## 2 2004-05-09     2004-05-15   CENTRO OESTE GOIAS  ETANOL…                    387
## # ℹ abbreviated name: ¹​`NÚMERO DE POSTOS PESQUISADOS`
## # ℹ 15 more variables: `UNIDADE DE MEDIDA` <chr>, `PREÇO MÉDIO REVENDA` <dbl>,
## #   `DESVIO PADRÃO REVENDA` <dbl>, `PREÇO MÍNIMO REVENDA` <dbl>,
## #   `PREÇO MÁXIMO REVENDA` <dbl>, `MARGEM MÉDIA REVENDA` <chr>,
## #   `COEF DE VARIAÇÃO REVENDA` <dbl>, `PREÇO MÉDIO DISTRIBUIÇÃO` <chr>,
## #   `DESVIO PADRÃO DISTRIBUIÇÃO` <chr>, `PREÇO MÍNIMO DISTRIBUIÇÃO` <chr>,
## #   `PREÇO MÁXIMO DISTRIBUIÇÃO` <chr>, `COEF DE VARIAÇÃO DISTRIBUIÇÃO` <chr>, …
data_inicial <- 2020
data_final <- 2022

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

head(df_pandemia, 5)
## # A tibble: 5 × 21
##   `DATA INICIAL` `DATA FINAL` REGIÃO   ESTADO   PRODUTO   NÚMERO DE POSTOS PES…¹
##   <date>         <date>       <chr>    <chr>    <chr>                      <dbl>
## 1 2020-01-05     2020-01-11   NORTE    ACRE     ETANOL H…                     17
## 2 2020-01-05     2020-01-11   NORDESTE ALAGOAS  ETANOL H…                     52
## 3 2020-01-05     2020-01-11   NORTE    AMAPA    ETANOL H…                      3
## 4 2020-01-05     2020-01-11   NORTE    AMAZONAS ETANOL H…                     40
## 5 2020-01-05     2020-01-11   NORDESTE BAHIA    ETANOL H…                    331
## # ℹ abbreviated name: ¹​`NÚMERO DE POSTOS PESQUISADOS`
## # ℹ 15 more variables: `UNIDADE DE MEDIDA` <chr>, `PREÇO MÉDIO REVENDA` <dbl>,
## #   `DESVIO PADRÃO REVENDA` <dbl>, `PREÇO MÍNIMO REVENDA` <dbl>,
## #   `PREÇO MÁXIMO REVENDA` <dbl>, `MARGEM MÉDIA REVENDA` <chr>,
## #   `COEF DE VARIAÇÃO REVENDA` <dbl>, `PREÇO MÉDIO DISTRIBUIÇÃO` <chr>,
## #   `DESVIO PADRÃO DISTRIBUIÇÃO` <chr>, `PREÇO MÍNIMO DISTRIBUIÇÃO` <chr>,
## #   `PREÇO MÁXIMO DISTRIBUIÇÃO` <chr>, `COEF DE VARIAÇÃO DISTRIBUIÇÃO` <chr>, …
dados_df <- dados %>%
  group_by(PRODUTO) %>%
  summarize(`PREÇO MÉDIO REVENDA` = round(mean(`PREÇO MÉDIO REVENDA`), 2),
            `PREÇO MÍNIMO REVENDA` = round(mean(`PREÇO MÍNIMO REVENDA`), 2),
            `PREÇO MÁXIMO REVENDA` = round(mean(`PREÇO MÁXIMO REVENDA`), 2))
dados_pandemia <- df_pandemia %>%
  group_by(PRODUTO) %>%
  summarize(`PREÇO MÉDIO REVENDA` = round(mean(`PREÇO MÉDIO REVENDA`), 2)) %>%
  arrange(`PREÇO MÉDIO REVENDA`)

dados_pandemia
## # A tibble: 7 × 2
##   PRODUTO            `PREÇO MÉDIO REVENDA`
##   <chr>                              <dbl>
## 1 GNV                                 3.23
## 2 ETANOL HIDRATADO                    3.64
## 3 OLEO DIESEL                         3.69
## 4 OLEO DIESEL S10                     3.76
## 5 GASOLINA COMUM                      4.55
## 6 GASOLINA ADITIVADA                  5.05
## 7 GLP                                77.2
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`),]
dados_regiao
## # A tibble: 5 × 2
##   REGIÃO       `PREÇO MÉDIO REVENDA`
##   <chr>                        <dbl>
## 1 SUDESTE                       14.2
## 2 SUL                           14.9
## 3 NORDESTE                      15.1
## 4 CENTRO OESTE                  16.7
## 5 NORTE                         19.0

3) Entenda a distribuição de variáveis como de data / região / preço / produtos de cada região.

a) 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, ")\n")
## Região com o preço mais alto: NORTE (Valor: R$ 107.5 )
cat("Período do preço mais alto:", paste(periodo_preco_maximo$`DATA INICIAL`, collapse = ", "), "a", paste(periodo_preco_maximo$`DATA FINAL`, collapse = ", "), "\n")
## Período do preço mais alto: 2021-03-14 a 2021-03-20
cat("\n")
cat("Região com o preço mais baixo:", regiao_preco_minimo, "(Valor: R$", valor_preco_minimo, ")\n")
## Região com o preço mais baixo: SUDESTE (Valor: R$ 0.766 )
cat("Período do preço mais baixo:", paste(periodo_preco_minimo$`DATA INICIAL`, collapse = ", "), "a", paste(periodo_preco_minimo$`DATA FINAL`, collapse = ", "), "\n")
## Período do preço mais baixo: 2004-05-16 a 2004-05-22

b) Plote histogramas / boxplots

Histogramas por região

#  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 por região

# 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()

Histogramas por produto

# Histogramas por produto

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 por produto

# 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()

4) 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")]

head(dados_grafico, 5)
## # A tibble: 5 × 4
##   REGIÃO       `DATA INICIAL` `PREÇO MÉDIO REVENDA` ESTADO            
##   <chr>        <date>                         <dbl> <chr>             
## 1 CENTRO OESTE 2004-05-09                      1.29 DISTRITO FEDERAL  
## 2 CENTRO OESTE 2004-05-09                      1.16 GOIAS             
## 3 CENTRO OESTE 2004-05-09                      1.39 MATO GROSSO       
## 4 CENTRO OESTE 2004-05-09                      1.26 MATO GROSSO DO SUL
## 5 NORDESTE     2004-05-09                      1.18 ALAGOAS
# 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", ]
estados_centro_oeste <- unique(dados_centro_oeste$ESTADO)

# Plotando o gráfico de linha para cada estado do Centro Oeste
for (estado in estados_centro_oeste) {

cat(estado)
}
## DISTRITO FEDERALGOIASMATO GROSSOMATO GROSSO DO SUL
  dados_estado <- dados_centro_oeste[dados_centro_oeste$ESTADO == 'DISTRITO FEDERAL', ]
  dado_agregado <- aggregate(dados_estado$`PREÇO MÉDIO REVENDA`, 
                             by = list(dados_estado$`DATA INICIAL`, dados_estado$ESTADO), 
                             FUN = max)
  dado_agregado <- dado_agregado[order(dado_agregado$Group.1), ]
  
  ggplot(dado_agregado, aes(x = Group.1, y = x)) +
    geom_line() +
    labs(title = paste("Variação de Preços no Estado", estado),
         x = "Data Inicial", 
         y = "Preço Médio Revenda") +
    theme_minimal()

  dados_estado <- dados_centro_oeste[dados_centro_oeste$ESTADO == 'GOIAS', ]
  dado_agregado <- aggregate(dados_estado$`PREÇO MÉDIO REVENDA`, 
                             by = list(dados_estado$`DATA INICIAL`, dados_estado$ESTADO), 
                             FUN = max)
  dado_agregado <- dado_agregado[order(dado_agregado$Group.1), ]
  
  ggplot(dado_agregado, aes(x = Group.1, y = x)) +
    geom_line() +
    labs(title = paste("Variação de Preços no Estado", estado),
         x = "Data Inicial", 
         y = "Preço Médio Revenda") +
    theme_minimal()

  dados_estado <- dados_centro_oeste[dados_centro_oeste$ESTADO == 'MATO GROSSO', ]
  dado_agregado <- aggregate(dados_estado$`PREÇO MÉDIO REVENDA`, 
                             by = list(dados_estado$`DATA INICIAL`, dados_estado$ESTADO), 
                             FUN = max)
  dado_agregado <- dado_agregado[order(dado_agregado$Group.1), ]
  
  ggplot(dado_agregado, aes(x = Group.1, y = x)) +
    geom_line() +
    labs(title = paste("Variação de Preços no Estado", estado),
         x = "Data Inicial", 
         y = "Preço Médio Revenda") +
    theme_minimal()

  dados_estado <- dados_centro_oeste[dados_centro_oeste$ESTADO == 'MATO GROSSO DO SUL', ]
  dado_agregado <- aggregate(dados_estado$`PREÇO MÉDIO REVENDA`, 
                             by = list(dados_estado$`DATA INICIAL`, dados_estado$ESTADO), 
                             FUN = max)
  dado_agregado <- dado_agregado[order(dado_agregado$Group.1), ]
  
  ggplot(dado_agregado, aes(x = Group.1, y = x)) +
    geom_line() +
    labs(title = paste("Variação de Preços no Estado", estado),
         x = "Data Inicial", 
         y = "Preço Médio Revenda") +
    theme_minimal()