Synopsis

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.

Data Processing

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, ]

Results

Which types of events are most harmful to population health?

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

Which types of events have the greatest economic consequences?

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

Conclusion

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.