Exercício 1

Pergunta: Considere que é de interesse visualizar a série temporal (anual) do número de decolagens para as 10 empresas nacionais que mais decolaram no período disponível de dados. Faça duas visualizações uma para enfatizar a comparação entre as empresas e outra para enfatizar a visualização da série de cada empresa. Considere apenas os registros que tenham o número de decolagens.

## Instalando o pacote tidyverse
install.packages("tidyverse")
## Warning: o pacote 'tidyverse' está em uso e não será instalado
## Carregando o pacote tidyverse
library(tidyverse)


#Passo 1: Importando dados do tipo .csv

url <- "https://sistemas.anac.gov.br/dadosabertos/Voos%20e%20opera%C3%A7%C3%B5es%20a%C3%A9reas/Dados%20Estat%C3%ADsticos%20do%20Transporte%20A%C3%A9reo/Dados_Estatisticos.csv"
dados <- read_delim(url, delim = ";", skip = 1) #Descartar a primeira linha do arquivo que tem um dado fora do padrão e definir o separado ";"
## Rows: 1045525 Columns: 38
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (18): EMPRESA_SIGLA, EMPRESA_NOME, EMPRESA_NACIONALIDADE, AEROPORTO_DE_O...
## dbl (20): ANO, MES, PASSAGEIROS_PAGOS, PASSAGEIROS_GRATIS, CARGA_PAGA_KG, CA...
## 
## ℹ 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.
#head(dados)
#spec(dados) #Inspecionar os dados carregados e começar a entender sua organização

#Converter DECOLAGENS (remover milhar e ajustar vírgula decimal)
dados <- dados %>%
  mutate(
    DECOLAGENS = str_replace(DECOLAGENS, "\\.", ""),         
    DECOLAGENS = as.numeric(str_replace(DECOLAGENS, ",", ".")),  
    EMPRESA_NACIONALIDADE = str_to_upper(EMPRESA_NACIONALIDADE)
  )

#Filtrar empresas brasileiras com decolagens válidas
dados_filtrados <- dados %>%
  filter(EMPRESA_NACIONALIDADE == "BRASILEIRA", !is.na(DECOLAGENS))

#Selecionar top 10 empresas que mais decolaram no total
top10_empresas <- dados_filtrados %>%
  group_by(EMPRESA_NOME) %>%
  summarise(total_decolagens = sum(DECOLAGENS), .groups = "drop") %>%
  arrange(desc(total_decolagens)) %>%
  slice_head(n = 10)

#Filtrar dados apenas dessas 10 empresas
dados_top10 <- dados_filtrados %>%
  filter(EMPRESA_NOME %in% top10_empresas$EMPRESA_NOME)

#Agregar por ano e empresa
serie_anual <- dados_top10 %>%
  group_by(ANO, EMPRESA_NOME) %>%
  summarise(decolagens = sum(DECOLAGENS), .groups = "drop")

Visualização 1

#Visualização 1
ggplot(top10_empresas, aes(x = reorder(EMPRESA_NOME, total_decolagens), y = total_decolagens)) +
  geom_col(fill = "steelblue") +
  coord_flip() +
  labs(title = "Total de Decolagens – Top 10 Empresas Brasileiras",
       x = "Empresa",
       y = "Total de Decolagens") +
  theme_minimal()

Visualização 2

ggplot(serie_anual, aes(x = ANO, y = decolagens, color = EMPRESA_NOME)) +
  geom_line(linewidth = 1) +
  geom_point() +
  labs(title = "Evolução Anual de Decolagens – Top 10 Empresas Brasileiras",
       x = "Ano",
       y = "Número de Decolagens",
       color = "Empresa") +
  theme_minimal()

## Exercício

Pergunta: Faça uma visualização de dados comparar o número de passageiros pagantes entre empresas nacionais e estrangeiras ao longo dos anos.

dados <- dados %>%
  mutate(
    PASSAGEIROS_PAGOS = str_replace(PASSAGEIROS_PAGOS, "\\.", ""),
    PASSAGEIROS_PAGOS = as.numeric(str_replace(PASSAGEIROS_PAGOS, ",", ".")),
    EMPRESA_NACIONALIDADE = str_to_title(EMPRESA_NACIONALIDADE)  
  )

