W raporcie analizuję bazę danych zdarzeń pogodowych NOAA z lat
1950–2011, aby ustalić, które typy zdarzeń są najbardziej szkodliwe dla
zdrowia publicznego oraz powodują największe straty ekonomiczne w
Stanach Zjednoczonych. Analizę rozpoczynam od surowego pliku
data_StormData.csv.bz2, który wczytuję bezpośrednio w R. Z
danych wybieram jedynie kolumny istotne dla pytań badawczych: typ
zdarzenia, liczbę ofiar śmiertelnych i rannych oraz szacunki strat
majątkowych i rolnych. Wartości strat przeliczam na dolary, korzystając
z kolumn wykładników (K, M, B).
Szkodliwość dla zdrowia mierzę sumą ofiar śmiertelnych i rannych dla
każdego typu zdarzenia. Straty ekonomiczne mierzę sumą strat majątkowych
i rolnych. Wyniki przedstawiam dla dziesięciu najgroźniejszych typów
zdarzeń w obu kategoriach. Najwięcej szkód dla zdrowia powodują tornada.
Największe straty ekonomiczne wynikają z powodzi. Wyniki wskazują, że
priorytet w przygotowaniach powinny mieć tornada (zdrowie) oraz powodzie
i huragany (gospodarka).
Dane wczytuję bezpośrednio z surowego, skompresowanego pliku CSV.
# KOD
dat <- read.csv("data_StormData.csv.bz2")
dim(dat)
## [1] 902297 37
Do analizy potrzebne są tylko kolumny dotyczące typu zdarzenia
(EVTYPE), ofiar (FATALITIES,
INJURIES) oraz strat (PROPDMG,
PROPDMGEXP, CROPDMG,
CROPDMGEXP).
# KOD
storm <- dat %>%
select(EVTYPE, FATALITIES, INJURIES,
PROPDMG, PROPDMGEXP, CROPDMG, CROPDMGEXP)
head(storm)
## EVTYPE FATALITIES INJURIES PROPDMG PROPDMGEXP CROPDMG CROPDMGEXP
## 1 TORNADO 0 15 25.0 K 0
## 2 TORNADO 0 0 2.5 K 0
## 3 TORNADO 0 2 25.0 K 0
## 4 TORNADO 0 2 2.5 K 0
## 5 TORNADO 0 2 2.5 K 0
## 6 TORNADO 0 6 2.5 K 0
Wartości strat są zapisane jako liczba (PROPDMG,
CROPDMG) oraz wykładnik (PROPDMGEXP,
CROPDMGEXP), gdzie K oznacza tysiące,
M miliony, a B miliardy dolarów. Tworzę
funkcję pomocniczą, która zamienia wykładnik na mnożnik, a następnie
obliczam straty w dolarach.
# KOD
mnoznik <- function(exp) {
exp <- toupper(as.character(exp))
case_when(
exp == "K" ~ 1e3,
exp == "M" ~ 1e6,
exp == "B" ~ 1e9,
TRUE ~ 1
)
}
storm <- storm %>%
mutate(
szkody_zdrowie = FATALITIES + INJURIES,
straty_dolary = PROPDMG * mnoznik(PROPDMGEXP) +
CROPDMG * mnoznik(CROPDMGEXP)
)
Sumuję ofiary śmiertelne i rannych w obrębie każdego typu zdarzenia i wybieram dziesięć najgroźniejszych typów.
# KOD
zdrowie <- storm %>%
group_by(EVTYPE) %>%
summarise(Ofiary = sum(szkody_zdrowie)) %>%
arrange(desc(Ofiary)) %>%
head(10)
zdrowie
## # A tibble: 10 × 2
## EVTYPE Ofiary
## <chr> <dbl>
## 1 TORNADO 96979
## 2 EXCESSIVE HEAT 8428
## 3 TSTM WIND 7461
## 4 FLOOD 7259
## 5 LIGHTNING 6046
## 6 HEAT 3037
## 7 FLASH FLOOD 2755
## 8 ICE STORM 2064
## 9 THUNDERSTORM WIND 1621
## 10 WINTER STORM 1527
Sumuję straty w dolarach w obrębie każdego typu zdarzenia (w miliardach dolarów) i również wybieram dziesięć najgroźniejszych typów.
# KOD
ekonomia <- storm %>%
group_by(EVTYPE) %>%
summarise(Straty_mld = sum(straty_dolary) / 1e9) %>%
arrange(desc(Straty_mld)) %>%
head(10)
ekonomia
## # A tibble: 10 × 2
## EVTYPE Straty_mld
## <chr> <dbl>
## 1 FLOOD 150.
## 2 HURRICANE/TYPHOON 71.9
## 3 TORNADO 57.4
## 4 STORM SURGE 43.3
## 5 HAIL 18.8
## 6 FLASH FLOOD 17.6
## 7 DROUGHT 15.0
## 8 HURRICANE 14.6
## 9 RIVER FLOOD 10.1
## 10 ICE STORM 8.97
Poniższa tabela i wykres przedstawiają dziesięć typów zdarzeń o największej łącznej liczbie ofiar.
# KOD
kable(zdrowie, col.names = c("Typ zdarzenia", "Łączna liczba ofiar"))
| Typ zdarzenia | Łączna liczba ofiar |
|---|---|
| TORNADO | 96979 |
| EXCESSIVE HEAT | 8428 |
| TSTM WIND | 7461 |
| FLOOD | 7259 |
| LIGHTNING | 6046 |
| HEAT | 3037 |
| FLASH FLOOD | 2755 |
| ICE STORM | 2064 |
| THUNDERSTORM WIND | 1621 |
| WINTER STORM | 1527 |
# KOD
ggplot(zdrowie, aes(x = reorder(EVTYPE, Ofiary), y = Ofiary)) +
geom_col(fill = "green") +
coord_flip() +
xlab("Typ zdarzenia") +
ylab("Liczba ofiar") +
ggtitle("Typy zdarzenia najbardziej szkodliwe dla zdrowia publicznego")
Najbardziej szkodliwym typem zdarzenia dla zdrowia publicznego są tornada, które odznaczają się ogromną przewagą wśród reszty zjawisk.
Poniższa tabela i wykres przedstawiają dziesięć typów zdarzeń o największych łącznych stratach ekonomicznych w miliardach dolarów.
# KOD
kable(ekonomia, col.names = c("Typ zdarzenia", "Straty (mld USD)"))
| Typ zdarzenia | Straty (mld USD) |
|---|---|
| FLOOD | 150.319678 |
| HURRICANE/TYPHOON | 71.913713 |
| TORNADO | 57.352114 |
| STORM SURGE | 43.323541 |
| HAIL | 18.758222 |
| FLASH FLOOD | 17.562129 |
| DROUGHT | 15.018672 |
| HURRICANE | 14.610229 |
| RIVER FLOOD | 10.148404 |
| ICE STORM | 8.967041 |
# KOD
ggplot(ekonomia, aes(x = reorder(EVTYPE, Straty_mld), y = Straty_mld)) +
geom_col(fill = "red") +
coord_flip() +
xlab("Typ zdarzenia") +
ylab("Straty ekonomiczne (mld USD)") +
ggtitle("Typy zjawisk powodujące największe straty ekonomiczne")
Największe straty ekonomiczne powodują powodzie, a w dalszej kolejności huragany/tajfuny oraz tornada. Z perspektywy zarządzania kryzysowego oznacza to, że przygotowania powinny w pierwszej kolejności obejmować tornada (ze względu na zagrożenie dla zdrowia i życia) oraz powodzie i huragany (ze względu na skalę strat materialnych).x