Projeto

Introdução

Desde a popularização do transporte aéreo, no século XX, os aviões causam sentimentos conflitantes aos seres humanos. Há uma mística criada por décadas de uso restrito à parcela mais rica da sociedade: utilizar um avião tornou-se um “símbolo de conquista” e manutenção de status social, visto que outros meios de transporte, como carros e motos, são amplamente acessíveis para todos os níveis socioeconômicos. Entretanto, de forma contraditória, ao mesmo tempo que este é possivelmente o meio de transporte mais cobiçado, também é um dos que mais causam medo e apreensão.

É comum ligar a televisão, ou acessar as redes sociais, e nos deparar com notícias sobre acidentes de moto ou carro com eventuais fatalidades. Pelas ruas, vemos dezenas de carros e motos, e a possibilidade de algum acidente acontecer parece uma conclusão óbvia, apesar de lamentável — mas raramente nos surpreende. O avião, por outro lado, é um transporte que a maioria das pessoas mal vê de perto, o que amplifica qualquer percepção de risco.

Logo, a ocorrência de um acidente aéreo é sempre vista como uma potencial tragédia. Casos com centenas de mortos — como a queda do Voo American Airlines 191 (1979), com 271 vítimas — ou extremamente midiáticos — como o acidente aéreo que matou todos os integrantes de Mamonas Assassinas em 1996 — contribuíram para consolidar no imaginário popular a ideia da alta periculosidade dos aviões.

Dessa forma, várias conclusões surgem dessa ideação popular: devo cancelar minha passagem se as condições climáticas estiverem ruins? E se o avião for muito antigo? Em que parte do trajeto ocorrem mais acidentes, na subida? É muito raro sobreviver a um acidente aéreo?

Nesta análise, irei esclarecer questionamentos desse tipo, demonstrando com base em dados coletados por décadas que muitas conclusões acerca desse meio de transporte têm como base o medo.

Pacotes Requeridos

Os pacotes utilizados nesta análise são:

  • dplyr: manipulação e transformação de dados
  • tidyr: reestruturação de dados (pivot)
  • ggplot2: criação de gráficos estáticos
  • plotly: criação de gráficos interativos
  • DT: exibição de tabelas interativas

Para instalá-los, execute no console:

install.packages(c("dplyr", "tidyr", "ggplot2", "plotly", "DT"))

Preparação dos Dados

O dataset escolhido (Historical Plane Crash Data) reúne dados de acidentes aéreos de 1918 a 2022. Este foi construído por meio do uso de Web Scraping para extrair informações do The Bureau of Aircraft Accidents Archives (B3A), o qual cataloga casos de acidente aéreo no mundo todo.

O Historical Plane Crash contém 28.536 linhas e 24 colunas, sendo estas: “Date”, “Time”, “Aircraft”, “Operator”, “Registration”, “Flight phase”, “Flight type”, “Survivors”, “Crash site”, “Schedule”, “MSN”, “YOM”, “Flight no.”, “Crash location”, “Country”, “Region”, “Crew on board”, “Crew fatalities”, “Pax on board”, “PAX fatalities”, “Other fatalities”, “Total fatalities”, “Circumstances” e “Crash cause”.

Dicionário

Coluna Tipo Descrição
Date character Data do acidente
Time character Hora do acidente
Aircraft character Modelo da aeronave
Operator character Operador ou companhia aérea
Registration character Matrícula operacional da aeronave
Flight phase character Fase do voo em que ocorreu o acidente
Flight type character Tipo de voo (comercial, militar, etc.)
Survivors character Indica se houve sobreviventes
Crash site character Local da queda (tipo de terreno ou ambiente)
Schedule character Rota do voo (origem - destino)
MSN character Número de Série do Fabricante
YOM integer Ano de fabricação da aeronave
Flight no. integer Número do voo
Crash location character Localização geográfica específica da queda
Country character País onde ocorreu o acidente
Region character Região do mundo
Crew on board integer Número de tripulantes a bordo
Crew fatalities integer Número de mortes entre a tripulação
Pax on board integer Número de passageiros a bordo
PAX fatalities integer Número de mortes entre os passageiros
Other fatalities integer Mortes de pessoas externas ao voo
Total fatalities integer Total de mortes no acidente
Circumstances character Circunstâncias do acidente
Crash cause character Causa do acidente

Abaixo está uma amostra com as primeiras 6 linhas do dataset:

