Niniejszy raport analizuje bazę NOAA Storm Database obejmującą
zdarzenia pogodowe w Stanach Zjednoczonych w latach 1950–2011. Dane
pochodzą z oficjalnego rejestru burz i ekstremalnych zjawisk pogodowych
prowadzonego przez NOAA. Analiza koncentruje się na dwóch wymiarach
skutków: wpływie na zdrowie ludności oraz stratach ekonomicznych. Dla
każdego typu zdarzenia (EVTYPE) zsumowano liczbę ofiar
śmiertelnych i rannych oraz przeliczono szkody majątkowe i upraw na
dolary amerykańskie. Największy łączny wpływ na zdrowie wykazują
tornada, natomiast najwyższe straty materialne notuje powódź.
Perspektywa analizy odpowiada potrzebom planowania zasobów w zarządzaniu
kryzysowym — bez wskazywania szczegółowych rekomendacji operacyjnych.
Wyniki prezentowane są w tabelach i na wykresach słupkowych dla
dziesięciu najbardziej dotkliwych typów zdarzeń w każdej kategorii.
Przetwarzanie rozpoczyna się wyłącznie od surowego pliku skompresowanego
CSV dostarczonego w ramach zadania.
Baza NOAA Storm Database dokumentuje burze i inne istotne zjawiska pogodowe na terenie USA, w tym czas i miejsce wystąpienia oraz szacunki ofiar, rannych i szkód. Dane z lat 1950–2011 mogą być mniej kompletne we wczesnym okresie ze względu na ograniczoną dokumentację; nowsze wpisy są zwykle dokładniejsze. Szacunki szkód majątkowych nie są skorygowane o inflację i odzwierciedlają wartości wprowadzone w chwili zdarzenia (FAQ NOAA).
Poniższa analiza odpowiada na pytania:
EVTYPE) są najbardziej szkodliwe
dla zdrowia ludności?Analiza rozpoczyna się od surowego pliku
data_StormData (1).csv.bz2 — bez wcześniejszego
przetwarzania poza tym dokumentem.
Plik wczytywany jest funkcją read.csv() z połączeniem
bzfile(), co pozwala odczytać skompresowany CSV bez ręcznej
dekompresji. Ustawiono stringsAsFactors = FALSE, aby
kategorie tekstowe (np. EVTYPE) pozostały wektorami
znaków.
storm_raw <- read.csv(
bzfile("data_StormData (1).csv.bz2"),
stringsAsFactors = FALSE
)
nrow(storm_raw)
## [1] 902297
Z pełnego zbioru wybrane zostały kolumny potrzebne do analizy skutków
zdrowotnych i ekonomicznych. Typ zdarzenia (EVTYPE)
ujednolicono przez usunięcie białych znaków na początku i końcu oraz
zamianę na wielkie litery — w przeciwnym razie ten sam typ mógłby
występować pod wieloma etykietami i zaniżać sumy w agregacji.
Kolumny PROPDMG / CROPDMG zawierają
wielkość szkody; kolumny PROPDMGEXP /
CROPDMGEXP określają mnożnik: H (×10²),
K (×10³), M (×10⁶), B
(×10⁹). Wartości bez rozpoznanego kodu ekspozycji traktowane są jako
brak przeliczonej szkody (0 USD).
to_usd <- function(amount, exp) {
mult <- c(H = 1e2, K = 1e3, M = 1e6, B = 1e9)
amount * mult[match(exp, names(mult))]
}
storm <- storm_raw %>%
transmute(
EVTYPE = toupper(trimws(EVTYPE)),
FATALITIES = FATALITIES,
INJURIES = INJURIES,
prop_usd = to_usd(PROPDMG, PROPDMGEXP),
crop_usd = to_usd(CROPDMG, CROPDMGEXP)
) %>%
mutate(
prop_usd = replace(prop_usd, is.na(prop_usd), 0),
crop_usd = replace(crop_usd, is.na(crop_usd), 0),
total_damage = prop_usd + crop_usd,
health_total = FATALITIES + INJURIES
)
n_distinct(storm$EVTYPE)
## [1] 890
Dla każdego EVTYPE obliczono łączną liczbę ofiar i
rannych (health_total) oraz sumę szkód majątkowych i upraw
(econ_total).
health_by_type <- storm %>%
group_by(EVTYPE) %>%
summarise(
fatalities = sum(FATALITIES, na.rm = TRUE),
injuries = sum(INJURIES, na.rm = TRUE),
health_total = sum(health_total, na.rm = TRUE),
.groups = "drop"
) %>%
arrange(desc(health_total))
econ_by_type <- storm %>%
group_by(EVTYPE) %>%
summarise(
prop_damage = sum(prop_usd, na.rm = TRUE),
crop_damage = sum(crop_usd, na.rm = TRUE),
econ_total = sum(total_damage, na.rm = TRUE),
.groups = "drop"
) %>%
arrange(desc(econ_total))
top_health <- head(health_by_type, 10)
top_econ <- head(econ_by_type, 10)
Poniższa tabela przedstawia dziesięć typów zdarzeń o najwyższej łącznej liczbie ofiar śmiertelnych i rannych w latach 1950–2011.
kable(
top_health,
col.names = c("Typ zdarzenia", "Ofiary", "Ranni", "Razem"),
caption = "Dziesięć typów zdarzeń o największym wpływie na zdrowie (suma ofiar i rannych)."
)
| Typ zdarzenia | Ofiary | Ranni | Razem |
|---|---|---|---|
| TORNADO | 5633 | 91346 | 96979 |
| EXCESSIVE HEAT | 1903 | 6525 | 8428 |
| TSTM WIND | 504 | 6957 | 7461 |
| FLOOD | 470 | 6789 | 7259 |
| LIGHTNING | 816 | 5230 | 6046 |
| HEAT | 937 | 2100 | 3037 |
| FLASH FLOOD | 978 | 1777 | 2755 |
| ICE STORM | 89 | 1975 | 2064 |
| THUNDERSTORM WIND | 133 | 1488 | 1621 |
| WINTER STORM | 206 | 1321 | 1527 |
Typ zdarzenia o najwyższej wartości health_total to
TORNADO (96 979 łącznie: 5 633 ofiar i 91 346
rannych).
ggplot(top_health, aes(x = reorder(EVTYPE, health_total), y = health_total)) +
geom_col(fill = "steelblue") +
coord_flip() +
labs(
x = NULL,
y = "Ofiary śmiertelne + ranni",
title = "Wpływ na zdrowie według typu zdarzenia (TOP 10)"
) +
scale_y_continuous(labels = label_comma())
Dziesięć typów zdarzeń o najwyższej łącznej liczbie ofiar śmiertelnych i rannych w USA w latach 1950–2011.
Poniższa tabela przedstawia dziesięć typów zdarzeń o najwyższej łącznej szkodzie majątkowej i upraw (USD, bez korekty inflacji).
kable(
transform(
top_econ,
prop_damage = dollar(prop_damage, scale = 1e-9, suffix = " mld USD"),
crop_damage = dollar(crop_damage, scale = 1e-9, suffix = " mld USD"),
econ_total = dollar(econ_total, scale = 1e-9, suffix = " mld USD")
),
col.names = c("Typ zdarzenia", "Szkody majątkowe", "Szkody upraw", "Razem"),
caption = "Dziesięć typów zdarzeń o największych stratach ekonomicznych (mld USD)."
)
| Typ zdarzenia | Szkody majątkowe | Szkody upraw | Razem |
|---|---|---|---|
| FLOOD | $144.66 mld USD | $5.66 mld USD | $150.32 mld USD |
| HURRICANE/TYPHOON | $69.31 mld USD | $2.61 mld USD | $71.91 mld USD |
| TORNADO | $56.93 mld USD | $0.41 mld USD | $57.34 mld USD |
| STORM SURGE | $43.32 mld USD | $0.00 mld USD | $43.32 mld USD |
| HAIL | $15.73 mld USD | $3.03 mld USD | $18.75 mld USD |
| FLASH FLOOD | $16.14 mld USD | $1.42 mld USD | $17.56 mld USD |
| DROUGHT | $1.05 mld USD | $13.97 mld USD | $15.02 mld USD |
| HURRICANE | $11.87 mld USD | $2.74 mld USD | $14.61 mld USD |
| RIVER FLOOD | $5.12 mld USD | $5.03 mld USD | $10.15 mld USD |
| ICE STORM | $3.94 mld USD | $5.02 mld USD | $8.97 mld USD |
Typ zdarzenia o najwyższej wartości econ_total to
FLOOD (łącznie ok. 150.32 mld USD).
ggplot(top_econ, aes(x = reorder(EVTYPE, econ_total), y = econ_total / 1e9)) +
geom_col(fill = "darkorange") +
coord_flip() +
labs(
x = NULL,
y = "Straty łącznie (mld USD)",
title = "Straty ekonomiczne według typu zdarzenia (TOP 10)"
) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 25))
Dziesięć typów zdarzeń o najwyższych łącznych szkodach majątkowych i upraw w USA w latach 1950–2011 (mld USD, bez korekty inflacji).
Z perspektywy planowania reagowania na zagrożenia pogodowe rankingi różnią się w zależności od kryterium. Pod względem skutków dla zdrowia dominują tornada; pod względem strat materialnych — powódź, a w czołówce znajdują się także huragany/typoon, tornada i storm surge. Oznacza to, że priorytetyzacja zasobów (np. szkolenia, systemy ostrzegania, ubezpieczenia infrastruktury) może wymagać odrębnych ustaleń dla ochrony życia i dla ograniczania szkód majątkowych.