This analysis examines the NOAA Storm Database to determine which types of severe weather events have the greatest impacts on population health and the greatest economic consequences in the United States. Population health impacts are evaluated using reported fatalities and injuries associated with each event type. Economic consequences are evaluated using reported property and crop damage. The data are processed from the original compressed CSV file, with damage values converted to numerical dollar amounts using the provided magnitude indicators. The results identify the event types responsible for the largest numbers of fatalities and injuries and the greatest total economic damage. These findings provide an overview of which severe weather events have historically produced the most significant human and economic impacts.
library(ggplot2)
data <- read.csv("repdata_data_StormData.csv.bz2")
The analysis focuses on the event type (EVTYPE),
fatalities (FATALITIES), injuries (INJURIES),
property damage (PROPDMG and PROPDMGEXP), and
crop damage (CROPDMG and CROPDMGEXP).
Fatalities and injuries were summed by event type to measure the overall
population health impact of each type of event.
health <- aggregate(cbind(FATALITIES, INJURIES) ~ EVTYPE,
data = data,
sum)
health <- health[order(-health$FATALITIES), ]
head(health, 10)
## EVTYPE FATALITIES INJURIES
## 834 TORNADO 5633 91346
## 130 EXCESSIVE HEAT 1903 6525
## 153 FLASH FLOOD 978 1777
## 275 HEAT 937 2100
## 464 LIGHTNING 816 5230
## 856 TSTM WIND 504 6957
## 170 FLOOD 470 6789
## 585 RIP CURRENT 368 232
## 359 HIGH WIND 248 1137
## 19 AVALANCHE 224 170
health_injuries <- health[order(-health$INJURIES), ]
head(health_injuries, 10)
## EVTYPE FATALITIES INJURIES
## 834 TORNADO 5633 91346
## 856 TSTM WIND 504 6957
## 170 FLOOD 470 6789
## 130 EXCESSIVE HEAT 1903 6525
## 464 LIGHTNING 816 5230
## 275 HEAT 937 2100
## 427 ICE STORM 89 1975
## 153 FLASH FLOOD 978 1777
## 760 THUNDERSTORM WIND 133 1488
## 244 HAIL 15 1361
The economic damage variables were processed using their associated magnitude indicators. The magnitude codes K, M, and B were interpreted as thousands, millions, and billions, respectively. Numeric magnitude values were interpreted as powers of ten. Records without a recognized magnitude were assigned a multiplier of zero because these codes do not provide a valid magnitude for converting the reported damage value into dollars. Property and crop damage were then multiplied by their respective magnitude multipliers and combined to obtain total economic damage for each observation.
damage_multiplier <- function(x) {
x <- toupper(as.character(x))
multiplier <- rep(0, length(x))
multiplier[x == "K"] <- 1000
multiplier[x == "M"] <- 1000000
multiplier[x == "B"] <- 1000000000
numeric_exp <- suppressWarnings(as.numeric(x))
multiplier[!is.na(numeric_exp)] <- 10^numeric_exp[!is.na(numeric_exp)]
multiplier
}
data$PROP_MULT <- damage_multiplier(data$PROPDMGEXP)
data$CROP_MULT <- damage_multiplier(data$CROPDMGEXP)
data$PROP_DAMAGE <- data$PROPDMG * data$PROP_MULT
data$CROP_DAMAGE <- data$CROPDMG * data$CROP_MULT
data$TOTAL_DAMAGE <- data$PROP_DAMAGE + data$CROP_DAMAGE
economic <- aggregate(TOTAL_DAMAGE ~ EVTYPE,
data = data,
sum)
economic <- economic[order(-economic$TOTAL_DAMAGE), ]
head(economic, 10)
## EVTYPE TOTAL_DAMAGE
## 170 FLOOD 150319678250
## 411 HURRICANE/TYPHOON 71913712800
## 834 TORNADO 57362333884
## 670 STORM SURGE 43323541000
## 244 HAIL 18761221426
## 153 FLASH FLOOD 18243990872
## 95 DROUGHT 15018672000
## 402 HURRICANE 14610229010
## 590 RIVER FLOOD 10148404500
## 427 ICE STORM 8967041360
top_fatalities <- head(health[order(-health$FATALITIES), ], 10)
ggplot(top_fatalities,
aes(x = reorder(EVTYPE, FATALITIES),
y = FATALITIES)) +
geom_col() +
coord_flip() +
labs(
title = "Top 10 Weather Events by Number of Fatalities",
x = "Event Type",
y = "Number of Fatalities"
)
Figure 1. The ten event types associated with the greatest numbers of fatalities in the NOAA Storm Database. Bars represent the total number of reported fatalities across the United States.
top_injuries <- head(health[order(-health$INJURIES), ], 10)
ggplot(top_injuries,
aes(x = reorder(EVTYPE, INJURIES),
y = INJURIES)) +
geom_col() +
coord_flip() +
labs(
title = "Top 10 Weather Events by Number of Injuries",
x = "Event Type",
y = "Number of Injuries"
)
Figure 2. The ten event types associated with the greatest numbers of injuries in the NOAA Storm Database. Bars represent the total number of reported injuries across the United States.
The results show that tornadoes had the greatest impact on population health in the NOAA Storm Database. Tornadoes were associated with 5,633 fatalities and 91,346 injuries, substantially exceeding the other event types shown in the figures. Excessive heat had the second-highest number of fatalities, with 1,903, while TSTM wind had the second-highest number of injuries, with 6,957.
top_economic <- head(economic, 10)
ggplot(top_economic,
aes(x = reorder(EVTYPE, TOTAL_DAMAGE),
y = TOTAL_DAMAGE)) +
geom_col() +
coord_flip() +
labs(
title = "Top 10 Weather Events by Total Economic Damage",
x = "Event Type",
y = "Total Damage (US Dollars)"
)
Figure 3. The ten event types associated with the greatest total economic damage in the NOAA Storm Database. Total damage includes both property and crop damage and is expressed in U.S. dollars.
Floods had the greatest overall economic consequences, with approximately $150.3 billion in combined property and crop damage. Hurricane/typhoon events ranked second at approximately $71.9 billion, followed by tornadoes at approximately $57.4 billion. These results indicate that the event types producing the greatest economic damage were not necessarily the same as those producing the greatest population health impacts.