dados <- read.csv("C:/Users/Jeane/Downloads/Plane Crashes.csv/Plane Crashes.csv",
                  stringsAsFactors = FALSE)

DT::datatable(head(dados), options = list(scrollX = TRUE, scrollY = "250px", dom = 't'))

Tratamento de Dados

Algumas colunas não são relevantes à análise, pois dizem respeito a valores de identificação ou que não acrescentam nenhuma particularidade, tendo sido, então, removidas do dataset analisado. Foram removidas:

  • Registration (Matrícula operacional do país)
  • Schedule (Rota do voo)
  • MSN (Número de Série do Fabricante)
  • Flight no. (Número do voo)
  • Crash location (Localização geográfica específica da queda)
  • Time (Horário da queda)

Além disso, os nomes das colunas também não seguem um padrão consistente — o read.csv() converte espaços em pontos automaticamente —, o que torna necessária uma etapa de renomeação antes da análise.

dados_limpos <- dados %>%
  select(-Registration, -Schedule, -MSN, -Flight.no., -Crash.location, -Time) %>%
  rename(
    Data              = Date,
    Aeronave          = Aircraft,
    Operador          = Operator,
    Fase_Voo          = Flight.phase,
    Tipo_Voo          = Flight.type,
    Sobreviventes     = Survivors,
    Local_Queda       = Crash.site,
    Ano_Fabricacao    = YOM,
    Pais              = Country,
    Regiao            = Region,
    Tripulantes       = Crew.on.board,
    Mortes_Tripulacao  = Crew.fatalities,
    Passageiros       = Pax.on.board,
    Mortes_Passageiros = PAX.fatalities,
    Outras_Mortes     = Other.fatalities,
    Total_Mortes      = Total.fatalities,
    Circunstancias    = Circumstances,
    Causa             = Crash.cause
  )

Abaixo está uma amostra com as primeiras 6 linhas do dataset LIMPO:

DT::datatable(head(dados_limpos), options = list(scrollX = TRUE, scrollY = "250px", dom = 't'))

Outra questão importante é o número de colunas com valores não informados. Mesmo com valores ausentes ou não identificados (NA, Unknown) em algumas colunas, não serão removidas nenhuma linha, pois há colunas que nunca possuem valores vazios e que agregam grande valor à análise, logo, remover uma linha seria de grande prejuízo analítico. Abaixo está uma contabilização das colunas que possuem o maior número de valores ausentes:

nas_por_coluna <- dados_limpos %>%
  summarise(across(everything(), ~ sum(is.na(.) | . == "" | . == "<NA>" | . == "Unknown" | . == "N/A" | . == "-" | . == "None" | . == " "))) %>%
  tidyr::pivot_longer(everything(), names_to = "Coluna", values_to = "Qtd_NAs") %>%
  filter(Qtd_NAs > 0) %>%
  mutate(Percentual = paste0(round(Qtd_NAs / nrow(dados_limpos) * 100, 1), "%")) %>%
  arrange(desc(Qtd_NAs))

DT::datatable(nas_por_coluna, options = list(scrollX = TRUE, scrollY = "300px", dom = 't'))

Análise Exploratória dos Dados

1. Como os acidentes evoluíram ao longo do tempo?

dados_limpos$Ano <- as.integer(substr(dados_limpos$Data, 1, 4))

acidentes_ano <- dados_limpos %>%
  filter(!is.na(Ano)) %>%
  group_by(Ano) %>%
  summarise(Total = n())

p1 <- ggplot(acidentes_ano, aes(x = Ano, y = Total)) +
  geom_line(color = "#2c7bb6", linewidth = 0.8) +
  geom_smooth(method = "loess", se = FALSE, color = "#d7191c", linetype = "dashed") +
  labs(title = "Acidentes aéreos por ano", x = "Ano", y = "Nº de acidentes") +
  theme_minimal()

ggplotly(p1)
## `geom_smooth()` using formula = 'y ~ x'

O gráfico revela um pico expressivo próximo a 1945, coincidindo com o fim da Segunda Guerra Mundial — período em que o volume de voos militares atingiu seu ápice histórico. Após esse pico, observa-se uma tendência consistente de queda, especialmente a partir da década de 1970, reflexo dos avanços tecnológicos, da maior regulação do setor e da evolução nos protocolos de segurança. Nos anos mais recentes, o número de acidentes atingiu os menores patamares desde o início do registro, o que evidencia que o transporte aéreo tornou-se progressivamente mais seguro ao longo das décadas.