passageiros_por_ano <- dados %>%
  filter(!is.na(PASSAGEIROS_PAGOS)) %>%
  group_by(ANO, EMPRESA_NACIONALIDADE) %>%
  summarise(total_passageiros = sum(PASSAGEIROS_PAGOS), .groups = "drop")


ggplot(passageiros_por_ano, aes(x = ANO, y = total_passageiros, color = EMPRESA_NACIONALIDADE)) +
  geom_line(linewidth = 1) +
  geom_point(size = 2) +
  labs(
    title = "Evolução de Passageiros Pagantes – Empresas Brasileiras vs Estrangeiras",
    x = "Ano",
    y = "Total de Passageiros",
    color = "Nacionalidade"
  ) +
  theme_minimal()

Exercício 3

Pergunta: Faça uma visualização de dados comparar o número de passageiros pagantes entre empresas nacionais e estrangeiras de acordo com o grupo de voo.

dados <- dados %>%
  mutate(
    PASSAGEIROS_PAGOS = str_replace(PASSAGEIROS_PAGOS, "\\.", ""),
    PASSAGEIROS_PAGOS = as.numeric(str_replace(PASSAGEIROS_PAGOS, ",", ".")),
    EMPRESA_NACIONALIDADE = str_to_title(EMPRESA_NACIONALIDADE)  
  )


passageiros_por_grupo <- dados %>%
  filter(!is.na(PASSAGEIROS_PAGOS), !is.na(GRUPO_DE_VOO)) %>%
  group_by(GRUPO_DE_VOO, EMPRESA_NACIONALIDADE) %>%
  summarise(total_passageiros = sum(PASSAGEIROS_PAGOS), .groups = "drop")


ggplot(passageiros_por_grupo, aes(x = GRUPO_DE_VOO, y = total_passageiros, fill = EMPRESA_NACIONALIDADE)) +
  geom_col(position = "dodge") +
  labs(
    title = "Passageiros Pagantes por Grupo de Voo e Nacionalidade",
    x = "Grupo de Voo",
    y = "Total de Passageiros",
    fill = "Nacionalidade"
  ) +
  theme_minimal()

Exercício 4

Pergunta: Faça uma visualização para enfatizar a distribuição da variável número de passageiros pagantes de acordo com a região de origem e natureza do voo. Enfatize a comparação entre DOMÉSTICA e INTERNACIONAL para cada região de origem. Para criar o gráfico use o log10 da variável PASSAGEIROS_PAGOS.

dados <- dados %>%
  mutate(
    PASSAGEIROS_PAGOS = str_replace(PASSAGEIROS_PAGOS, "\\.", ""),
    PASSAGEIROS_PAGOS = as.numeric(str_replace(PASSAGEIROS_PAGOS, ",", ".")),
    NATUREZA = str_to_title(NATUREZA),                          
    AEROPORTO_DE_ORIGEM_REGIAO = str_to_title(AEROPORTO_DE_ORIGEM_REGIAO)
  )


dados_distribuicao <- dados %>%
  filter(!is.na(PASSAGEIROS_PAGOS), PASSAGEIROS_PAGOS > 0, !is.na(NATUREZA), !is.na(AEROPORTO_DE_ORIGEM_REGIAO))

# Visualização com escala logarítmica (log10)
ggplot(dados_distribuicao, aes(x = AEROPORTO_DE_ORIGEM_REGIAO, y = log10(PASSAGEIROS_PAGOS), fill = NATUREZA)) +
  geom_boxplot(outlier.alpha = 0.1) +
  labs(
    title = "Distribuição (log10) de Passageiros Pagantes por Região e Natureza do Voo",
    x = "Região de Origem",
    y = "log10(Número de Passageiros Pagantes)",
    fill = "Natureza do Voo"
  ) +
  theme_minimal()

## Exercício 6

Pergunta: Crie uma variável que indique a eficiencia no uso do combustível como sendo a razão entre o DISTANCIA_VOADA_KM e COMBUSTIVEL_LITROS. Compare as empresas de acordo com a região de origem e destino. Use a escala y em log10 para facilitar a comparação das regiões.

