This analysis examines the U.S. NOAA Storm Database to determine which types of severe weather events are most harmful to population health and which have the greatest economic consequences. The raw data, spanning 1950 to November 2011, was processed to calculate total fatalities and injuries, as well as total property and crop damage, aggregated by event type. The results show that tornadoes are by far the leading cause of fatalities and injuries, while floods and hurricanes/typhoons account for the greatest economic damage. These findings can help prioritize resource allocation for severe weather preparedness.
Load the raw data directly from the compressed CSV file.
storm_data <- read.csv("StormData.csv.bz2", stringsAsFactors = FALSE)
dim(storm_data)
## [1] 902297 37
Subset to the columns needed for this analysis: event type, fatalities, injuries, property damage and its exponent, and crop damage and its exponent.
data <- storm_data[, c("EVTYPE", "FATALITIES", "INJURIES",
"PROPDMG", "PROPDMGEXP", "CROPDMG", "CROPDMGEXP")]
The PROPDMGEXP and CROPDMGEXP columns contain letter codes representing multipliers (e.g., “K” = thousand, “M” = million, “B” = billion). Convert these into numeric multipliers and compute actual damage values.
convert_exp <- function(exp) {
exp <- toupper(trimws(exp))
multiplier <- rep(1, length(exp))
multiplier[exp == "K"] <- 1e3
multiplier[exp == "M"] <- 1e6
multiplier[exp == "B"] <- 1e9
multiplier[exp == "H"] <- 1e2
# Numeric digit codes also represent powers of ten
numeric_codes <- suppressWarnings(as.numeric(exp))
valid_numeric <- !is.na(numeric_codes)
multiplier[valid_numeric] <- 10 ^ numeric_codes[valid_numeric]
multiplier
}
data$PROPDMG_TOTAL <- data$PROPDMG * convert_exp(data$PROPDMGEXP)
data$CROPDMG_TOTAL <- data$CROPDMG * convert_exp(data$CROPDMGEXP)
data$ECON_TOTAL <- data$PROPDMG_TOTAL + data$CROPDMG_TOTAL
Aggregate fatalities and injuries by event type, then identify the top 10 event types by combined health impact.
health_agg <- aggregate(cbind(FATALITIES, INJURIES) ~ EVTYPE, data = data, sum)
health_agg$TOTAL_HEALTH <- health_agg$FATALITIES + health_agg$INJURIES
health_top10 <- health_agg[order(-health_agg$TOTAL_HEALTH), ][1:10, ]
Aggregate economic damage (property + crop) by event type, then identify the top 10 event types by total economic damage.
econ_agg <- aggregate(ECON_TOTAL ~ EVTYPE, data = data, sum)
econ_top10 <- econ_agg[order(-econ_agg$ECON_TOTAL), ][1:10, ]
The figure below shows the top 10 event types ranked by combined total fatalities and injuries.
library(ggplot2)
health_top10$EVTYPE <- factor(health_top10$EVTYPE, levels = health_top10$EVTYPE[order(health_top10$TOTAL_HEALTH)])
ggplot(health_top10, aes(x = EVTYPE, y = TOTAL_HEALTH)) +
geom_bar(stat = "identity", fill = "firebrick") +
coord_flip() +
labs(title = "Top 10 Event Types by Total Fatalities and Injuries",
x = "Event Type", y = "Total Fatalities + Injuries") +
theme_minimal()
Figure 1: Tornadoes account for by far the largest combined number of fatalities and injuries of any event type, followed by excessive heat and thunderstorm wind events.
head(health_top10[, c("EVTYPE", "FATALITIES", "INJURIES", "TOTAL_HEALTH")], 5)
## EVTYPE FATALITIES INJURIES TOTAL_HEALTH
## 834 TORNADO 5633 91346 96979
## 130 EXCESSIVE HEAT 1903 6525 8428
## 856 TSTM WIND 504 6957 7461
## 170 FLOOD 470 6789 7259
## 464 LIGHTNING 816 5230 6046
The figure below shows the top 10 event types ranked by total economic damage (property plus crop damage, in billions of dollars).
econ_top10$ECON_TOTAL_BILLIONS <- econ_top10$ECON_TOTAL / 1e9
econ_top10$EVTYPE <- factor(econ_top10$EVTYPE, levels = econ_top10$EVTYPE[order(econ_top10$ECON_TOTAL_BILLIONS)])
ggplot(econ_top10, aes(x = EVTYPE, y = ECON_TOTAL_BILLIONS)) +
geom_bar(stat = "identity", fill = "steelblue") +
coord_flip() +
labs(title = "Top 10 Event Types by Total Economic Damage",
x = "Event Type", y = "Total Damage (Billions USD)") +
theme_minimal()
Figure 2: Floods cause the greatest total economic damage, followed by hurricanes/typhoons and tornadoes. Together these event types account for the majority of property and crop damage recorded in the dataset.
head(econ_top10[, c("EVTYPE", "ECON_TOTAL_BILLIONS")], 5)
## EVTYPE ECON_TOTAL_BILLIONS
## 170 FLOOD 150.31968
## 411 HURRICANE/TYPHOON 71.91371
## 834 TORNADO 57.36233
## 670 STORM SURGE 43.32354
## 244 HAIL 18.76122
Tornadoes pose the greatest risk to population health in terms of fatalities and injuries, while floods, hurricanes/typhoons, and tornadoes together represent the largest sources of economic damage from severe weather events in the United States. These findings suggest that resource prioritization for both emergency response and economic mitigation should focus heavily on these event types.