Synopsis

This report explores the NOAA Storm Database to determine which types of severe weather events are most harmful to population health and which have the greatest economic consequences across the United States. The data include information about injuries, fatalities, and economic damage. We processed and aggregated the data to identify the top event types in terms of human and economic impact. Visualizations and summary statistics are used to present the results.

Data Processing

We load the storm data from the compressed CSV file provided. Then we clean and transform relevant variables such as event type (EVTYPE), fatalities, injuries, property damage, and crop damage.

storm <- read.csv("repdata_data_StormData.csv")
## Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, : EOF
## within quoted string
dim(storm)  # check dimension
## [1] 897574     37

Impact on Population Health

We use the FATALITIES and INJURIES columns to evaluate total health impacts across event types.

health <- storm %>%
  group_by(EVTYPE) %>%
  summarise(
    fatalities = sum(FATALITIES, na.rm = TRUE),
    injuries = sum(INJURIES, na.rm = TRUE),
    total_health = fatalities + injuries
  ) %>%
  arrange(desc(total_health)) %>%
  head(10)

health
## # A tibble: 10 × 4
##    EVTYPE            fatalities injuries total_health
##    <chr>                  <dbl>    <dbl>        <dbl>
##  1 TORNADO                 5628    91299        96927
##  2 EXCESSIVE HEAT          1903     6517         8420
##  3 TSTM WIND                504     6957         7461
##  4 FLOOD                    460     6789         7249
##  5 LIGHTNING                813     5220         6033
##  6 HEAT                     936     2099         3035
##  7 FLASH FLOOD              965     1777         2742
##  8 ICE STORM                 89     1975         2064
##  9 THUNDERSTORM WIND        132     1449         1581
## 10 WINTER STORM             206     1321         1527
ggplot(health, aes(x = reorder(EVTYPE, -total_health), y = total_health)) +
  geom_bar(stat = "identity", fill = "red") +
  labs(x = "Event Type", y = "Total Health Impact", 
       title = "Top 10 Events Causing Injuries and Fatalities") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Economic Consequences

We process the property (PROPDMG, PROPDMGEXP) and crop (CROPDMG, CROPDMGEXP) damage columns.

exp_to_num <- function(exp) {
  exp <- toupper(as.character(exp))
  ifelse(exp == "B", 1e9,
    ifelse(exp == "M", 1e6,
      ifelse(exp == "K", 1e3,
        ifelse(exp == "H", 1e2, 0))))
}

storm$PROPDMGEXP_NUM <- exp_to_num(storm$PROPDMGEXP)
storm$CROPDMGEXP_NUM <- exp_to_num(storm$CROPDMGEXP)

storm$PROPDMG_VAL <- storm$PROPDMG * storm$PROPDMGEXP_NUM
storm$CROPDMG_VAL <- storm$CROPDMG * storm$CROPDMGEXP_NUM
storm$TOTAL_DAMAGE <- storm$PROPDMG_VAL + storm$CROPDMG_VAL
economic <- storm %>%
  group_by(EVTYPE) %>%
  summarise(total_damage = sum(TOTAL_DAMAGE, na.rm = TRUE)) %>%
  arrange(desc(total_damage)) %>%
  head(10)

economic
## # A tibble: 10 × 2
##    EVTYPE            total_damage
##    <chr>                    <dbl>
##  1 FLOOD             149229588300
##  2 HURRICANE/TYPHOON  71913712800
##  3 TORNADO            57284212590
##  4 STORM SURGE        43323541000
##  5 HAIL               18750520970
##  6 FLASH FLOOD        17260593110
##  7 DROUGHT            15018535000
##  8 HURRICANE          14610229010
##  9 RIVER FLOOD        10148404500
## 10 ICE STORM           8967041310
ggplot(economic, aes(x = reorder(EVTYPE, -total_damage), y = total_damage)) +
  geom_bar(stat = "identity", fill = "blue") +
  labs(x = "Event Type", y = "Total Economic Damage ($)", 
       title = "Top 10 Events with Economic Consequences") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Conclusion

From the data, it is evident that:

These insights can help prioritize emergency preparedness and disaster mitigation efforts.