dados <- dados %>%
  mutate(
    DISTANCIA_VOADA_KM = str_replace(DISTANCIA_VOADA_KM, "\\.", ""),
    DISTANCIA_VOADA_KM = as.numeric(str_replace(DISTANCIA_VOADA_KM, ",", ".")),
    
    COMBUSTIVEL_LITROS = str_replace(COMBUSTIVEL_LITROS, "\\.", ""),
    COMBUSTIVEL_LITROS = as.numeric(str_replace(COMBUSTIVEL_LITROS, ",", ".")),
    
    AEROPORTO_DE_ORIGEM_REGIAO = str_to_title(AEROPORTO_DE_ORIGEM_REGIAO),
    AEROPORTO_DE_DESTINO_REGIAO = str_to_title(AEROPORTO_DE_DESTINO_REGIAO)
  )

dados_eficiencia <- dados %>%
  filter(
    !is.na(DISTANCIA_VOADA_KM),
    !is.na(COMBUSTIVEL_LITROS),
    COMBUSTIVEL_LITROS > 0
  ) %>%
  mutate(eficiencia = DISTANCIA_VOADA_KM / COMBUSTIVEL_LITROS) %>%
  filter(is.finite(eficiencia), eficiencia > 0)

ggplot(dados_eficiencia, aes(x = AEROPORTO_DE_ORIGEM_REGIAO, y = eficiencia)) +
  geom_boxplot(aes(fill = AEROPORTO_DE_DESTINO_REGIAO), outlier.alpha = 0.1) +
  scale_y_log10() +
  labs(
    title = "Eficiência no Uso de Combustível (km/l) por Região de Origem e Destino",
    x = "Região de Origem",
    y = "Eficiência (log10 km/litro)",
    fill = "Região de Destino"
  ) +
  theme_minimal()

Exercício 6

Pergunta: Faça uma visualização para mostrar a relação entre o consumo de combustível e a distância voada. Considere empresas nacionais e internacionais e os diferentes anos para enriquecer a visualização. Considere transformar as variáveis e use alguma forma estatística para enfatizar a forma do relacionamento.

dados <- dados %>%
  mutate(
    DISTANCIA_VOADA_KM = str_replace(DISTANCIA_VOADA_KM, "\\.", ""),
    DISTANCIA_VOADA_KM = as.numeric(str_replace(DISTANCIA_VOADA_KM, ",", ".")),
    
    COMBUSTIVEL_LITROS = str_replace(COMBUSTIVEL_LITROS, "\\.", ""),
    COMBUSTIVEL_LITROS = as.numeric(str_replace(COMBUSTIVEL_LITROS, ",", ".")),
    
    EMPRESA_NACIONALIDADE = str_to_title(EMPRESA_NACIONALIDADE)
  )

dados_relacao <- dados %>%
  filter(
    !is.na(DISTANCIA_VOADA_KM),
    !is.na(COMBUSTIVEL_LITROS),
    DISTANCIA_VOADA_KM > 0,
    COMBUSTIVEL_LITROS > 0
  )
 

