Analysis of the impact of extreme weather events on health and economy in the USA

Synopsis

We have found that tornadoes caused the most deaths and injured the most people in the USA between 1950 and 2011. On the other hand, if we measure the average number of killed or injured people per event, then tsunamies are on top of the list. It means that a tsunami is, on average, deadlier than a tornado, but it is also a much rarer event. Heat waves are present in the top 5 most dangerous events according to either total or mean number of casualties.

At the same time, thunderstorms and tornadoes have also caused the most total damage to property while hails caused the most damage to crops. Finally, hurricanes have caused the most average damage to both property and crops. Thus an individual hurricane is more harmful to economy than an individual tornado or hail, although hurricanes are rarer.

System info

Our analysis has been originally created and run in RStudio v. 0.98.977 under OS X 10.9.4.

Time and date the report has been generated: 2014-07-26 20:24:23 (Central European time).

Data Processing

Setting global options:

library(knitr)
opts_chunk$set(echo=TRUE,cache=TRUE)

Reading the data into R

Read the data into the data frame raw.data:

url <- "https://d396qusza40orc.cloudfront.net/repdata%2Fdata%2FStormData.csv.bz2"
data.file.name <- "storm_data.csv" 
if (!file.exists(data.file.name)) {
        download.file(url,data.file.name,method="curl")
}
raw.data <- read.csv(data.file.name)

Issues with the raw data

Overview of what we’ve just uploaded into R:

nrow(raw.data)
## [1] 902297
names(raw.data)
##  [1] "STATE__"    "BGN_DATE"   "BGN_TIME"   "TIME_ZONE"  "COUNTY"    
##  [6] "COUNTYNAME" "STATE"      "EVTYPE"     "BGN_RANGE"  "BGN_AZI"   
## [11] "BGN_LOCATI" "END_DATE"   "END_TIME"   "COUNTY_END" "COUNTYENDN"
## [16] "END_RANGE"  "END_AZI"    "END_LOCATI" "LENGTH"     "WIDTH"     
## [21] "F"          "MAG"        "FATALITIES" "INJURIES"   "PROPDMG"   
## [26] "PROPDMGEXP" "CROPDMG"    "CROPDMGEXP" "WFO"        "STATEOFFIC"
## [31] "ZONENAMES"  "LATITUDE"   "LONGITUDE"  "LATITUDE_E" "LONGITUDE_"
## [36] "REMARKS"    "REFNUM"
raw.event.types <- levels(raw.data$EVTYPE)
head(raw.event.types, n=22)
##  [1] "   HIGH SURF ADVISORY"  " COASTAL FLOOD"        
##  [3] " FLASH FLOOD"           " LIGHTNING"            
##  [5] " TSTM WIND"             " TSTM WIND (G45)"      
##  [7] " WATERSPOUT"            " WIND"                 
##  [9] "?"                      "ABNORMAL WARMTH"       
## [11] "ABNORMALLY DRY"         "ABNORMALLY WET"        
## [13] "ACCUMULATED SNOWFALL"   "AGRICULTURAL FREEZE"   
## [15] "APACHE COUNTY"          "ASTRONOMICAL HIGH TIDE"
## [17] "ASTRONOMICAL LOW TIDE"  "AVALANCE"              
## [19] "AVALANCHE"              "BEACH EROSIN"          
## [21] "Beach Erosion"          "BEACH EROSION"

The raw data has certain issues:

  • There are some columns with uninformative names: F, MAG, WFO, STATEOFFIC.

  • Due to upper/lower case letters and punctuation, differet event types are supposed to really represent the same kind of extreme weather, like Black Ice and BLACK ICE.

  • Due to phrasing, differet event types are supposed to really represent the same kind of extreme weather, like COLD TEMPERATURES, COLD WAVE, and COLD WEATHER.

We need to work out on renaming the events. First, let’s see what’s inside the columns with strange names:

