Synopsis

This analysis examines the U.S. National Oceanic and Atmospheric Administration (NOAA) Storm Database to identify severe weather events associated with the greatest impacts on population health and the economy. Population health impacts are assessed using the total number of fatalities and injuries associated with each event type. Economic consequences are assessed using reported property and crop damages after converting the corresponding damage exponents into monetary values. The results show that tornadoes have the greatest overall impact on population health when fatalities and injuries are considered together. Floods have the greatest overall economic consequences when property and crop damages are combined. These findings provide a quantitative overview of the severe weather events associated with the largest historical human and economic impacts in the United States.

Data Processing

1. Load the raw dataset

library(tidyverse)
storm_data <- read.csv(
    "repdata_data_StormData.csv.bz2",
    stringsAsFactors = FALSE
)

Investigating data set

dim(storm_data)
## [1] 902297     37
names(storm_data)
##  [1] "STATE__"    "BGN_DATE"   "BGN_TIME"   "TIME_ZONE"  "COUNTY"    
##  [6] "COUNTYNAME" "STATE"      "EVTYPE"     "BGN_RANGE"  "BGN_AZI"   
## [11] "BGN_LOCATI" "END_DATE"   "END_TIME"   "COUNTY_END" "COUNTYENDN"
## [16] "END_RANGE"  "END_AZI"    "END_LOCATI" "LENGTH"     "WIDTH"     
## [21] "F"          "MAG"        "FATALITIES" "INJURIES"   "PROPDMG"   
## [26] "PROPDMGEXP" "CROPDMG"    "CROPDMGEXP" "WFO"        "STATEOFFIC"
## [31] "ZONENAMES"  "LATITUDE"   "LONGITUDE"  "LATITUDE_E" "LONGITUDE_"
## [36] "REMARKS"    "REFNUM"
head(storm_data)
##   STATE__           BGN_DATE BGN_TIME TIME_ZONE COUNTY COUNTYNAME STATE  EVTYPE
## 1       1  4/18/1950 0:00:00     0130       CST     97     MOBILE    AL TORNADO
## 2       1  4/18/1950 0:00:00     0145       CST      3    BALDWIN    AL TORNADO
## 3       1  2/20/1951 0:00:00     1600       CST     57    FAYETTE    AL TORNADO
## 4       1   6/8/1951 0:00:00     0900       CST     89    MADISON    AL TORNADO
## 5       1 11/15/1951 0:00:00     1500       CST     43    CULLMAN    AL TORNADO
## 6       1 11/15/1951 0:00:00     2000       CST     77 LAUDERDALE    AL TORNADO
##   BGN_RANGE BGN_AZI BGN_LOCATI END_DATE END_TIME COUNTY_END COUNTYENDN
## 1         0                                               0         NA
## 2         0                                               0         NA
## 3         0                                               0         NA
## 4         0                                               0         NA
## 5         0                                               0         NA
## 6         0                                               0         NA
##   END_RANGE END_AZI END_LOCATI LENGTH WIDTH F MAG FATALITIES INJURIES PROPDMG
## 1         0                      14.0   100 3   0          0       15    25.0
## 2         0                       2.0   150 2   0          0        0     2.5
## 3         0                       0.1   123 2   0          0        2    25.0
## 4         0                       0.0   100 2   0          0        2     2.5
## 5         0                       0.0   150 2   0          0        2     2.5
## 6         0                       1.5   177 2   0          0        6     2.5
##   PROPDMGEXP CROPDMG CROPDMGEXP WFO STATEOFFIC ZONENAMES LATITUDE LONGITUDE
## 1          K       0                                         3040      8812
## 2          K       0                                         3042      8755
## 3          K       0                                         3340      8742
## 4          K       0                                         3458      8626
## 5          K       0                                         3412      8642
## 6          K       0                                         3450      8748
##   LATITUDE_E LONGITUDE_ REMARKS REFNUM
## 1       3051       8806              1
## 2          0          0              2
## 3          0          0              3
## 4          0          0              4
## 5          0          0              5
## 6          0          0              6

The data set contains 902,297 observations and 37 variables

2. Population health data

The variables relevant to population health are:

. Fatalities
. Injuries
. EVTYPE

Aggregating fatalities and injuries by event type:

health <- storm_data %>%
  group_by(EVTYPE) %>%
  summarise(
    fatalities = sum(FATALITIES, na.rm = TRUE),
    injuries = sum(INJURIES, na.rm = TRUE)
  ) %>%
  mutate(total = fatalities + injuries) %>%
  arrange(desc(total))

Displaying top 10:

head(health,10)
## # A tibble: 10 × 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

Creating a variable representing the combined health impact:

health$Total<- health$fatalities+ health$injuries

Sorting the results:

health <- health[order(-health$Total), ]