ggplot(dados_relacao, aes(x = DISTANCIA_VOADA_KM, y = COMBUSTIVEL_LITROS, color = as.factor(ANO))) +
  geom_point(alpha = 0.2) +
  scale_x_log10() +
  scale_y_log10() +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  labs(
    title = "Relação entre Consumo e Distância Voada (Cor por Ano)",
    x = "Distância Voada (km) [log10]",
    y = "Consumo de Combustível (litros) [log10]",
    color = "Ano"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Exercício 7

Pergunta: Baseado na visualização em 6 você diria que tem alguma incosistencia com esses dados? Justique.

Na região próxima de 1e+02 (≈ 100 km) e 1e+01 (≈ 10 litros), há densas colunas verticais e horizontais, o que é incomum. Pontos muito fora da tendência e há um congestionamento incomum na base do gráfico.

Exercício 8

Pergunta: Considerando apenas as empresas nacionais. Faça uma visualização para investigar se a região do aeroporto de origem influencia na relação entre combustível e distancia voada..

dados <- dados %>%
  mutate(
    DISTANCIA_VOADA_KM = str_replace(DISTANCIA_VOADA_KM, "\\.", ""),
    DISTANCIA_VOADA_KM = as.numeric(str_replace(DISTANCIA_VOADA_KM, ",", ".")),
    
    COMBUSTIVEL_LITROS = str_replace(COMBUSTIVEL_LITROS, "\\.", ""),
    COMBUSTIVEL_LITROS = as.numeric(str_replace(COMBUSTIVEL_LITROS, ",", ".")),
    
    EMPRESA_NACIONALIDADE = str_to_title(EMPRESA_NACIONALIDADE),
    AEROPORTO_DE_ORIGEM_REGIAO = str_to_title(AEROPORTO_DE_ORIGEM_REGIAO)
  )

dados_nacionais <- dados %>%
  filter(
    EMPRESA_NACIONALIDADE == "Brasileira",
    !is.na(DISTANCIA_VOADA_KM),
    !is.na(COMBUSTIVEL_LITROS),
    DISTANCIA_VOADA_KM > 0,
    COMBUSTIVEL_LITROS > 0
  )


ggplot(dados_nacionais, aes(x = DISTANCIA_VOADA_KM, y = COMBUSTIVEL_LITROS)) +
  geom_point(alpha = 0.1, color = "gray") +
  scale_x_log10() +
  scale_y_log10() +
  geom_smooth(method = "lm", se = FALSE, aes(color = AEROPORTO_DE_ORIGEM_REGIAO)) +
  labs(
    title = "Relação entre Combustível e Distância Voada por Região de Origem (Empresas Nacionais)",
    x = "Distância Voada (km) [log10]",
    y = "Consumo de Combustível (litros) [log10]",
    color = "Região de Origem"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Exercício 9

Pergunta: O indicador RTK (Revenue tonne kilometer) refere-se ao volume de toneladas quilômetros transportada.Faça uma visualização da relação deste indicador com o consumo de combustível. Filtre apenas observações com ambas variáveis maiores que zero. Considere também que é de interesse comparar essa relação entre os diferentes anos. Considere incluir alguma camada estatística para enfatizar o formato do relacionamento entre as variáveis..

dados <- dados %>%
  mutate(
    RTK = str_replace(RTK, "\\.", ""),
    RTK = as.numeric(str_replace(RTK, ",", ".")),
    
    COMBUSTIVEL_LITROS = str_replace(COMBUSTIVEL_LITROS, "\\.", ""),
    COMBUSTIVEL_LITROS = as.numeric(str_replace(COMBUSTIVEL_LITROS, ",", ".")),
    
    ANO = as.factor(ANO)  # Para usar em cores ou facetas
  )

dados_rtk <- dados %>%
  filter(!is.na(RTK), !is.na(COMBUSTIVEL_LITROS), RTK > 0, COMBUSTIVEL_LITROS > 0)

ggplot(dados_rtk, aes(x = RTK, y = COMBUSTIVEL_LITROS, color = ANO)) +
  geom_point(alpha = 0.15) +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  scale_x_log10() +
  scale_y_log10() +
  labs(
    title = "Relação entre RTK (Tonelada-Km) e Consumo de Combustível [log-log]",
    x = "RTK (Revenue Tonne Kilometer) [log10]",
    y = "Combustível (litros) [log10]",
    color = "Ano"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Exercício 10

Pergunta: O indicador ATK (Available tonne kilometer) refere-se ao volume de tonelada quilômetro oferecida pela companhia. Crie uma visualização para explorar a relação entre estes indicadores. Considere aspectos como GRUPO_DE_VOO e NATUREZA além do anos

dados <- dados %>%
  mutate(
    ATK = str_replace(ATK, "\\.", ""),
    ATK = as.numeric(str_replace(ATK, ",", ".")),
    
    RTK = str_replace(RTK, "\\.", ""),
    RTK = as.numeric(str_replace(RTK, ",", ".")),
    
    GRUPO_DE_VOO = str_to_title(GRUPO_DE_VOO),
    NATUREZA = str_to_title(NATUREZA)
  )

dados_atk_rtk <- dados %>%
  filter(!is.na(ATK), !is.na(RTK), ATK > 0, RTK > 0)

ggplot(dados_atk_rtk, aes(x = ATK, y = RTK)) +
  geom_point(
    aes(color = interaction(GRUPO_DE_VOO, NATUREZA), alpha = ANO),
    size = 1
  ) +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  scale_x_log10() +
  scale_y_log10() +
  scale_alpha_manual(values = rep(0.3, length(unique(dados_atk_rtk$ANO)))) +  # uniformizar a transparência
  labs(
    title = "Relação entre ATK (Oferta) e RTK (Demanda) com Grupo de Voo e Natureza",
    x = "ATK (toneladas x km) [log10]",
    y = "RTK (toneladas x km) [log10]",
    color = "Grupo x Natureza"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'