This analysis explores the U.S. National Oceanic and Atmospheric Administration’s (NOAA) storm database to answer two key questions: which weather events are most harmful to population health, and which have the greatest economic consequences. The data spans from 1950 to November 2011. We find that tornadoes are by far the most harmful event type with respect to population health, causing the most fatalities and injuries. Floods cause the greatest economic damage overall when combining property and crop damage. These findings can help government agencies prioritize resources for disaster preparedness.
storm <- read.csv("repdata_data_StormData.csv.bz2")
dim(storm)
## [1] 902297 37
names(storm)[c(8, 23, 24, 25, 26, 27, 28)]
## [1] "EVTYPE" "FATALITIES" "INJURIES" "PROPDMG" "PROPDMGEXP"
## [6] "CROPDMG" "CROPDMGEXP"
storm$EVTYPE <- toupper(storm$EVTYPE)
storm_health <- storm[, c("EVTYPE", "FATALITIES", "INJURIES")]
storm_econ <- storm[, c("EVTYPE", "PROPDMG", "PROPDMGEXP", "CROPDMG", "CROPDMGEXP")]
convert_exp <- function(exp) {
exp <- toupper(as.character(exp))
sapply(exp, function(e) {
if (e == "K") return(1e3)
if (e == "M") return(1e6)
if (e == "B") return(1e9)
if (e == "H") return(1e2)
if (grepl("^[0-9]$", e)) return(10^as.numeric(e))
return(1)
})
}
storm_econ$prop_damage <- storm_econ$PROPDMG * convert_exp(storm_econ$PROPDMGEXP)
storm_econ$crop_damage <- storm_econ$CROPDMG * convert_exp(storm_econ$CROPDMGEXP)
storm_econ$total_damage <- storm_econ$prop_damage + storm_econ$crop_damage
fatalities <- aggregate(FATALITIES ~ EVTYPE, storm_health, sum)
injuries <- aggregate(INJURIES ~ EVTYPE, storm_health, sum)
top_fatal <- head(fatalities[order(-fatalities$FATALITIES), ], 10)
top_injury <- head(injuries[order(-injuries$INJURIES), ], 10)
par(mfrow = c(1, 2), mar = c(10, 4, 3, 1))
barplot(top_fatal$FATALITIES,
names.arg = top_fatal$EVTYPE,
las = 2,
col = "tomato",
main = "Top 10 Events\nby Fatalities",
ylab = "Total Fatalities",
cex.names = 0.7)
barplot(top_injury$INJURIES,
names.arg = top_injury$EVTYPE,
las = 2,
col = "steelblue",
main = "Top 10 Events\nby Injuries",
ylab = "Total Injuries",
cex.names = 0.7)
Figure 1: Top 10 weather event types by total fatalities (left) and total injuries (right) across the United States from 1950-2011. Tornadoes dominate both categories.
cat("Top 5 events by fatalities:\n")
## Top 5 events by fatalities:
print(head(top_fatal, 5))
## EVTYPE FATALITIES
## 758 TORNADO 5633
## 116 EXCESSIVE HEAT 1903
## 138 FLASH FLOOD 978
## 243 HEAT 937
## 418 LIGHTNING 816
cat("\nTop 5 events by injuries:\n")
##
## Top 5 events by injuries:
print(head(top_injury, 5))
## EVTYPE INJURIES
## 758 TORNADO 91346
## 779 TSTM WIND 6957
## 154 FLOOD 6789
## 116 EXCESSIVE HEAT 6525
## 418 LIGHTNING 5230
Tornadoes are the most harmful weather event for population health, accounting for fatalities and injuries.
econ <- aggregate(total_damage ~ EVTYPE, storm_econ, sum)
top_econ <- head(econ[order(-econ$total_damage), ], 10)
par(mfrow = c(1, 1), mar = c(10, 5, 3, 1))
barplot(top_econ$total_damage / 1e9,
names.arg = top_econ$EVTYPE,
las = 2,
col = "darkgreen",
main = "Top 10 Weather Events by Total Economic Damage",
ylab = "Total Damage (billions USD)",
cex.names = 0.7)
Figure 2: Top 10 weather event types by total economic damage (property + crop) in billions of USD across the United States from 1950-2011.
cat("Top 5 events by economic damage:\n")
## Top 5 events by economic damage:
top_econ$total_damage_billions <- round(top_econ$total_damage / 1e9, 2)
print(head(top_econ[, c("EVTYPE", "total_damage_billions")], 5))
## EVTYPE total_damage_billions
## 154 FLOOD 150.32
## 372 HURRICANE/TYPHOON 71.91
## 758 TORNADO 57.36
## 599 STORM SURGE 43.32
## 212 HAIL 18.76
Floods cause the greatest economic damage in combined property and crop damage.