head(health, 10)
## # A tibble: 10 × 5
##    EVTYPE            fatalities injuries total Total
##    <chr>                  <dbl>    <dbl> <dbl> <dbl>
##  1 TORNADO                 5633    91346 96979 96979
##  2 EXCESSIVE HEAT          1903     6525  8428  8428
##  3 TSTM WIND                504     6957  7461  7461
##  4 FLOOD                    470     6789  7259  7259
##  5 LIGHTNING                816     5230  6046  6046
##  6 HEAT                     937     2100  3037  3037
##  7 FLASH FLOOD              978     1777  2755  2755
##  8 ICE STORM                 89     1975  2064  2064
##  9 THUNDERSTORM WIND        133     1488  1621  1621
## 10 WINTER STORM             206     1321  1527  1527

3. Economic damage processing

For the economic analysis, we need:

. PROPDMG

. PROPDMGEXP

. CROPDMG

. CROPDMGEXP

The damage values cannot simply be added because PROPDMGEXP and CROPDMGEXP specify their magnitude. For example, K, M, and B represent thousand, million, and billion.

Therefore, we need to create a function to convert the exponents

damage_multiplier <- function(x) {

    x <- toupper(as.character(x))

    result <- rep(1, length(x))

    result[x == "H"] <- 10^2
    result[x == "K"] <- 10^3
    result[x == "M"] <- 10^6
    result[x == "B"] <- 10^9

    numeric_exp <- x %in% as.character(0:8)

    result[numeric_exp] <- 10^as.numeric(x[numeric_exp])

    result
}

calculating actual property and crop damages:

storm_data$property_damage <-
    storm_data$PROPDMG *
    damage_multiplier(storm_data$PROPDMGEXP)

storm_data$crop_damage <-
    storm_data$CROPDMG *
    damage_multiplier(storm_data$CROPDMGEXP)

calculating total economic damage:

storm_data$total_damage <-
    storm_data$property_damage +
    storm_data$crop_damage

Aggregating by event type

economic <- storm_data %>%
  mutate(
    property_damage = PROPDMG * damage_multiplier(PROPDMGEXP),
    crop_damage = CROPDMG * damage_multiplier(CROPDMGEXP),
    total_damage = property_damage + crop_damage
  ) %>%
  group_by(EVTYPE) %>%
  summarise(
    property_damage = sum(property_damage, na.rm = TRUE),
    crop_damage = sum(crop_damage, na.rm = TRUE),
    total_damage = sum(total_damage, na.rm = TRUE)
  ) %>%
  arrange(desc(total_damage))

Viewing 10 event types with the greatest economic damage:

head(economic, 10)
## # A tibble: 10 × 4
##    EVTYPE            property_damage crop_damage  total_damage
##    <chr>                       <dbl>       <dbl>         <dbl>
##  1 FLOOD               144657709807   5661968450 150319678257 
##  2 HURRICANE/TYPHOON    69305840000   2607872800  71913712800 
##  3 TORNADO              56947380676.   414953270  57362333946.
##  4 STORM SURGE          43323536000         5000  43323541000 
##  5 HAIL                 15735267513.  3025954473  18761221986.
##  6 FLASH FLOOD          16822673978.  1421317100  18243991078.
##  7 DROUGHT               1046106000  13972566000  15018672000 
##  8 HURRICANE            11868319010   2741910000  14610229010 
##  9 RIVER FLOOD           5118945500   5029459000  10148404500 
## 10 ICE STORM             3944927860   5022113500   8967041360

Results

Figure 1 — Population health

top_health <- head(health, 10)

par(mar = c(5, 11, 4, 2))

barplot(
    rev(top_health$Total),
    names.arg = rev(top_health$EVTYPE),
    horiz = TRUE,
    las = 1,
    xlab = "Total Fatalities and Injuries",
    main = "Weather Events Most Harmful to Population Health"
)

Figure 1. Total fatalities and injuries for the ten weather event types with the largest population-health impacts in the NOAA Storm Database.

Tornadoes have by far the greatest combined impact on population health, with 96,979 reported fatalities and injuries. Excessive heat ranks second with 8,428 combined casualties, followed by thunderstorm wind (TSTM WIND) with 7,461 and floods with 7,259. The exceptionally large number associated with tornadoes is primarily driven by reported injuries.

Figure 2 — Economic consequences

top_economic <- head(economic, 10)

top_economic$billions <-
    top_economic$total_damage / 10^9

par(mar = c(5, 11, 4, 2))

barplot(
    rev(top_economic$billions),
    names.arg = rev(top_economic$EVTYPE),
    horiz = TRUE,
    las = 1,
    xlab = "Total Economic Damage (Billions of Dollars)",
    main = "Weather Events with Greatest Economic Consequences"
)

Figure 2. Combined property and crop damage for the ten weather event types with the greatest economic consequences in the NOAA Storm Database.

Floods have the greatest overall economic impact, producing approximately $150.32 billion in combined property and crop damage. Hurricane/typhoon events rank next at approximately $71.91 billion, followed by tornadoes at approximately $57.36 billion and storm surges at approximately $43.32 billion. Thus, although tornadoes dominate the population-health results, floods account for the largest total economic losses.

Conclusion

The analysis demonstrates that the weather events with the greatest population-health impacts are not necessarily those with the greatest economic consequences. Tornadoes account for the largest combined number of fatalities and injuries, while floods account for the greatest combined property and crop damage. These results highlight different dimensions of the historical impacts of severe weather events across the United States.