a <- c(21,22,29,30)
head(raw.data[,a])
##   F MAG WFO STATEOFFIC
## 1 3   0               
## 2 2   0               
## 3 2   0               
## 4 2   0               
## 5 2   0               
## 6 2   0
summary(raw.data[,a])
##        F               MAG             WFO        
##  Min.   :0        Min.   :    0          :142069  
##  1st Qu.:0        1st Qu.:    0   OUN    : 17393  
##  Median :1        Median :   50   JAN    : 13889  
##  Mean   :1        Mean   :   47   LWX    : 13174  
##  3rd Qu.:1        3rd Qu.:   75   PHI    : 12551  
##  Max.   :5        Max.   :22000   TSA    : 12483  
##  NA's   :843563                   (Other):690738  
##                                STATEOFFIC    
##                                     :248769  
##  TEXAS, North                       : 12193  
##  ARKANSAS, Central and North Central: 11738  
##  IOWA, Central                      : 11345  
##  KANSAS, Southwest                  : 11212  
##  GEORGIA, North and Central         : 11120  
##  (Other)                            :595920

Well, it’s not precisely clear what is there, but it doesn’t seem to be relevant to health or ecnomony, so we’ll ignore the columns F, MAG, WFO, STATEOFFIC in our report.

Cleaning the raw data

Since the questions that we are trying to answer only concern the impact of extreme weather events on health and economy, we’ll remove columns of the raw data that we’re not intersted in. We’ll keep the following five columns as the only ones relevant to us:

a <- c(8,23,24,25,27)
names(raw.data)[a]
## [1] "EVTYPE"     "FATALITIES" "INJURIES"   "PROPDMG"    "CROPDMG"

Now we are creating a new data frame clean.data, copy relevant columns from raw.data into it, change event type names to the lower case, and remove all punctuation and excessive spaces from event type names.

clean.data <- raw.data[,a]
# Changing everything to lower case:
clean.data$EVTYPE <- tolower(clean.data$EVTYPE)
# Removing numerals:
clean.data$EVTYPE <- gsub("[0-9]","",clean.data$EVTYPE)
# Changing punctuation to spaces:
clean.data$EVTYPE <- gsub("[\\.\\,\\(\\)-\\&/]"," ",clean.data$EVTYPE)
# Removing spaces in the beginning:
clean.data$EVTYPE <- gsub("^( +)","",clean.data$EVTYPE)
# Removing spaces in the end:
clean.data$EVTYPE <- gsub("( +)$","",clean.data$EVTYPE)
# Changing several spaces in a row to one:
clean.data$EVTYPE <- gsub(" +"," ",clean.data$EVTYPE)

There are still issues. We will merge some events that are really about the same type of extreme weather, like hurricanes, typhoons, and tropical storms (very strong wind caused by a cyclone).

The code is long but easy to read:

# Blizzard:
clean.data$EVTYPE <- gsub(".*blizz.*","blizzard",clean.data$EVTYPE)

# Avalanche:
clean.data$EVTYPE <- gsub(".*avala.*","avalanche",clean.data$EVTYPE)