2. Quais países concentram mais acidentes?

top_paises <- dados_limpos %>%
  filter(!is.na(Pais) & Pais != "" & Pais != "Unknown") %>%
  group_by(Pais) %>%
  summarise(Total = n()) %>%
  arrange(desc(Total)) %>%
  slice_head(n = 15)

p2 <- ggplot(top_paises, aes(x = reorder(Pais, Total), y = Total)) +
  geom_col(fill = "#2c7bb6") +
  coord_flip() +
  labs(title = "Top 15 países com mais acidentes", x = NULL, y = "Nº de acidentes") +
  theme_minimal()

ggplotly(p2)

Os Estados Unidos lideram com folga, acumulando mais de 6.000 registros — um número muito superior ao segundo colocado, o Reino Unido, com cerca de 2.300. Essa disparidade reflete não apenas o enorme volume de tráfego aéreo norte-americano, mas também o protagonismo dos EUA no desenvolvimento da aviação militar, especialmente durante as duas grandes guerras. Rússia e Canadá aparecem em seguida, ambos com histórico expressivo de operações militares e extensas redes de aviação doméstica. O Brasil figura entre os 15 países com mais acidentes, ocupando a sexta posição.

3. Em que fase do voo ocorrem mais acidentes?

fase <- dados_limpos %>%
  filter(!is.na(Fase_Voo) & Fase_Voo != "" & Fase_Voo != "Unknown") %>%
  mutate(Grupo = case_when(
    grepl("Takeoff|Take-off|Take off", Fase_Voo, ignore.case = TRUE) ~ "Decolagem",
    grepl("Landing|Approach|Descent", Fase_Voo, ignore.case = TRUE)  ~ "Pouso/Aproximação",
    grepl("Flight|Cruise|En route", Fase_Voo, ignore.case = TRUE)    ~ "Em Voo",
    TRUE ~ "Outras"
  )) %>%
  group_by(Grupo) %>%
  summarise(Total = n()) %>%
  mutate(Percentual = round(Total / sum(Total) * 100, 1),
         Label = paste0(Percentual, "%"))

p3 <- plot_ly(fase,
              labels = ~Grupo,
              values = ~Total,
              type = "pie",
              textinfo = "label+percent",
              hoverinfo = "label+value+percent",
              marker = list(colors = c("#d7191c", "#fdae61", "#aaaaaa", "#cccccc")),
              textfont = list(size = 13)) %>%
  layout(title = "Proporção de acidentes por fase do voo",
         legend = list(orientation = "h"))

p3

Contrariando a percepção popular de que o momento mais perigoso é quando o avião está em pleno voo, os dados mostram que decolagem e pouso concentram juntos cerca de 57,6% dos acidentes. A fase de pouso e aproximação é isoladamente a mais crítica (35,9%), seguida pela decolagem (21,7%). A fase em voo, apesar de representar a maior parte do tempo de qualquer trajeto, responde por apenas 41,1% dos acidentes — proporcionalmente menos perigosa do que as fases de transição.

4. A idade da aeronave influencia nos acidentes?

dados_idade <- dados_limpos %>%
  filter(!is.na(Ano_Fabricacao) & !is.na(Ano)) %>%
  mutate(Idade = Ano - Ano_Fabricacao) %>%
  filter(Idade >= 0 & Idade <= 60)

p4 <- ggplot(dados_idade, aes(x = Idade)) +
  geom_histogram(binwidth = 2, fill = "#fdae61", color = "white") +
  labs(title = "Distribuição da idade das aeronaves nos acidentes",
       x = "Idade da aeronave (anos)", y = "Nº de acidentes") +
  theme_minimal()

ggplotly(p4)

A distribuição revela que a grande maioria dos acidentes envolve aeronaves relativamente novas, com menos de 10 anos de uso — sendo a faixa de 0 a 2 anos a mais frequente. Esse resultado contradiz diretamente a crença popular de que aviões mais velhos são necessariamente mais perigosos. Uma explicação plausível é que aeronaves novas estão em operação mais intensa e frequente, aumentando a exposição ao risco. Além disso, o dataset abrange um longo período histórico em que muitos acidentes envolviam modelos recém-desenvolvidos, ainda em fase de amadurecimento tecnológico.

5. Qual a principal causa dos acidentes?

