Celem niniejszej analizy jest zbadanie danych udostępnionych przez Narodową Administrację Oceaniczną i Atmosferyczną (NOAA), dotyczących ekstremalnych zjawisk pogodowych w Stanach Zjednoczonych w latach 1950–2011. Analiza ma na celu określenie, które typy zdarzeń pogodowych miały największy wpływ na zdrowie publiczne (mierzone liczbą zgonów i obrażeń) oraz które generowały największe straty ekonomiczne (straty w mieniu i uprawach). Dane zostały wczytane z oryginalnego pliku CSV (.bz2), przekształcone i przeanalizowane w języku R.
Szczególną uwagę poświęcono zmiennej EVTYPE (typ zjawiska) oraz przeliczeniu wartości ekonomicznych na podstawie mnożników (K, M, B). Zidentyfikowano najbardziej szkodliwe zdarzenia pogodowe — tornada, które odpowiadają za najwięcej ofiar śmiertelnych i rannych, oraz powodzie, które powodują największe straty ekonomiczne. Wyniki przedstawiono w formie wykresów słupkowych, ograniczając ich liczbę do trzech, zgodnie z założeniami zadania. Otrzymane wnioski mogą być pomocne w działaniach prewencyjnych i planistycznych w zakresie ochrony ludności i infrastruktury.
Dane zostały pobrane z oryginalnego pliku data_StormData.csv.bz2. Plik zawiera informacje o zdarzeniach pogodowych z lat 1950–2011, w tym daty, lokalizacje, typy zdarzeń (EVTYPE) oraz skutki dla zdrowia i gospodarki (zmienne FATALITIES, INJURIES, PROPDMG, CROPDMG i odpowiadające im mnożniki PROPDMGEXP, CROPDMGEXP).
W celu przeprowadzenia analizy:
StormData.csv.bz2.EVTYPE.library(dplyr)
##
## Dołączanie pakietu: 'dplyr'
## Następujące obiekty zostały zakryte z 'package:stats':
##
## filter, lag
## Następujące obiekty zostały zakryte z 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
library(readr)
library(tidyr)
library(lubridate)
##
## Dołączanie pakietu: 'lubridate'
## Następujące obiekty zostały zakryte z 'package:base':
##
## date, intersect, setdiff, union
data <- read_csv("data_StormData.csv.bz2")
## Rows: 902297 Columns: 37
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (18): BGN_DATE, BGN_TIME, TIME_ZONE, COUNTYNAME, STATE, EVTYPE, BGN_AZI,...
## dbl (18): STATE__, COUNTY, BGN_RANGE, COUNTY_END, END_RANGE, LENGTH, WIDTH, ...
## lgl (1): COUNTYENDN
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
data_sub <- data %>%
select(EVTYPE, FATALITIES, INJURIES, PROPDMG, PROPDMGEXP, CROPDMG, CROPDMGEXP)
exp_to_num <- function(exp) {
exp <- toupper(trimws(exp))
case_when(
exp == "K" ~ 1e3,
exp == "M" ~ 1e6,
exp == "B" ~ 1e9,
grepl("^[0-9]+$", exp) ~ 10 ^ as.numeric(exp),
TRUE ~ 1
)
}
data_sub <- data_sub %>%
mutate(
PROPDMGEXP_NUM = exp_to_num(PROPDMGEXP),
CROPDMGEXP_NUM = exp_to_num(CROPDMGEXP),
PROP_DAMAGE = PROPDMG * PROPDMGEXP_NUM,
CROP_DAMAGE = CROPDMG * CROPDMGEXP_NUM,
TOTAL_DAMAGE = PROP_DAMAGE + CROP_DAMAGE
)
## Warning: There were 2 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `PROPDMGEXP_NUM = exp_to_num(PROPDMGEXP)`.
## Caused by warning:
## ! pojawiły się wartości NA na skutek przekształcenia
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
W tej części zaprezentowano wyniki analizy w postaci dwóch wykresów:
Wpływ na zdrowie ludności: Tornada odpowiadają za największą liczbę ofiar i poszkodowanych, zdecydowanie dominując nad innymi typami zjawisk.
Straty ekonomiczne: Największe szkody materialne spowodowały powodzie, wyprzedzając huragany i burze tropikalne.
Wyniki te są przedstawione graficznie na wykresach słupkowych z odpowiednimi opisami osi i tytułami. W każdej z analiz zaprezentowano 10 najbardziej wpływowych typów zjawisk.
health_impact <- data_sub %>%
group_by(EVTYPE) %>%
summarise(
Total_Fatalities = sum(FATALITIES, na.rm = TRUE),
Total_Injuries = sum(INJURIES, na.rm = TRUE),
Total_Health = Total_Fatalities + Total_Injuries
) %>%
arrange(desc(Total_Health)) %>%
top_n(10, Total_Health)
health_impact %>%
pivot_longer(cols = c(Total_Fatalities, Total_Injuries), names_to = "Type", values_to = "Count") %>%
ggplot(aes(x = reorder(EVTYPE, -Count), y = Count, fill = Type)) +
geom_bar(stat = "identity", position = "stack") +
labs(title = "Najbardziej szkodliwe zdarzenia pogodowe dla zdrowia", x = "Typ zdarzenia", y = "Liczba ofiar", fill = "Rodzaj") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Z powyższego zestawienia wynika, że tornada są zdecydowanie najbardziej szkodliwe dla zdrowia ludności, odpowiadając za największą liczbę ofiar śmiertelnych i obrażeń.
economic_impact <- data_sub %>%
group_by(EVTYPE) %>%
summarise(Total_Damage = sum(TOTAL_DAMAGE, na.rm = TRUE)) %>%
arrange(desc(Total_Damage)) %>%
top_n(10, Total_Damage)
ggplot(economic_impact, aes(x = reorder(EVTYPE, -Total_Damage), y = Total_Damage / 1e9)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(title = "Największe straty ekonomiczne wg typu zdarzenia", x = "Typ zdarzenia", y = "Straty (mld USD)") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Z analizy wynika, że powodzie (ang. flood) są przyczyną największych strat ekonomicznych w Stanach Zjednoczonych w analizowanym okresie.
Analiza danych NOAA wykazała, że tornada stanowią największe zagrożenie dla zdrowia ludności, natomiast powodzie powodują największe straty ekonomiczne. Dane te mogą być podstawą do priorytetyzacji działań zapobiegawczych i planowania zasobów w zakresie zarządzania kryzysowego. Wyniki analizy są zgodne z intuicją, ale wymagają dalszej walidacji w szczegółowych badaniach regionalnych lub czasowych.