Synopsis

This analysis explores the NOAA Storm Database from 1950 to 2011 to identify which types of severe weather events are most harmful to population health and which have the greatest economic consequences. Health impact is measured by total fatalities and injuries, while economic impact is calculated using property and crop damage estimates. Damage exponents (K, M, B) were converted into numeric values to compute total losses. The results show that a small number of event types account for the majority of health and economic impacts across the United States. These findings may help public managers prioritize preparedness and mitigation efforts.

Data Processing

library(dplyr)
library(ggplot2)

file <- "repdata_data_StormData.csv.bz2"

if (!file.exists(file)) {
  download.file(
    "https://d396qusza40orc.cloudfront.net/repdata%2Fdata%2FStormData.csv.bz2",
    destfile = file,
    mode = "wb"
  )
}

storm <- read.csv(file, stringsAsFactors = FALSE)
dim(storm)
## [1] 902297     37

The dataset contains information on severe weather events, including fatalities, injuries, and economic damage estimates.

storm2 <- storm %>%
  select(EVTYPE, FATALITIES, INJURIES,
         PROPDMG, PROPDMGEXP,
         CROPDMG, CROPDMGEXP)

Converting damage exponents

exp_map <- function(x) {
  x <- toupper(x)
  case_when(
    x == "H" ~ 1e2,
    x == "K" ~ 1e3,
    x == "M" ~ 1e6,
    x == "B" ~ 1e9,
    TRUE ~ 1
  )
}

storm3 <- storm2 %>%
  mutate(
    EVTYPE = toupper(trimws(EVTYPE)),
    prop_dmg = PROPDMG * exp_map(PROPDMGEXP),
    crop_dmg = CROPDMG * exp_map(CROPDMGEXP),
    total_dmg = prop_dmg + crop_dmg
  )

Results

##most harmful to population health

health <- storm3 %>%
  group_by(EVTYPE) %>%
  summarise(
    fatalities = sum(FATALITIES, na.rm = TRUE),
    injuries = sum(INJURIES, na.rm = TRUE),
    harm = fatalities + injuries,
    .groups = "drop"
  ) %>%
  arrange(desc(harm))

top10_health <- health %>% slice_max(order_by = harm, n = 10)

ggplot(top10_health,
       aes(x = reorder(EVTYPE, harm), y = harm)) +
  geom_col() +
  coord_flip() +
  labs(title = "Top 10 Event Types Most Harmful to Population Health",
       x = "Event Type",
       y = "Total Harm (Fatalities + Injuries)")

The plot shows that a small number of event types account for the majority of fatalities and injuries, suggesting that preparedness focused on these events could reduce the largest share of health impacts.

##greatest economic consequences

econ <- storm3 %>%
  group_by(EVTYPE) %>%
  summarise(
    total = sum(total_dmg, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  arrange(desc(total))

top10_econ <- econ %>% slice_max(order_by = total, n = 10)

ggplot(top10_econ,
       aes(x = reorder(EVTYPE, total), y = total/1e9)) +
  geom_col() +
  coord_flip() +
  labs(title = "Top 10 Event Types With Greatest Economic Consequences",
       x = "Event Type",
       y = "Total Damage (Billion USD)")

The plot shows that floods, hurricanes/typhoons, and tornadoes drive the highest overall economic losses when combining property and crop damage.