causas <- dados_limpos %>%
  filter(!is.na(Causa) & Causa != "" & Causa != "Unknown") %>%
  group_by(Causa) %>%
  summarise(Total = n()) %>%
  arrange(desc(Total)) %>%
  slice_head(n = 10)

p5 <- ggplot(causas, aes(x = reorder(Causa, Total), y = Total)) +
  geom_col(fill = "#d7191c") +
  coord_flip() +
  labs(title = "Top 10 causas de acidentes", x = NULL, y = "Nº de acidentes") +
  theme_minimal()

ggplotly(p5)

O fator humano é, de longe, a principal causa dos acidentes aéreos, respondendo por aproximadamente 10.000 registros — quase o dobro da segunda causa mais frequente. A falha técnica aparece em segundo lugar, com cerca de 6.500 casos. As condições climáticas e atos de terrorismo, sequestro e sabotagem aparecem em seguida, com volumes significativamente menores. Esse panorama reforça que o maior risco na aviação não está na aeronave em si, mas nas decisões e ações humanas — sejam de pilotos, controladores de voo ou equipes de manutenção.

6. É muito raro sobreviver a um acidente aéreo?

sobrev <- dados_limpos %>%
  filter(!is.na(Sobreviventes) & Sobreviventes != "" & Sobreviventes != "Unknown") %>%
  group_by(Sobreviventes) %>%
  summarise(Total = n()) %>%
  mutate(Percentual = round(Total / sum(Total) * 100, 1))

p6 <- plot_ly(sobrev, labels = ~Sobreviventes, values = ~Total, type = "pie",
              textinfo = "label+percent",
              marker = list(colors = c("#2c7bb6", "#d7191c"))) %>%
  layout(title = "Proporção de acidentes com e sem sobreviventes")

p6

Este é possivelmente o achado mais surpreendente da análise: 57% dos acidentes aéreos registrados tiveram ao menos um sobrevivente. Ou seja, a maioria dos acidentes não resulta em tragédia total. Esse dado desmonta um dos maiores mitos em torno da aviação — o de que um acidente aéreo é sinônimo de morte certa. Na prática, sobreviver a um acidente aéreo é mais comum do que o imaginário popular sugere.

7. Quais operadores estão mais envolvidos em acidentes?

top_operadores <- dados_limpos %>%
  filter(!is.na(Operador) & Operador != "" & Operador != "Unknown") %>%
  group_by(Operador) %>%
  summarise(Total = n()) %>%
  arrange(desc(Total)) %>%
  slice_head(n = 15)

p7 <- ggplot(top_operadores, aes(x = reorder(Operador, Total), y = Total)) +
  geom_col(fill = "#756bb1") +
  coord_flip() +
  labs(title = "Top 15 operadores com mais acidentes", x = NULL, y = "Nº de acidentes") +
  theme_minimal()

ggplotly(p7)

A Royal Air Force (RAF) britânica lidera o ranking de operadores com mais acidentes, seguida pela United States Air Force (USAF) e pela Aeroflot, companhia aérea estatal russa. A presença dominante de forças aéreas militares entre os primeiros colocados não é surpreendente: essas organizações realizaram um volume extraordinário de voos durante as guerras mundiais, em condições de alto risco. Entre as operadoras civis, a Air France e a Deutsche Lufthansa são as únicas companhias comerciais a figurar no top 15.

8. Quais regiões do mundo concentram mais acidentes?

library(maps)

acidentes_pais <- dados_limpos %>%
  filter(!is.na(Pais) & Pais != "" & Pais != "Unknown") %>%
  mutate(Pais = case_when(
    Pais == "United States of America"       ~ "USA",
    Pais == "United Kingdom"                 ~ "UK",
    Pais == "Democratic Republic of Congo"   ~ "Democratic Republic of the Congo",
    Pais == "Congo"                          ~ "Republic of Congo",
    Pais == "Trinidad and Tobago"            ~ "Trinidad",
    Pais == "Cabo Verde"                     ~ "Cape Verde",
    Pais == "Comoros Islands"                ~ "Comoros",
    Pais == "Fiji Islands"                   ~ "Fiji",
    Pais == "French Guyana"                  ~ "French Guiana",
    Pais == "Guinea Bissau"                  ~ "Guinea-Bissau",
    Pais == "Guam Island"                    ~ "Guam",
    Pais == "La Reunion"                     ~ "Reunion",
    Pais == "Macedonia"                      ~ "North Macedonia",
    Pais == "Maldivian Islands"              ~ "Maldives",
    Pais == "Salvador"                       ~ "El Salvador",
    Pais == "Samoa Islands (Western Samoa)"  ~ "Samoa",
    Pais == "São Tomé and Principe"          ~ "Sao Tome and Principe",
    Pais == "Saint-Barthélemy"               ~ "Saint Barthelemy",
    Pais == "Saint Kitts and Nevis"          ~ "Saint Kitts",
    Pais == "Saint Vincent and Grenadines"   ~ "Saint Vincent",
    Pais == "Timor Leste"                    ~ "Timor-Leste",
    Pais == "Federated States of Micronesia" ~ "Micronesia",
    TRUE ~ Pais
  )) %>%
  group_by(Pais) %>%
  summarise(Total = n())

