Synopsis

This report provides preliminary answers to the questions (1) which severe weather events are the most harmful to population health and (2) which severe weather events result in the greatest economic loss. Data loading and manipulation prior to analysis is presented for reproducibility. Using rough and potentially biased values, tornadoes were found to cause the most injuries and fatalities, and droughts were found to result in the highest economic losses.

Data Processing

The data for this analysis is originally from the U.S. National Oceanic and Atmospheric Administration’s (NOAA) storm database. The National Weather Service Storm Data Documentation and the National Climactic Data Center Storm Events FAQ are available for reference.

Place the data file into the working directory.

storm <- read.csv("repdata-data-StormData.csv.bz2")

R (version 3.1.1) is able to read some compressed file formats seamlessly, so there is no need to write adapter code or decompress data in preprocessing to read it.

The data set has a number of columns storing location and time data. In the interest of keeping this report brief, only the subest of data for the Event type, injury/fatality counts, and property/crop damages will be reviewed.

col.subset <- c("EVTYPE",
                "FATALITIES", "INJURIES",
                "PROPDMG", "PROPDMGEXP",
                "CROPDMG", "CROPDMGEXP")
storm <- storm[, col.subset]

Property and crop damage numbers are reported using a number (like 4) and an associated unit (like k/B/etc). It is more useful to have simple numbers for manipulation. For this analysis, k/K indicates multiplying by a thousand, m/M indicates multiplying by one million, B indicates multiplying by one billion, h/H indicates multiplying by one hundred. Numerals should be taken as ten raised to the specified power. Characters or punctuation shall be treated as zeros; checking with the data steward is prudent to further clarify the significance of these labels.

normalize_exp <- function(x) {
  if (x == "1") return(1)
  if (x == "2" | x %in% c("h", "H")) return(2)
  if (x == "3" | x %in% c("k", "K")) return(3)
  if (x == "4") return(4)
  if (x == "5") return(5)
  if (x == "6" | x %in% c("m", "M")) return(6)
  if (x == "7") return(7)
  if (x == "8") return(8)
  if (x %in% c("B")) return(9)
  return(0)
}

CROPDMGEXP <- numeric(nrow(storm))
for (x in levels(storm$CROPDMGEXP)) {
  mask = storm$CROPDMGEXP == x
  CROPDMGEXP[mask] = rep(normalize_exp(x), sum(mask))
}

PROPDMGEXP <- numeric(nrow(storm))
for (x in levels(PROPDMGEXP)) {
  mask = PROPDMGEXP == x
  PROPDMGEXP[mask] = rep(normalize_exp(x), sum(mask))
}

Results

Events harmful to population health

For a rough barometer, take the sum of the fatality and injury counts to be the impact of the severe weather event on population health. Then, aggregate by the storm type and sort to assess the event types that have the highest recorded combined fatality and injury counts.

storm$FAT.INJ <- storm$FATALITIES + storm$INJURIES
a <- aggregate(FAT.INJ ~ EVTYPE, data = storm, FUN = sum)
a10 <- a[order(-a$FAT.INJ)[1:10], c("EVTYPE", "FAT.INJ")]
pie(a10$FAT.INJ, labels = a10$EVTYPE)

The pie chart above shows the relative importance of the combined fatality and injury counts for the top ten important severe weather events.

a10
##                EVTYPE FAT.INJ
## 834           TORNADO   96979
## 130    EXCESSIVE HEAT    8428
## 856         TSTM WIND    7461
## 170             FLOOD    7259
## 464         LIGHTNING    6046
## 275              HEAT    3037
## 153       FLASH FLOOD    2755
## 427         ICE STORM    2064
## 760 THUNDERSTORM WIND    1621
## 972      WINTER STORM    1527

We see that tornadoes result in the highest count of fatalities and injuries. It would be interesting for further analysis to look at the cross-section of this data across time, since it could be that a couple of especially disastrous events contribute to the especially high tornado value.

For the second to the tenth most impactful weather type, we see events from different seasons, both hot and cold as well as windy.

What about the impact of events that did not make it to the top ten?

aggregate(a$FAT.INJ, list(a$EVTYPE %in% a10$EVTYPE), sum)
##   Group.1      x
## 1   FALSE  18496
## 2    TRUE 137177

TRUE indicates in the top 10, and FALSE indicates it is not. Less than 12% of total fatalities and injuries are attributable to event types that were not identified as the top ten most dangerous severe weather types. This could still be significant in the context of extreme weather planning, so a wide net will be needed to adequately prepare for the different types of weather that can happen.

Economic impact of severe weather events

To gauge the economic impact of severe weather events, use the rough barometer of the sum of the property and crop damage numbers. Remember, total property damange is stored as a scientific number across two columns for each damage type.

storm$TOTALDAMAGE <- (storm$PROPDMG * 10 ^ PROPDMGEXP +
                        storm$CROPDMG * 10 ^ CROPDMGEXP)
a <- aggregate(TOTALDAMAGE ~ EVTYPE, data = storm, FUN = sum)
a10 <- a[order(-a$TOTALDAMAGE)[1:10], c("EVTYPE", "TOTALDAMAGE")]
pie(a10$TOTALDAMAGE, labels = a10$EVTYPE)

The pie chart above shows the relative importance of the total property and crop damage totals for the top ten important severe weather events.

a10
##                EVTYPE TOTALDAMAGE
## 95            DROUGHT 13972570099
## 170             FLOOD  5662868388
## 590       RIVER FLOOD  5029472856
## 427         ICE STORM  5022179501
## 244              HAIL  3026643166
## 402         HURRICANE  2741925514
## 411 HURRICANE/TYPHOON  2607878639
## 153       FLASH FLOOD  1422737225
## 140      EXTREME COLD  1292980658
## 212      FROST/FREEZE  1094086969

It seems that droughts cause the greatest financial damage, presumably due to the crop damage. Further analysis should be conducted into the breakdown of crop vs. property damage for each high impact weather event.

In terms of total economic damage, how important are the top ten vs the rest?

aggregate(a$TOTALDAMAGE, list(a$EVTYPE %in% a10$EVTYPE), sum)
##   Group.1           x
## 1   FALSE  7241733667
## 2    TRUE 41873343014

It seems that the top ten severe weather events ranked by total economic damage account for 85% of the recorded economic damages.

It should be noted that nominal values for the damage numbers have been analyzed here unadjusted for inflation. Using unadjusted numbers may bias more recent data since earlier nominal numbers will be lower but represent the same economic loss. Further analysis should investigate if the biases affect the conclusions drawn here.