The Economic and Health Impacts of Natural Disasters


Author: Jesus Ortiz

LinkedIn Profile: (https://www.linkedin.com/in/jesus-oa/)


Course Information

Course: Reproducible Research

Assignment: Peer Graded Assignment 2


Synopsis

This analysis utilizes NOAA’s Storm Data, documenting severe weather events and their impacts from 1950 to 2011, including fatalities, injuries, and property damage. It examines significant meteorological occurrences such as hurricanes, tornadoes, floods, and droughts, assessing their human and economic costs. Fatalities and injuries serve as health indicators, while property and crop damages measure economic loss. Although NOAA strives for data reliability, some information may stem from external sources that lack independent verification. This study aims to deepen the understanding of the severity of these atmospheric events and inform future preparedness and mitigation strategies, ultimately enhancing community resilience to natural disasters.

Data Processing

Load Required Libraries

Load the necessary packages for data manipulation, visualization, and date handling.

# Load required libraries
library(ggplot2)
library(dplyr)
library(gridExtra)
library(scales)
library(stringr)
library(lubridate)
library(readr)

Load the Storm Data

Read in the Storm Data from a CSV file and assign it to a convenient variable.

# Load the data
repdata_data_StormData <- read_csv("~/Documents/01 projects/01 storm/01 data/repdata_data_StormData.csv", show_col_types = FALSE)

# Rename data frame for convenience
df <- repdata_data_StormData

Data Transformation

Select Necessary Columns

Filter the dataset to keep only the relevant columns that will be used in the analysis.

# Select necessary columns
df <- df %>%
  select(BGN_DATE, EVTYPE, FATALITIES, INJURIES, PROPDMG, PROPDMGEXP, CROPDMG, CROPDMGEXP)

Format Data Variables

Convert the date column to a Date format and extract year and year-month for temporal analysis

# Format the date and create year and year_month columns
df <- df %>%
  mutate(
    cal_date = as.Date(BGN_DATE, format = "%m/%d/%Y %H:%M:%S"),
    year_month = format(cal_date, "%Y-%m"),
    year = year(cal_date)
  ) %>%
  select(-BGN_DATE)

Calculate Damage Estimates

Compute property and crop damages using the appropriate multipliers indicated in the dataset.

# Calculate property and crop damage with appropriate multipliers
df <- df %>%
  mutate(
    property_damage = case_when(
      PROPDMGEXP == "K" ~ PROPDMG * 1e3,
      PROPDMGEXP == "M" ~ PROPDMG * 1e6,
      PROPDMGEXP == "B" ~ PROPDMG * 1e9,
      TRUE ~ PROPDMG
    ),
    crop_damage = case_when(
      CROPDMGEXP == "K" ~ CROPDMG * 1e3,
      CROPDMGEXP == "M" ~ CROPDMG * 1e6,
      CROPDMGEXP == "B" ~ CROPDMG * 1e9,
      TRUE ~ CROPDMG
    )
  )

Clean and Prepare Data for Analysis

Rename variables for clarity and improve readability of event types.

# Prepare the data frame for analysis
df <- df %>%
  rename(fatalities = FATALITIES, injuries = INJURIES, event_type = EVTYPE) %>%
  select(cal_date, year_month, year, event_type, fatalities, injuries, property_damage, crop_damage) %>%
  mutate(event_type = str_to_title(event_type))

Aggragate Data

Top Events by Impact

Summarize the dataset to identify the top 5 events based on fatalities, injuries, property damage, and crop damage.

# Aggregate data for top 5 events by fatalities, injuries, property damage, and crop damage
top_fatalities <- df %>%
  group_by(event_type) %>%
  summarise(total_fatalities = sum(fatalities, na.rm = TRUE)) %>%
  arrange(desc(total_fatalities)) %>%
  slice_head(n = 5)

top_injuries <- df %>%
  group_by(event_type) %>%
  summarise(total_injuries = sum(injuries, na.rm = TRUE)) %>%
  arrange(desc(total_injuries)) %>%
  slice_head(n = 5)

top_property_damage <- df %>% 
  group_by(event_type) %>% 
  summarise(total_property_damage = floor(sum(property_damage, na.rm = TRUE) / 1e6)) %>%
  arrange(desc(total_property_damage)) %>% 
  slice_head(n = 5)

top_crop_damage <- df %>% 
  group_by(event_type) %>% 
  summarise(total_crop_damage = floor(sum(crop_damage, na.rm = TRUE) / 1e6)) %>%
  arrange(desc(total_crop_damage)) %>% 
  slice_head(n = 5)

Results

Health Impact

The graph below demonstrates that tornadoes are the predominant cause of fatalities and injuries resulting from natural disasters, with over 5,633 deaths and 91,346 injuries recorded between 1950 and 2011. In comparison, excessive heat ranks second in fatalities with 1,903, and tstm winds account for 6,957 injuries. While other events, such as excessive heat, floods, and lightning, do contribute to these totals, their impacts are not nearly as significant as those of tornadoes. A more in-depth analysis could be conducted to examine recent trends and patterns in these events, helping to determine whether their frequency has increased or decreased over time.

# Plot for top fatalities
plot_fatalities <- ggplot(top_fatalities, aes(x = reorder(event_type, -total_fatalities), y = total_fatalities)) +
  geom_bar(stat = "identity", fill = "tomato") +
  geom_text(aes(label = format(total_fatalities, big.mark = ",")), vjust = -0.5, color = "black") +  
  labs(title = "Top 5 Fatalities by Event Type", y = "Total Fatalities", x = "") +
  theme_minimal() +
  scale_y_continuous(labels = scales::comma) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), 
        panel.grid.major.x = element_blank(), 
        panel.grid.minor.x = element_blank(),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank(),
        plot.title = element_text(hjust = 0.5))