mapa_mundo <- map_data("world") %>%
  left_join(acidentes_pais, by = c("region" = "Pais"))

p8 <- ggplot(mapa_mundo, aes(x = long, y = lat, group = group, fill = Total,
                              text = paste(region, "<br>Acidentes:", Total))) +
  geom_polygon(color = "white", linewidth = 0.1) +
  scale_fill_gradient(low = "#fee8c8", high = "#b30000", na.value = "#d9d9d9",
                      name = "Nº de acidentes") +
  coord_fixed(1.3) +
  labs(title = "Acidentes aéreos por país", x = NULL, y = NULL) +
  theme_void() +
  theme(plot.margin = margin(0, 0, 0, 0))

ggplotly(p8, tooltip = "text", width = NULL, height = 450) %>%
  layout(autosize = TRUE, margin = list(l = 0, r = 0, t = 40, b = 0)) %>%
  config(responsive = TRUE)

O mapa evidencia a concentração massiva de acidentes nos Estados Unidos, que se destaca em vermelho escuro em contraste com o restante do mundo. A Europa Ocidental e a Rússia também apresentam densidades relevantes, reflexo de seu protagonismo histórico na aviação. O restante do mundo aparece em tons mais claros, o que pode refletir tanto menor volume de voos quanto subnotificação de acidentes em países com infraestrutura de registro menos desenvolvida.

Conclusões

Esta análise buscou responder, com base em dados coletados ao longo de mais de um século, algumas das principais dúvidas e medos que cercam o transporte aéreo. Os resultados revelam um panorama mais seguro e nuançado do que o imaginário popular sugere.

Em relação à evolução temporal, os acidentes atingiram seu pico histórico em 1945, no contexto da Segunda Guerra Mundial, e desde então seguem uma tendência consistente de queda. Nos anos mais recentes, os números estão entre os mais baixos de toda a série histórica — evidência concreta de que a aviação tornou-se progressivamente mais segura.

Quanto aos países, os Estados Unidos concentram isoladamente a maior parte dos registros, reflexo de seu protagonismo militar e do imenso volume de tráfego aéreo. O Brasil figura entre os 15 países com mais acidentes, ocupando a sexta posição.

No que diz respeito à fase do voo, os dados confirmam que decolagem e pouso são os momentos mais críticos, respondendo juntos por 57,6% dos acidentes — com destaque para a fase de pouso e aproximação (35,9%). A fase em voo, embora mais longa, é proporcionalmente a mais segura.

Sobre a idade das aeronaves, o resultado surpreende: a maioria dos acidentes envolve aeronaves com menos de 10 anos de uso, contradizendo a crença popular de que aviões antigos são mais perigosos. Aeronaves novas operam com maior intensidade e, em períodos históricos anteriores, ainda estavam em fase de amadurecimento tecnológico.

A causa mais frequente dos acidentes é o fator humano, responsável por aproximadamente 10.000 registros — quase o dobro das falhas técnicas. Isso reforça que o maior risco na aviação não está na máquina, mas nas decisões humanas.

Por fim, um dos achados mais relevantes diz respeito à sobrevivência: 57% dos acidentes registrados tiveram ao menos um sobrevivente, demonstrando que um acidente aéreo não é, necessariamente, uma sentença de morte — contrariando diretamente o medo que muitos passageiros carregam.

Em síntese, os dados desmistificam grande parte do medo irracional associado aos aviões. A aviação é um meio de transporte que evoluiu enormemente em segurança, e os números mostram que o risco, embora real, é frequentemente superestimado pelo imaginário popular.