# Landslide:
clean.data$EVTYPE <- gsub(".*slide.*","landslide",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*slump.*","landslide",clean.data$EVTYPE)

# Thunderstorm and lightning:
clean.data$EVTYPE <- gsub(".*thunder.*","thunder",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*tstm.*","thunder",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*light.*","thunder",clean.data$EVTYPE)

# Flood:
clean.data$EVTYPE <- gsub(".*floood.*","flood",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*flood.*","flood",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*fld.*","flood",clean.data$EVTYPE)

# Glaze:
clean.data$EVTYPE <- gsub(".*glaze.*","glaze",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*freezing rain.*","glaze",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*ice.*","glaze",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*icy.*","glaze",clean.data$EVTYPE)

# Tornado:
clean.data$EVTYPE <- gsub(".*torn.*","tornado",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*spout.*","tornado",clean.data$EVTYPE)

# Gustnado:
clean.data$EVTYPE <- gsub(".*gustnado.*","gustnado",clean.data$EVTYPE)

# Hurricane:
clean.data$EVTYPE <- gsub(".*hurri.*","hurricane",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*typhoon.*","hurricane",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*tropical storm.*","hurricane",
                          clean.data$EVTYPE)

# Snow:
clean.data$EVTYPE <- gsub(".*snow.*","snow",clean.data$EVTYPE)

# Hail:
clean.data$EVTYPE <- gsub(".*hail.*","hail",clean.data$EVTYPE)

# Rain:
clean.data$EVTYPE <- gsub(".*rain.*","rain",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*shower.*","rain",clean.data$EVTYPE)

# Wind:
clean.data$EVTYPE <- gsub(".*wind.*","wind",clean.data$EVTYPE)

# Cold:
clean.data$EVTYPE <- gsub(".*cold.*","cold",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*cool.*","cold",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*freez.*","cold",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*frost.*","cold",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*low temp.*","cold",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*record low.*","cold",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*hypothermia.*","cold",clean.data$EVTYPE)

# Heat:
clean.data$EVTYPE <- gsub(".*hot.*","heat",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*warm.*","heat",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*heat.*","heat",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*hyperthermia.*","heat",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*record high.*","heat",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*high temp.*","heat",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*temperature record.*","heat",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*record temp.*","heat",clean.data$EVTYPE)

# Waves:
clean.data$EVTYPE <- gsub(".*high sea.*","waves",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*heavy sea.*","waves",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*high wave.*","waves",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*rogue wave.*","waves",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*rough sea.*","waves",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*seiche.*","waves",clean.data$EVTYPE)

# Fire:
clean.data$EVTYPE <- gsub(".*fire.*","fire",clean.data$EVTYPE)

# Funnel:
clean.data$EVTYPE <- gsub(".*funnel.*","funnel",clean.data$EVTYPE)

# Fog:
clean.data$EVTYPE <- gsub(".*fog.*","fog",clean.data$EVTYPE)

# Dust:
clean.data$EVTYPE <- gsub(".*dust.*","fire",clean.data$EVTYPE)

# Smoke:
clean.data$EVTYPE <- gsub(".*smoke.*","smoke",clean.data$EVTYPE)

# Sleet:
clean.data$EVTYPE <- gsub(".*sleet.*","sleet",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*wintry.*","sleet",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*wintery.*","sleet",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*winter mix.*","sleet",clean.data$EVTYPE)

# Volcano:
clean.data$EVTYPE <- gsub(".*volcan.*","volcano",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*vog.*","volcano",clean.data$EVTYPE)

# Wet weather:
clean.data$EVTYPE <- gsub(".*wet.*","wet",clean.data$EVTYPE)

# Winter weather:
clean.data$EVTYPE <- gsub(".*winter weather.*","winter",clean.data$EVTYPE)

# Winter storm:
clean.data$EVTYPE <- gsub(".*winter storm.*","winter.storm",
                          clean.data$EVTYPE)

# Dry weather:
clean.data$EVTYPE <- gsub(".*dry.*","dry",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*drought.*","dry",clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*driest.*","dry",clean.data$EVTYPE)

# Rip currents:
clean.data$EVTYPE <- gsub(".*rip current.*","rip.current",
                          clean.data$EVTYPE)

# High tides:
clean.data$EVTYPE <- gsub(".*high tide.*","high.tide",
                          clean.data$EVTYPE)

# Low tides:
clean.data$EVTYPE <- gsub(".*low tide.*","low.tide",
                          clean.data$EVTYPE)

# Storm surge:
clean.data$EVTYPE <- gsub(".*storm surge.*","storm.surge",
                          clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*coastal storm.*","storm.surge",
                          clean.data$EVTYPE)
clean.data$EVTYPE <- gsub(".*coastalstorm.*","storm.surge",
                          clean.data$EVTYPE)

# Erosion:
clean.data$EVTYPE <- gsub(".*eros.*","erosion",clean.data$EVTYPE)


clean.data$EVTYPE <- factor(clean.data$EVTYPE)
event.types <- levels(clean.data$EVTYPE)

Here is the list of event types:

event.types
##   [1] ""                           "apache county"             
##   [3] "avalanche"                  "below normal precipitation"
##   [5] "blizzard"                   "blow out tide"             
##   [7] "blow out tides"             "coastal surge"             
##   [9] "cold"                       "dam break"                 
##  [11] "dam failure"                "downburst"                 
##  [13] "drowning"                   "dry"                       
##  [15] "erosion"                    "excessive"                 
##  [17] "excessive precipitation"    "fire"                      
##  [19] "flood"                      "fog"                       
##  [21] "funnel"                     "glaze"                     
##  [23] "gustnado"                   "hail"                      
##  [25] "hazardous surf"             "heat"                      
##  [27] "heavy mix"                  "heavy precipatation"       
##  [29] "heavy precipitation"        "heavy surf"                
##  [31] "heavy surf high surf"       "heavy swells"              
##  [33] "high"                       "high surf"                 
##  [35] "high surf advisories"       "high surf advisory"        
##  [37] "high swells"                "high water"                
##  [39] "high.tide"                  "hurricane"                 
##  [41] "landslide"                  "large wall cloud"          
##  [43] "ligntning"                  "low.tide"                  
##  [45] "marine accident"            "marine mishap"             
##  [47] "metro storm may"            "microburst"                
##  [49] "mild pattern"               "mixed precip"              
##  [51] "mixed precipitation"        "monthly precipitation"     
##  [53] "monthly temperature"        "no severe weather"         
##  [55] "none"                       "normal precipitation"      
##  [57] "other"                      "rain"                      
##  [59] "rapidly rising water"       "record precipitation"      
##  [61] "red flag criteria"          "remnants of floyd"         
##  [63] "rip.current"                "rotating wall cloud"       
##  [65] "rough surf"                 "severe turbulence"         
##  [67] "sleet"                      "small stream"              
##  [69] "small stream and"           "smoke"                     
##  [71] "snow"                       "southeast"                 
##  [73] "storm.surge"                "summary august"            
##  [75] "summary jan"                "summary july"              
##  [77] "summary june"               "summary nov"               
##  [79] "summary oct"                "summary october"           
##  [81] "summary of april"           "summary of april rd"       
##  [83] "summary of august"          "summary of july"           
##  [85] "summary of june"            "summary of march"          
##  [87] "summary of may"             "summary of may am"         
##  [89] "summary of may pm"          "summary sept"              
##  [91] "summary september"          "thunder"                   
##  [93] "tornado"                    "tropical depression"       
##  [95] "tsunami"                    "urban and small"           
##  [97] "urban and small stream"     "urban small"               
##  [99] "urban small stream"         "volcano"                   
## [101] "wall cloud"                 "waves"                     
## [103] "wet"                        "wind"                      
## [105] "winter"                     "winter.storm"              
## [107] "wnd"

Now we’ll create the list of event types and their frequencies:

event.frequency <- as.data.frame(table(clean.data$EVTYPE))
head(event.frequency)
##                         Var1 Freq
## 1                               1
## 2              apache county    1
## 3                  avalanche  387
## 4 below normal precipitation    2
## 5                   blizzard 2745
## 6              blow out tide    1

Notice that some events are very rare and they are usually not even real extreme weather events but rather occur to the fact that the whole data set is old and hasn’t been planned carefully in advance. We’ll just delete records of events that occurred fewer than 10 times and events that do not seem to be abnormalities, like summary august.

# Creating the vector of names of interesting events:
a <- (event.frequency$Freq>9)
b <- !grepl(".*summary.*",event.frequency$Var1)
c <- !grepl(".*surf.*",event.frequency$Var1)
d <- !grepl(".*precip.*",event.frequency$Var1)
e <- !grepl(".*other.*",event.frequency$Var1)
interesting.events <- event.frequency$Var1[a&b&c&d&e]
interesting.events
##  [1] avalanche           blizzard            cold               
##  [4] dry                 fire                flood              
##  [7] fog                 funnel              glaze              
## [10] hail                heat                high.tide          
## [13] hurricane           landslide           low.tide           
## [16] rain                rip.current         sleet              
## [19] smoke               snow                storm.surge        
## [22] thunder             tornado             tropical depression
## [25] tsunami             volcano             waves              
## [28] wet                 wind                winter             
## [31] winter.storm       
## 107 Levels:  apache county avalanche ... wnd

Now we have only 31 different types of extreme weather events. Finally, we’ll subset our data frame to keep only those events that are in interesting.events.

a <- (clean.data$EVTYPE %in% interesting.events)
clean.data <- clean.data[a,]

Now the raw data contains 902297 records and the clean data contains 900907 records. Let’s see the head of clean.data:

head(clean.data)
##    EVTYPE FATALITIES INJURIES PROPDMG CROPDMG
## 1 tornado          0       15    25.0       0
## 2 tornado          0        0     2.5       0
## 3 tornado          0        2    25.0       0
## 4 tornado          0        2     2.5       0
## 5 tornado          0        2     2.5       0
## 6 tornado          0        6     2.5       0

Summarizing data

According to impact on health

We are creating the new data frame summary.health to count the death toll and the number of injured people as a result of each event type:

library("plyr")
summary.health <- ddply(clean.data, .(EVTYPE), summarize, 
                        frequency=length(FATALITIES),
                        deaths=sum(FATALITIES,na.rm=TRUE),
                        mean.deaths=round(mean(FATALITIES,na.rm=TRUE),digits=2),
                        injuries=sum(INJURIES,na.rm=TRUE),
                        mean.injuries=round(mean(INJURIES,na.rm=TRUE),digits=2))
summary.health
##                 EVTYPE frequency deaths mean.deaths injuries mean.injuries
## 1            avalanche       387    225        0.58      170          0.44
## 2             blizzard      2745    101        0.04      806          0.29
## 3                 cold      2516    235        0.09      298          0.12
## 4                  dry      2772      3        0.00       32          0.01
## 5                 fire      4825    114        0.02     2091          0.43
## 6                flood     86116   1553        0.02     8683          0.10
## 7                  fog      1834     80        0.04     1076          0.59
## 8               funnel      6980      0        0.00        3          0.00
## 9                glaze      2568    122        0.05     2434          0.95
## 10                hail    289281     15        0.00     1371          0.00
## 11                heat      3072   3179        1.03     9243          3.01
## 12           high.tide       105      0        0.00        0          0.00
## 13           hurricane       996    201        0.20     1716          1.72
## 14           landslide       654     44        0.07       55          0.08
## 15            low.tide       174      0        0.00        0          0.00
## 16                rain     11863    101        0.01      280          0.02
## 17         rip.current       777    577        0.74      529          0.68
## 18               sleet       170      3        0.02       77          0.45
## 19               smoke        21      0        0.00        0          0.00
## 20                snow     17395    161        0.01     1150          0.07
## 21         storm.surge       420     28        0.07       45          0.11
## 22             thunder    352793   1574        0.00    14778          0.04
## 23             tornado     64551   5639        0.09    91436          1.42
## 24 tropical depression        60      0        0.00        0          0.00
## 25             tsunami        20     33        1.65      129          6.45
## 26             volcano        30      0        0.00        0          0.00
## 27               waves        38     17        0.45       15          0.39
## 28                 wet        38      0        0.00        0          0.00
## 29                wind     28115    689        0.02     1951          0.07
## 30              winter      8155     61        0.01      538          0.07
## 31        winter.storm     11436    216        0.02     1338          0.12

Let us now find out the 5 most harmful types of events by total death toll, by the total number of injured people, by the average death toll, by the average number of injured people.

a <- order(summary.health$deaths,decreasing=TRUE)
top.death <- head(summary.health[a,],n=5)
b <- order(summary.health$injuries,decreasing=TRUE)
top.injury <- head(summary.health[b,],n=5)
c <- order(summary.health$mean.deaths,decreasing=TRUE)
top.mean.death <- head(summary.health[c,],n=5)
d <- order(summary.health$mean.injuries,decreasing=TRUE)
top.mean.injury <- head(summary.health[d,],n=5)

According to impact on economy

We are creating the new data frame summary.cost to count the total/average property damage and the total/average crop damage according to the event type:

summary.cost <- ddply(clean.data, .(EVTYPE), summarize, 
                        frequency=length(PROPDMG),
                        prop=sum(PROPDMG,na.rm=TRUE),
                        mean.prop=round(mean(PROPDMG,na.rm=TRUE),digits=2),
                        crop=sum(CROPDMG,na.rm=TRUE),
                        mean.crop=round(mean(CROPDMG,na.rm=TRUE),digits=2))
summary.cost
##                 EVTYPE frequency      prop mean.prop   crop mean.crop
## 1            avalanche       387    1623.9      4.20      0      0.00
## 2             blizzard      2745   26023.5      9.48    172      0.06
## 3                 cold      2516   10893.6      4.33  15925      6.33
## 4                  dry      2772    5836.6      2.11  33914     12.23
## 5                 fire      4825  131006.4     27.15  11167      2.31
## 6                flood     86116 2461602.5     28.58 367271      4.26
## 7                  fog      1834   17075.3      9.31      0      0.00
## 8               funnel      6980     194.6      0.03      0      0.00
## 9                glaze      2568   79741.8     31.05   1690      0.66
## 10                hail    289281  689831.8      2.38 581469      2.01
## 11                heat      3072    3232.9      1.05   1483      0.48
## 12           high.tide       105    1083.5     10.32      0      0.00
## 13           hurricane       996   75119.3     75.42  18103     18.18
## 14           landslide       654   20819.0     31.83     37      0.06
## 15            low.tide       174     320.0      1.84      0      0.00
## 16                rain     11863   53530.7      4.51  12457      1.05
## 17         rip.current       777     163.0      0.21      0      0.00
## 18               sleet       170      12.5      0.07      0      0.00
## 19               smoke        21     100.0      4.76      0      0.00
## 20                snow     17395  148080.8      8.51   2176      0.13
## 21         storm.surge       420   26220.5     62.43    855      2.04
## 22             thunder    352793 3284887.7      9.31 202973      0.58
## 23             tornado     64551 3225320.1     49.97 100027      1.55
## 24 tropical depression        60     738.0     12.30      0      0.00
## 25             tsunami        20     905.3     45.27     20      1.00
## 26             volcano        30     500.0     16.67      0      0.00
## 27               waves        38     995.5     26.20      0      0.00
## 28                 wet        38      35.0      0.92    142      3.74
## 29                wind     28115  457772.8     16.28  24417      0.87
## 30              winter      8155   16908.4      2.07     15      0.00
## 31        winter.storm     11436  133220.6     11.65   2479      0.22

Let us now find out the 5 most harmful types of events by total property damage, by the total crop damage, by the average property damage, by the average crop damage.

a <- order(summary.cost$prop,decreasing=TRUE)
top.prop <- head(summary.cost[a,],n=5)
b <- order(summary.cost$crop,decreasing=TRUE)
top.crop <- head(summary.cost[b,],n=5)
c <- order(summary.cost$mean.prop,decreasing=TRUE)
top.mean.prop <- head(summary.cost[c,],n=5)
d <- order(summary.cost$mean.crop,decreasing=TRUE)
top.mean.crop <- head(summary.cost[d,],n=5)

Results

We’ll present two panel plots to compare the impact of most harmful events on health and economy. We don’t know units of measurements of the economy damage, but they are not important since the question is just to compare different event types.

Impact on health

Here is the panel barplot of the four top-five lists of most harmful events to people’s health.

par(mfrow=c(2,2))
barplot(top.death$deaths,ylab="total death toll",
        names.arg=top.death$EVTYPE,
        main="Most harmful events")
barplot(top.injury$injuries,ylab="total no of injured",
        names.arg=top.injury$EVTYPE,
        main="Most harmful events")
barplot(top.mean.death$mean.deaths,ylab="average death toll",
        names.arg=top.mean.death$EVTYPE,
        main="Most harmful events")
barplot(top.mean.injury$mean.injuries,ylab="average no of injured",
        names.arg=top.mean.injury$EVTYPE,
        main="Most harmful events")

plot of chunk plottinghealth

The results seem to be consistent with common sense. Tornadoes, being very common extreme weather events, are by far the most harmful in terms of the total fatalities or injuries. Tsunamis are rare but deadly. Heat waves are common and hence cause a lot of total damage and, at the same time, every heat wave probably affects millions of people, so chances are that someone will die.

Also, events like rip currents and avalanches usually kill but do no injure people while glazes injure many but kill few.

Impact on economy

Here is the panel barplot of the four top-five lists of most harmful events to the economy.

par(mfrow=c(2,2))
barplot(top.prop$prop,ylab="total damage to property",
        names.arg=top.prop$EVTYPE,
        main="Costliest events")
barplot(top.crop$crop,ylab="total damage to crops",
        names.arg=top.crop$EVTYPE,
        main="Costliest events")
barplot(top.mean.prop$mean.prop,ylab="average damage to property",
        names.arg=top.mean.prop$EVTYPE,
        main="Costliest events")
barplot(top.mean.crop$mean.crop,ylab="average damage to crops",
        names.arg=top.mean.crop$EVTYPE,
        main="Costliest events")

plot of chunk plottingecon

Here, the findings are surprising, at least to me. For instance, an interesting thing is that thunderstorms cause so much damage. I don’t understand why it happens. It would be interesting to invesigate it further.