# Plot for top injuries
plot_injuries <- ggplot(top_injuries, aes(x = reorder(event_type, -total_injuries), y = total_injuries)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  geom_text(aes(label = format(total_injuries, big.mark = ",")), vjust = -0.5, color = "black") +
  labs(title = "Top 5 Injuries by Event Type", y = "Total Injuries", x = "") +
  theme_minimal() +
  scale_y_continuous(labels = scales::comma) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), 
        panel.grid.major.x = element_blank(), 
        panel.grid.minor.x = element_blank(),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank(),
        plot.title = element_text(hjust = 0.5))

# Arrange the plots for fatalities and injuries in one pane
grid.arrange(plot_fatalities, plot_injuries, ncol = 1)

Economic Impact

The graph below illustrates that flooding is the predominant cause of property damage, amounting to 145 billion—over twice the 69 billion attributed to hurricanes from 1950 to 2011. Notably, the top five events contributing to property damage are all atmospheric phenomena, including floods, hurricanes, tornadoes, storm surges, and flash floods.

In terms of crop damage, drought emerges as the leading culprit, resulting in 14 billion in losses. This figure is more than double that of the second-ranking cause, which is flooding, with 6 billion in damages. Additionally, river floods are included among the top five crop damage events. The remaining entries in this category are associated with extreme cold-weather events, specifically ice storms and hail. It is important to highlight that property damage significantly surpasses crop damage during this period.

Further analysis could be undertaken to explore recent trends and patterns in these events, providing insights into whether their frequency has increased or decreased over time.

# Plot for top property damages
plot_property_damage <- ggplot(top_property_damage, aes(x = reorder(event_type, -total_property_damage), y = total_property_damage)) +
  geom_bar(stat = "identity", fill = "forestgreen") +
  geom_text(aes(label = format(total_property_damage, big.mark = ",", scientific = FALSE)), vjust = -0.5, color = "black") +  
  labs(title = "Top 5 Property Damages by Event Type (in Millions of Dollars)", y = "Total Property Damage ($ Millions)", x = "") +
  theme_minimal() +
  scale_y_continuous(labels = scales::comma) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), 
        panel.grid.major.x = element_blank(), 
        panel.grid.minor.x = element_blank(),
        panel.grid.major.y = element_blank(),  
        panel.grid.minor.y = element_blank(),
        plot.title = element_text(hjust = 0.5))  

# Plot for top crop damages
plot_crop_damage <- ggplot(top_crop_damage, aes(x = reorder(event_type, -total_crop_damage), y = total_crop_damage)) +
  geom_bar(stat = "identity", fill = "tan1") +
  geom_text(aes(label = format(total_crop_damage, big.mark = ",", scientific = FALSE)), vjust = -0.5, color = "black") +  
  labs(title = "Top 5 Crop Damages by Event Type (in Millions of Dollars)", y = "Total Crop Damage ($ Millions)", x = "") +
  theme_minimal() +
  scale_y_continuous(labels = scales::comma) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), 
        panel.grid.major.x = element_blank(), 
        panel.grid.minor.x = element_blank(),
        panel.grid.major.y = element_blank(), 
        panel.grid.minor.y = element_blank(),
        plot.title = element_text(hjust = 0.5))  

# Arrange the plots for property and crop damages in one pane
grid.arrange(plot_property_damage, plot_crop_damage, ncol = 1)

Conclusion

This analysis provides a comprehensive overview of the economic and health impacts of natural disasters in the United States from 1950 to 2011, highlighting the devastating consequences of various severe weather events. The findings reveal that tornadoes lead in fatalities and injuries, underscoring their significant threat to public safety. Concurrently, flooding emerges as the primary cause of property damage, with its economic toll vastly exceeding that of other events, including hurricanes and droughts.

Moreover, while drought is the leading cause of crop damage, the analysis indicates that overall property damage is substantially greater than crop losses during this period. The inclusion of atmospheric phenomena among the top events for both property and crop damage emphasizes the interrlation of these disasters and their varying impacts across different sectors.

Given the historical context and the patterns observed, it is crucial for policymakers, disaster response agencies, and communities to enhance preparedness and mitigation strategies. By continuing to analyze and understand the evolving nature of these events, stakeholders can better anticipate future challenges and implement effective measures to safeguard both lives and economic resources in the face of increasingly frequent and severe natural disasters.