Health and Economic Impacts of Severe Weather Events in the US 1955-2010

This report looks at the impact of severe weather events in germs of human fatalities and injuries as well as property and agricultural damage. It is based on the NOAA Storm Database. The findings are that tornados have by far the greatest impact on human health whereas flooding events have the greatest economic impact.

Data Processing

The data file can be accessed from this link. It is opened as follows:

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

First, the economic factors are converted using the nomenclature from the file (e.g. “k” or “K” means $1000, “M” means $1,000,000, etc). Also, NA values of crop and property damage are set to zero.

storm$PROPDMGEXP <- as.character(storm$PROPDMGEXP)
storm$CROPDMGEXP <- as.character(storm$CROPDMGEXP)

storm$PROPDMGEXP[toupper(storm$PROPDMGEXP) == 'H'] = '1e2'
storm$CROPDMGEXP[toupper(storm$CROPDMGEXP) == 'H'] = '1e2'

storm$PROPDMGEXP[toupper(storm$PROPDMGEXP) == 'K'] = '1e3'
storm$CROPDMGEXP[toupper(storm$CROPDMGEXP) == 'K'] = '1e3'

storm$PROPDMGEXP[toupper(storm$PROPDMGEXP) == 'M'] = '1e6'
storm$CROPDMGEXP[toupper(storm$CROPDMGEXP) == 'M'] = '1e6'

storm$PROPDMGEXP[toupper(storm$PROPDMGEXP) == 'B'] = '1e9'
storm$CROPDMGEXP[toupper(storm$CROPDMGEXP) == 'B'] = '1e9'

storm$PROPDMGEXP <- as.numeric(storm$PROPDMGEXP)
storm$CROPDMGEXP <- as.numeric(storm$CROPDMGEXP)

storm$PROPDMGEXP[is.na(storm$PROPDMGEXP)] <- 0
storm$CROPDMGEXP[is.na(storm$CROPDMGEXP)] <- 0

storm$CROPDMG <- storm$CROPDMG * storm$CROPDMGEXP
storm$PROPDMG <- storm$PROPDMG * storm$PROPDMGEXP

Next, the data is then processed to sum fatalities, injuries, and damage to property and crops from similar events. These are then ordered with the severest event type first.

fatal <- aggregate(FATALITIES ~ EVTYPE, storm, sum)
injury <- aggregate(INJURIES ~ EVTYPE, storm, sum)
injury.corr1 = injury
propD <- aggregate(PROPDMG ~ EVTYPE, storm, sum)
cropD <- aggregate(CROPDMG ~ EVTYPE, storm, sum)
cropD.corr = cropD

fatal <- fatal[order(-fatal$FATALITIES),]
injury <- injury[order(-injury$INJURIES),]
propD <- propD[order(-propD$PROPDMG),]
cropD <- cropD[order(-cropD$CROPDMG),]

Finally, only the top ten event types are chosen from each category. We also do a bit of manipulation to make the variables consistent in the correlation plots we show below.

fatal <- fatal[1:10,]
injury <- injury[1:10,]
propD <- propD[1:10,]
cropD <- cropD[1:10,]

injury.corr1 = injury.corr1[as.numeric(row.names(fatal)),] 
cropD.corr = cropD.corr[as.numeric(row.names(propD)),]

Note, no attempt was made to group events types with similar names. For example “Wind” and “Winds” are probably synonymous but should “SNOW/COLD” be classed as “Snow” or as “Cold”. Because any attempt at grouping would at some point become subjective the event type names were left as is.

Results

Initially, let us examine the impact on human health of the various categories of weather events. The figure below presents barplots for the number of fatalities for different weather events and for the number of injuries for different weather events. Tornados are by far the most significant event in both cases. The left hand plot shows the correlation between lethal events injurious events, this was done to check if there are event types that cause widespread injuries but don’t necessarily put human life at risk.

x <- log10(fatal$FATALITIES+1)
y <- log10(injury.corr1$INJURIES+1)
xrange <- c(min(x), max(x)); yrange <- c(min(y), max(y))
layout(matrix(c(1,1,2,3), 2, 2, byrow = FALSE))
plot(x, y, xlim = xrange, ylim = yrange, pch=19,
     main = "Correlations", col = heat.colors(10),
     xlab = "Log10 Number of Fatalities", 
     ylab = "Log10 Number of Injuries")
barplot(fatal$FATALITIES, 
        names.arg = fatal$EVTYPE, las=3, 
        main = "Fatalities for Different Events",
        cex.names = 0.5, col = heat.colors(010))
barplot(injury$INJURIES, 
        names.arg = injury$EVTYPE, las=3, 
        main = "Injuries for Different Events",
        cex.names = 0.5, col = heat.colors(10))

Next let us examine the economic impact of weather events. The figure below shows barplots for the level of property damage for different weather events and for the level of crop damage for different weather events. Flooding is the greatest cause of property damage while hail is the principle cause of crop damage. Again, the plot on the left presents the correlation between property and crop damage by event. Note, for example, that hurricanes do lots of property damage without being too detrimental to crops, I guess because they are violent but localised.

x <- log10(propD$PROPDMG+1)
y <- log10(cropD.corr$CROPDMG+1)
xrange <- c(min(x), max(x)); 
yrange <- c(min(y), max(y))
layout(matrix(c(1,1,2,3), 2, 2, byrow = FALSE))
plot(x, y, col = terrain.colors(10), pch=19,
     xlim = xrange, ylim = yrange,
     main = "Correlations",
     xlab = "Log10 Property Damage", 
     ylab = "Log10 Crop Damage")
barplot(propD$PROPDMG, 
        names.arg = propD$EVTYPE, las=3, col = terrain.colors(10),
        main = "Property Damage by Event",cex.names = 0.5)
barplot(cropD$CROPDMG, 
        names.arg = cropD$EVTYPE, las=3, col = terrain.colors(10),
        main = "Crop Damage by Event", cex.names = 0.5)