This analysis explores the U.S. National Oceanic and Atmospheric Administration’s (NOAA) storm database to identify weather events most harmful to population health and those with the greatest economic consequences. The database covers major storms and weather events in the United States from 1950 to November 2011. We found that tornadoes cause the most fatalities and injuries, making them the most harmful event type for population health. Floods cause the greatest economic damage overall, followed by hurricanes and storm surges. These findings can help government managers prioritize resources for disaster preparedness and response.
library(dplyr)
library(ggplot2)
# Load data directly from the raw bz2 file
storm_data <- read.csv("StormData.csv.bz2", stringsAsFactors = FALSE)
dim(storm_data)
## [1] 902297 37
# Aggregate fatalities and injuries by event type
health_impact <- storm_data %>%
group_by(EVTYPE) %>%
summarise(
Fatalities = sum(FATALITIES, na.rm = TRUE),
Injuries = sum(INJURIES, na.rm = TRUE),
Total = Fatalities + Injuries
) %>%
arrange(desc(Total)) %>%
head(10)
health_impact
## # A tibble: 10 x 4
## EVTYPE Fatalities Injuries Total
## <chr> <dbl> <dbl> <dbl>
## 1 TORNADO 5633 91346 96979
## 2 EXCESSIVE HEAT 1903 6525 8428
## 3 TSTM WIND 504 6957 7461
## 4 FLOOD 470 6789 7259
## 5 LIGHTNING 816 5230 6046
## 6 HEAT 937 2100 3037
## 7 FLASH FLOOD 978 1777 2755
## 8 ICE STORM 89 1975 2064
## 9 THUNDERSTORM WIND 133 1488 1621
## 10 WINTER STORM 206 1321 1527
# Convert property and crop damage using exponent columns
convert_exp <- function(value, exp) {
exp <- toupper(as.character(exp))
multiplier <- case_when(
exp == "K" ~ 1e3,
exp == "M" ~ 1e6,
exp == "B" ~ 1e9,
exp == "H" ~ 1e2,
TRUE ~ 1
)
value * multiplier
}
economic_impact <- storm_data %>%
mutate(
PropDmg = convert_exp(PROPDMG, PROPDMGEXP),
CropDmg = convert_exp(CROPDMG, CROPDMGEXP),
TotalDmg = PropDmg + CropDmg
) %>%
group_by(EVTYPE) %>%
summarise(TotalDamage = sum(TotalDmg, na.rm = TRUE)) %>%
arrange(desc(TotalDamage)) %>%
head(10)
economic_impact
## # A tibble: 10 x 2
## EVTYPE TotalDamage
## <chr> <dbl>
## 1 FLOOD 150319678257
## 2 HURRICANE/TYPHOON 71913712800
## 3 TORNADO 57352114049.
## 4 STORM SURGE 43323541000
## 5 HAIL 18758222016.
## 6 FLASH FLOOD 17562129167.
## 7 DROUGHT 15018672000
## 8 HURRICANE 14610229010
## 9 RIVER FLOOD 10148404500
## 10 ICE STORM 8967041360
health_long <- health_impact %>%
tidyr::pivot_longer(cols = c(Fatalities, Injuries),
names_to = "Type", values_to = "Count")
ggplot(health_long, aes(x = reorder(EVTYPE, -Total), y = Count, fill = Type)) +
geom_bar(stat = "identity") +
coord_flip() +
labs(
title = "Top 10 Weather Events Most Harmful to Population Health",
x = "Event Type",
y = "Number of Casualties",
fill = "Casualty Type"
) +
theme_minimal()
Figure 1: Top 10 weather events most harmful to population health (fatalities + injuries combined)
ggplot(economic_impact, aes(x = reorder(EVTYPE, TotalDamage), y = TotalDamage / 1e9)) +
geom_bar(stat = "identity", fill = "steelblue") +
coord_flip() +
labs(
title = "Top 10 Weather Events with Greatest Economic Consequences",
x = "Event Type",
y = "Total Damage (Billions USD)"
) +
theme_minimal()
Figure 2: Top 10 weather events with greatest economic consequences
Population Health: Tornadoes are by far the most harmful weather event, responsible for the highest combined total of fatalities and injuries across all recorded years.
Economic Consequences: Floods cause the greatest total economic damage in property and crop losses, followed by hurricanes/typhoons and storm surges.