Harms of Storm Types in NOAA Data

Synopsis

We were asked to respond to two questions:

  • Across the United States, which types of events (as indicated in the EVTYPE variable) are most harmful with respect to population health?

  • Across the United States, which types of events have the greatest economic consequences?

In this analysis data from 1996 to 2011 is used to examine 4 dependent variables: fatalities, injuries, harm to crops (in dollars), and harm to property (in dollars). The data are drawn from the National Oceanic and Atmospheric Administration (NOAA) database on storm events. Although the database goes back to 1950, only data from 1996 forward is used in the analysis because prior to that year only tornados, hail and wind storms were reported (and in the early 1950s only tornados). This anaysis focused on 15 specific event types.

This analysis looks at both whether there was any harm of a given type associated with an event and for those events where there was at least some harm, what types were associated with the largest amount of harm. This analysis found that the types of events that were most harmful depends somewhat on how you measure harm. Note that not all events are typically thought of as “weather” though they often are weather related.

This table indicates the top ranked 5 event types for predicting at least some reported harm for each type of harm. These are caclulated using logistic regression with a number of controls:

  • For fatalities: Heat, Slides, Marine, Hurricane, Lightning
  • For injuries: Lightning, Particles, Slides, Fire, Heat
  • For crops: Hurricane, Cold, Flood, Tornado, Heat
  • For property: Lighting, Hurricane, Thunderstorm, Tornado, Flood.

This table indicates the top ranked 5 event types for predicting amount of harm for events for which there is at least some harm. These are caclulated using poisson regression for injuries and fatalities and linear regression of the logged harm for crop and property damage, with a number of controls:

  • For fatalities: Heat, Slides, marine, Hurricane, Lightning

  • For injuries: Lightning, Particles, Slides, Fire, Heat

  • For crops: Hurricane, Cold, Flood, Tornado, Hail

  • For property: Lightning, Hurricane, Thunder, Tornado, Flood.

Data Processing

The data required extensive cleaning prior to being used.

Please read the internal comments.

library('data.table')
library('lubridate')
library('stringi')
library('Hmisc')

Doing this only because the next block is generating an error that stops execution.

readRawData<-function()
{
        stormdata<-read.csv("./repdata-data-StormData.csv.bz2",
                    stringsAsFactors = FALSE,
                    na.strings = c("NA", "", " "),
                    colClasses = c(
                            "numeric",    "character",   "character",   "character",  "numeric", "character",
                            "character", "character",    "numeric",  "character",    "character", "character" , 
                            "character",   "numeric", "character", "character" , "character","character",
                            "numeric",     "numeric" ,     "character",  "numeric",  "numeric", "numeric" , 
                            "numeric",    "character", "numeric",   "character", "character",  "character",
                            "character",   "numeric",   "numeric",  "numeric", "numeric", "character",  
                            "numeric"    
                            
                    )                           
                            
        )
        ## Clean some types to store more efficiently
        ## Make this an array
        varstoint <- c(stormdata$STATE__, stormdata$COUNTY, stormdata$FATALITIES,
                       stormdata$INJURIES, stormdata$LATITUDE, stormdata$LATITUDE_E,
                       stormdata$LONGITUDE, stormdata$LONGITUDE_
        )
        stormdata$STATE__<-as.integer(stormdata$STATE__)
        stormdata$COUNTY<-as.integer(stormdata$COUNTY)
        stormdata$FATALITIES<-as.integer(stormdata$FATALITIES)
        stormdata$INJURIES<-as.integer(stormdata$INJURIES)
        stormdata$LATITUDE<-as.integer(stormdata$LATITUDE)
        stormdata$LATITUDE_E<-as.integer(stormdata$LATITUDE_E)
        stormdata$LONGITUDE<-as.integer(stormdata$LONGITUDE)
        stormdata$LONGITUDE_<-as.integer(stormdata$LONGITUDE_)
        
        ## Assign missing values
        stormdata$LATITUDE[stormdata$LATITUDE == 0] <- NA
        stormdata$LATITUDE_E[stormdata$LATITUDE_E == 0] <- NA
        stormdata$LONGITUDE[stormdata$LONGITUDE == 0] <- NA
        stormdata$LONGITUDE_[stormdata$LONGITUDE_ == 0] <- NA
        stormdata$MAG[stormdata$MAG == 0] <- NA
        stormdata$COUNTY_END[stormdata$COUNTY_END == 0] <- NA
        
        stormdata$begindate<-mdy(sub(" 0:00:00", "", stormdata$BGN_DATE))
        stormdata$beginyear<-year(stormdata$begindate)
        stormdata$beginmonth<-as.factor(month(stormdata$begindate))
        stormdata$beginday<-as.factor(wday(stormdata$begindate))
        
        stormdata$enddate<-mdy(sub(" 0:00:00", "", stormdata$END_DATE))

        ##Simplify string matching by making all of the eventtext upper case
        ## and exponent text lower case
        stormdata$EVTYPE <- tolower(stormdata$EVTYPE)
        stormdata$PROPDMGEXP <- toupper(stormdata$PROPDMGEXP)
        stormdata$CROPDMGEXP <- toupper(stormdata$CROPDMGEXP)
        
        # Clean up exponent fields
        stormdata$PROPDMGEXP[stormdata$PROPDMGEXP == "?"]<-NA
        stormdata$PROPDMGEXP[stormdata$PROPDMGEXP == "-"]<-NA
        stormdata$PROPDMGEXP[stormdata$PROPDMGEXP == "+"]<-NA
        stormdata$CROPDMGEXP[stormdata$CROPDMGEXP == "?"]<-NA
        
        stormdata$CROPDMGEXP[stormdata$CROPDMGEXP == "H"]<-2
        stormdata$CROPDMGEXP[stormdata$CROPDMGEXP == "K"]<-3
        stormdata$CROPDMGEXP[stormdata$CROPDMGEXP == "M"]<-6
        stormdata$CROPDMGEXP[stormdata$CROPDMGEXP == "B"]<-9
        
        stormdata$PROPDMGEXP[stormdata$PROPDMGEXP == "H"]<-2
        stormdata$PROPDMGEXP[stormdata$PROPDMGEXP == "K"]<-3
        stormdata$PROPDMGEXP[stormdata$PROPDMGEXP == "M"]<-6
        stormdata$PROPDMGEXP[stormdata$PROPDMGEXP == "B"]<-9
        
        
        ## Replace missing exponents with 0 which means multiply by 1
        stormdata$PROPDMGEXP[is.na(stormdata$PROPDMGEXP)]<-0
        stormdata$CROPDMGEXP[is.na(stormdata$CROPDMGEXP)]<-0
        
        ## construct total variables
        stormdata$cropcost<-stormdata$CROPDMG*10^as.numeric(stormdata$CROPDMGEXP)
        stormdata$propcost<-stormdata$PROPDMG*10^as.numeric(stormdata$PROPDMGEXP)
        
        stormdata$totalcost <- stormdata$propcost + stormdata$cropcost
        
        stormdata$totalhuman <-stormdata$FATALITIES + stormdata$INJURIES
        
        # Clean up part of begintime data
        stormdata$BGN_TIME<-sub("O", "0", stormdata$BGN_TIME, fixed=TRUE)
        stormdata$BGN_TIME[stormdata$BGN_TIME == "000"]<-"0000"
        stormdata$BGN_TIME[stormdata$BGN_TIME == "9999"]<-NA

        ## In this section we are going to extract the hour from the begin time data. 
        ## Visual inspection of table(stormdata$BGN_TIME) reveals that there are two formats.
        ## The 24 hour format is not really usable as is.
        ## We care about hour but not minute because the general time of day of an event may impact
        ## the human damage it causes. For example if many people are at work, or at home, 
        ## or commuting that may change things. 
        
        gethourC<-function(begindata)
        {
                beginhour<-stri_sub(begindata, 1, 2)
                
                return(beginhour)
        }
        
        
        gethourA <- function(begindata)
        {
                begintime<-as.ITime(begindata)
                beginhour<-as.character(hour(begintime))
                return(beginhour)
                
        }
        gethourB<-function(begindata)
        {             
                ## Be careful because year is also 4 digits, make sure not to apply to the wrong data
                
                beginhour<- ifelse (grepl("[[:digit:]]{4}", begindata) == TRUE, gethourC(begindata), NA)
                
                return(beginhour)
        }
        
        stormdata$beginhour<-ifelse (
                grepl(":", stormdata$BGN_TIME, fixed = TRUE) == TRUE,
                gethourA(stormdata$BGN_TIME),
                gethourB(stormdata$BGN_TIME)
        )
        
        hour<-ifelse(nchar(stormdata$beginhour) == 1 & !is.na(stormdata$beginhour), 
                     paste0("0", stormdata$beginhour), 
                     stormdata$beginhour )
        
        stormdata$beginhour<-ifelse(hour == "24", "00", hour ) 
        stormdata$beginhourf<-as.factor(stormdata$beginhour)
        
        ## Based on reading the remarks for the specific event with this value
        stormdata$EVTYPE[stormdata$EVTYPE == "high"]<-"high winds"      
        stormdata$EVTYPE[stormdata$EVTYPE == "?"]<-NA   
        
        saveRDS(stormdata, "./data/stormdata.rds")
        
        return(stormdata)
}
if (!exists("stormdata") & exists("./data/stormdata.rds"))
{
        stormdata<-readRDS("./data/stormdata.rds")
} else if (!exists("./data/stormdata.rds"))
{
        stormdata<-readRawData()

} 

Next work on cleaning up the event strings so they are usable.

if (!exists("evtypemap"))
{
        evtypemap<-readRDS('./data/evtypemap.rds')
} else {

        if (!exists("eventstrings"))
        {
                eventstrings<-stri_unique(stormdata$EVTYPE)
        }
        
        
        # Based on remarks
        
        evtypemap<-as.data.frame(eventstrings)
        
        ## Define the events we are interested in
        typesOfEvents<-c("Fog", "Rain", "Marine", "Hot", "Cold", "toDrop", "Tornado", "Hurricane",
                         "Lightning", "Dry", "Ice", "Wind", "Fire", "Slide", 'Particles', "Thunderstorm",
                         "Snow", "Flood", "Hail")
        
        ## Create a list for each event type
        
        for (i in 1:length(typesOfEvents))
        {
                assign(typesOfEvents[i], list())
        
        }
        
        ## Set up our data on each event type
        
        ## These represent summaries of extended events, general comments, and non weather or atmospheric events
        toDrop[["include"]] <- c("summmary", "metro storm", "year", "none", "marine mishap", "month",
                            "marine accident", "drowning", "no severe weather", "record",
                            "dam", "southeast", "mild pattern", "other"
                            )
        toDrop[["name"]]<-"toDrop"
        
        ## This will get funnels except for dust devils
        Tornado[["include"]] <- c("nado", "funne", "torn", "spout", "whirl")
        Tornado[["name"]]<-"Tornado"
        
        # Huricanes, typhoons, tropical storms and depressions
        Hurricane[["include"]]<-c("hurric", "typhoon", "tropical", "floyd")
        Hurricane[["name"]]<-"Hurricane"
        
        Snow[["include"]]<-c("snow", "blizzard", "wint", "heavy mix")
        Snow[["name"]]<-"Snow"
        
        Hail[["include"]]<-c("hail")
        Hail[["name"]]<-"Hail"
        
        # ice jam is based on the remarks which indicated that it caused flooding
        Flood[["include"]]<-c("flood", "floood", "fld", "water", "urban", "small stream", "ice jam")
        Flood[["exclude"]]<-c("waterspout")
        Flood[["name"]]<-"Flood"
        
        ## apache county and rapidly rising are based on the remarks
        Thunderstorm[["include"]]<-c("thun", "tstm", "wall cloud", "apache country", "rapidly rising")
        Thunderstorm[["exclude"]]<-c("non tstm", "non-tstm")
        Thunderstorm[["name"]]<-"Thunderstorm"
        
        Particles[["include"]]<-c("volc", "ash", "dust", "lights", "smoke")
        Particles[["exclude"]]<-c("flash")
        Particles[["name"]]<-"Particles"
        
        Slide[["include"]]<-c("slide", "slump", "avalanche", "avalance")
        Slide[["name"]]<-"Slide"
        
        Fire[["include"]]<-c("fire", "red flag")
        Fire[["name"]]<-"Fire"
        
        Wind[["include"]]<-c("wind", "wnd", "burst", "turbulence")
        ## This event type is excluding wind that comes with a thunderstorm
        Wind[["exclude"]]<-c("tstm", "thun")
        Wind[["name"]]<-"Wind"
        
        Ice[["include"]]<-c("ice", "icy", "glaze", "freezing rain")
        ## The ice jam event is really a flood event
        Ice[["exclude"]]<-c("ice jam")
        Ice[["name"]]<-"Ice"
        
        ## Excessive is used for dry periods according to the remarks
        Dry[["include"]]<-c("dry", "dri", "drought", "below normal precipitation", "excessive")
        Dry[["name"]]<-"Dry"
        
        Hot[["include"]]<-c("hot", "heat", "warm", "record high")
        Hot[["exclude"]]<-c("heatburst")
        Hot[["name"]]<-"Hot"
        
        Cold[["include"]]<-c("cold", "cool", "low temp", "hypothermia", "exposure", "record low", "freeze", "frost")
        Cold[["name"]]<-"Cold"
        
        Marine[["include"]]<-c("coastal", "beach", "surge", "tide", "surf", "tsunami", "seiche", "swell", "current",
                  "wave", "seas", "marine", "spray" )
        Marine[["exclude"]]<-c("season", "heat wave")
        Marine[["name"]]<-"Marine"
        
        Lightning[["include"]]<-c("lightn", "lighting", "ligning")
        Lightning[["name"]]<-"Lightning"
        
        Rain[["include"]]<-c("rain", "precip", "sleet", "shower", "wet")
        ## Exclude thunder storms and freezing rain
        Rain[["exclude"]]<-c("below normal precipitation", "tstm", "thun", "freezing rain")
        Rain[["name"]]<-"Rain"
        
        Fog[["include"]]<-c("fog", "vog")
        Fog[["name"]]<-"Fog"
        
        
        eventList<-list(Fog, Rain, Marine, Hot, Cold, toDrop, Tornado, Hurricane,
                         Lightning, Dry, Ice, Wind, Fire, Slide, Particles, Thunderstorm,
                         Snow, Flood, Hail)
        
        
        parseWeatherStrings<-function(weathertype)
        {
                parseResult<-grepl(paste0(weathertype$include, collapse="|"), eventstrings)
        
                if (!is.null(weathertype$exclude))
                {
                        
                        exclude<-(paste0(weathertype$exclude, collapse = "|"))
        
                        negative<-grepl(exclude, eventstrings)
                        parseResult<-parseResult & !negative
                }
                
                return(parseResult)
        }  
        
        eventdummies<-sapply(eventList,parseWeatherStrings)
        colnames(eventdummies)<-typesOfEvents
        evtypemap<-cbind(evtypemap, eventdummies)
        evtypemap$EVTYPE<-evtypemap$eventstrings
        
        
        ## Save the updated copy with the new variables
        saveRDS( evtypemap, './data/evtypemap.rds')

}

Then merge the data

if (!exists("analysisdata95") & !exists('./data/analysisdata95.rds') )
{
        analysisdata95<-merge(stormdata, evtypemap, by = "EVTYPE")
        
        
        ## Only use data after 1995 since before then the data were not complete
        analysisdata95<-subset(analysisdata95, beginyear > 1995)
        analysisdata95<-subset(analysisdata95, !toDrop)

        ## Do some additional cleaning
        analysisdata95$STATE[analysisdata95$STATE == "XX"]<-"SL"
        analysisdata95$STATE[analysisdata95$STATE == "ST"]<-"OH"
        
        analysisdata95$locationgroup<-"Mainland"
        ## Note Hawaii is here
        analysisdata95$locationgroup[analysisdata95$STATE %in% c("VI", "PR", "GU", "AS", "HI")]<-"Island"
        analysisdata95$locationgroup[analysisdata95$STATE %in% c("LO","LE","LM", "LH", "LS",
                                                                 "SL", "PM", "PK", "PZ",
                                                                 "PH", "AN", "AW","GM"         
                                                                 )]<-"Marine"
        analysisdata95$locationgroup<-as.factor(analysisdata95$locationgroup)
        
        
        
        analysisdata95$anyecon<-analysisdata95$totalcost > 0
        analysisdata95$anyprop<-analysisdata95$propcost > 0
        analysisdata95$anycrop<-analysisdata95$cropcost > 0
        analysisdata95$onehuman<-analysisdata95$totalhuman > 0
        analysisdata95$oneinjury<-analysisdata95$INJURIES > 0
        analysisdata95$onefatal<-analysisdata95$FATALITIES > 0
        saveRDS( analysisdata95, './data/analysisdata95.rds')
        

} else if (!exists("analysisdata95")) {
        analysisdata95<-readRDS('./data/analysisdata95.rds')

}

analysisdata95$anyharm<-with(analysisdata95, oneinjury|onefatal|anyprop|anycrop)

anyharmdata<-subset(analysisdata95, anyharm == TRUE)

Results

The number of events of each type is very uneven.

eventnames<-c("Fog", "Rain", "Marine", "Hot", "Cold", "Tornado", "Hurricane",
              "Lightning", "Dry", "Ice", "Wind", "Fire", "Slide", 'Particles', "Thunderstorm",
              "Snow", "Flood", "Hail")
eventdf<-analysisdata95[eventnames]
numberOfEvents<-colSums(eventdf)
par(las=2)
par(mar=c(5,8,6,2))
par(pin = c(3,3))
barplot(numberOfEvents, main="Distribution of Event Types (Number)", horiz=TRUE,
         names.arg=eventnames, cex.names = .5, ylab="Type",
        xlim=c(0, 225000))

plot of chunk unnamed-chunk-6

The graph shows that hail and thunderstorms are the most frequent events, while events like serious fog or that put particles in the air (like fires or volcanos) are relatively rare.

Dependent variables

There are 4 separate harm variables and as shown in the correlation matrix below, they are not highly correlated. Therefore the analysis looked at each type of harm (fatalities, injuries, crop damage and property damage) separately.

harms<-c("FATALITIES", "INJURIES", "propcost", "cropcost", 
         "totalhuman", "totalcost")
harmdf<-analysisdata95[harms]
## Correlation for all events 
cor(harmdf, use="pairwise.complete.obs")
##            FATALITIES INJURIES propcost cropcost totalhuman totalcost
## FATALITIES    1.00000  0.42627  0.02818  0.06413    0.50087   0.02974
## INJURIES      0.42627  1.00000  0.03049  0.04332    0.99645   0.03152
## propcost      0.02818  0.03049  1.00000  0.04760    0.03179   0.99969
## cropcost      0.06413  0.04332  0.04760  1.00000    0.04742   0.07245
## totalhuman    0.50087  0.99645  0.03179  0.04742    1.00000   0.03293
## totalcost     0.02974  0.03152  0.99969  0.07245    0.03293   1.00000
## Correlation for all events with at least some reported harm 
harmdf<-anyharmdata[harms]
cor(harmdf, use="pairwise.complete.obs")
##            FATALITIES INJURIES propcost cropcost totalhuman totalcost
## FATALITIES    1.00000  0.42524  0.02792  0.06309    0.49987   0.02945
## INJURIES      0.42524  1.00000  0.03031  0.04261    0.99646   0.03133
## propcost      0.02792  0.03031  1.00000  0.04749    0.03160   0.99969
## cropcost      0.06309  0.04261  0.04749  1.00000    0.04664   0.07234
## totalhuman    0.49987  0.99646  0.03160  0.04664    1.00000   0.03272
## totalcost     0.02945  0.03133  0.99969  0.07234    0.03272   1.00000

The data are very skewed, with the vast majority of events having 0 harms.

Summary Fatalities

summary(analysisdata95$FATALITIES)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    0.00    0.00    0.01    0.00  158.00

Sumary Injuries

summary(analysisdata95$INJURIES)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0     0.0     0.0     0.1     0.0  1150.0

Sumary Property Damage

summary(analysisdata95$propcost)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## 0.00e+00 0.00e+00 0.00e+00 5.62e+05 1.50e+03 1.15e+11

Sumary Crop Damage

summary(analysisdata95$cropcost)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## 0.00e+00 0.00e+00 0.00e+00 5.32e+04 0.00e+00 1.51e+09

To analyze the impact of individual event types, we may or may want to consider other factors. For example location (such as on the mainland, at sea, or an island such as Puerto Rico, Guam, or one of the Hawaiian Islands), time of year, and time of day may all be relevant predictors of the harm a storm causes. Also, there may be trends in the amount of harm per event (as represented by year). We also have to consider the influence of extreme outliers such as Hurricane Katrina or other very large storm events.

At the same time we might be more interested in the total impact of each type of event over a year. This is a different question and perhaps more easily answered. Keeping in mind that some specific events may have more than one event type associated with them,

Multivariate analysis

To do the analysis multivariate models were used. In each model the following variables were controlled for in addition to event type: year (linear), month the event began in, day of the week the event began on, hour of the day the event began at, type of location (mainland US, island, or marine). Event type was implemeted as a set of dummy variables, one for each type with Dry as the excluded value. While not technically necessary because events can have multiple descriptors, making all comparisons relative to Dry will mean the model is more stable (even though multicollinearity is probably not a problem with so much data). The included events types were: Hurricane, Hot, Cold, Snow, Thunderstorm, Tornado, Fire, Slide, Hail, Ice, Lightning, Marine, Particles, Wind, Flood, Fog (see Data Processing section for detailed descriptions).

Analyses of Presence of Harm for Each Type of Harm

Fatalities
fitfatallogistic <- glm(onefatal ~ beginhourf+beginmonth+beginyear+beginday+locationgroup+Hurricane+
                      Hot+Cold+Snow+Thunderstorm+Tornado+Fire+Slide+Hail + Ice+ Lightning+
                      Marine+ Particles + Wind + Flood + Fog, data=analysisdata95, family=binomial())

summary(fitfatallogistic)
## 
## Call:
## glm(formula = onefatal ~ beginhourf + beginmonth + beginyear + 
##     beginday + locationgroup + Hurricane + Hot + Cold + Snow + 
##     Thunderstorm + Tornado + Fire + Slide + Hail + Ice + Lightning + 
##     Marine + Particles + Wind + Flood + Fog, family = binomial(), 
##     data = analysisdata95)
## 
## Deviance Residuals: 
##    Min      1Q  Median      3Q     Max  
## -1.137  -0.122  -0.051  -0.012   4.847  
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)           128.20603    6.65972   19.25  < 2e-16 ***
## beginhourf01            0.28651    0.17039    1.68  0.09267 .  
## beginhourf02            0.35281    0.16880    2.09  0.03661 *  
## beginhourf03            0.43360    0.16756    2.59  0.00966 ** 
## beginhourf04            0.29840    0.16852    1.77  0.07660 .  
## beginhourf05            0.35295    0.16935    2.08  0.03714 *  
## beginhourf06            0.23848    0.16910    1.41  0.15845    
## beginhourf07            0.25959    0.17131    1.52  0.12970    
## beginhourf08            0.33564    0.17010    1.97  0.04848 *  
## beginhourf09            0.21139    0.17128    1.23  0.21714    
## beginhourf10            0.25732    0.17120    1.50  0.13284    
## beginhourf11            0.27768    0.16975    1.64  0.10187    
## beginhourf12            0.39600    0.16516    2.40  0.01650 *  
## beginhourf13            0.71050    0.21883    3.25  0.00117 ** 
## beginhourf14            0.58423    0.22253    2.63  0.00865 ** 
## beginhourf15            0.72020    0.21225    3.39  0.00069 ***
## beginhourf16            0.16285    0.23941    0.68  0.49636    
## beginhourf17            0.65109    0.22074    2.95  0.00318 ** 
## beginhourf18            0.24484    0.24344    1.01  0.31454    
## beginhourf19            0.32736    0.25102    1.30  0.19219    
## beginhourf20            0.29777    0.26286    1.13  0.25730    
## beginhourf21            0.30358    0.27525    1.10  0.27006    
## beginhourf22            0.49380    0.26413    1.87  0.06155 .  
## beginhourf23            0.30472    0.29406    1.04  0.30009    
## beginmonth2            -0.15547    0.07577   -2.05  0.04019 *  
## beginmonth3            -0.02600    0.07607   -0.34  0.73250    
## beginmonth4            -0.00746    0.07442   -0.10  0.92013    
## beginmonth5            -0.18231    0.07464   -2.44  0.01459 *  
## beginmonth6            -0.22343    0.07231   -3.09  0.00200 ** 
## beginmonth7            -0.03005    0.07016   -0.43  0.66844    
## beginmonth8            -0.04475    0.07217   -0.62  0.53521    
## beginmonth9            -0.03176    0.07795   -0.41  0.68372    
## beginmonth10           -0.51052    0.09582   -5.33  9.9e-08 ***
## beginmonth11           -0.25966    0.08983   -2.89  0.00385 ** 
## beginmonth12           -0.20063    0.07714   -2.60  0.00930 ** 
## beginyear              -0.06660    0.00332  -20.05  < 2e-16 ***
## beginday2              -0.26657    0.05449   -4.89  1.0e-06 ***
## beginday3              -0.27990    0.05422   -5.16  2.4e-07 ***
## beginday4              -0.26182    0.05406   -4.84  1.3e-06 ***
## beginday5              -0.26675    0.05401   -4.94  7.9e-07 ***
## beginday6              -0.31621    0.05461   -5.79  7.0e-09 ***
## beginday7              -0.04903    0.05174   -0.95  0.34333    
## locationgroupMainland   0.80962    0.09397    8.62  < 2e-16 ***
## locationgroupMarine    -2.20245    0.26733   -8.24  < 2e-16 ***
## HurricaneTRUE           1.81450    0.14236   12.75  < 2e-16 ***
## HotTRUE                 3.45431    0.07701   44.85  < 2e-16 ***
## ColdTRUE                1.84819    0.07892   23.42  < 2e-16 ***
## SnowTRUE               -0.33951    0.08790   -3.86  0.00011 ***
## ThunderstormTRUE       -2.17277    0.07906  -27.48  < 2e-16 ***
## TornadoTRUE             0.19499    0.07642    2.55  0.01072 *  
## FireTRUE               -0.26266    0.17559   -1.50  0.13469    
## SlideTRUE               3.20604    0.10340   31.01  < 2e-16 ***
## HailTRUE               -5.36978    0.29498  -18.20  < 2e-16 ***
## IceTRUE                 0.76865    0.14764    5.21  1.9e-07 ***
## LightningTRUE           1.31239    0.07357   17.84  < 2e-16 ***
## MarineTRUE              3.13517    0.06497   48.26  < 2e-16 ***
## ParticlesTRUE           0.28529    0.34143    0.84  0.40341    
## WindTRUE                0.30714    0.07264    4.23  2.4e-05 ***
## FloodTRUE              -0.19328    0.06468   -2.99  0.00280 ** 
## FogTRUE                 0.80119    0.16919    4.74  2.2e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 58187  on 653066  degrees of freedom
## Residual deviance: 42781  on 653007  degrees of freedom
## AIC: 42901
## 
## Number of Fisher Scoring iterations: 12
Injuries
fitinjurylogistic <- glm(oneinjury ~ beginhourf+beginmonth+beginyear+beginday+locationgroup+Hurricane+
                                Hot+Cold+Snow+Thunderstorm+Tornado+Fire+Slide+Hail + Ice+ Lightning+
                                Marine+ Particles + Wind + Flood + Fog, data=analysisdata95, family=binomial())

summary(fitinjurylogistic)
## 
## Call:
## glm(formula = oneinjury ~ beginhourf + beginmonth + beginyear + 
##     beginday + locationgroup + Hurricane + Hot + Cold + Snow + 
##     Thunderstorm + Tornado + Fire + Slide + Hail + Ice + Lightning + 
##     Marine + Particles + Wind + Flood + Fog, family = binomial(), 
##     data = analysisdata95)
## 
## Deviance Residuals: 
##    Min      1Q  Median      3Q     Max  
## -1.001  -0.149  -0.112  -0.046   3.924  
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)           120.37441    4.88092   24.66  < 2e-16 ***
## beginhourf01            0.75848    0.19934    3.80  0.00014 ***
## beginhourf02            0.76431    0.19874    3.85  0.00012 ***
## beginhourf03            0.73656    0.19849    3.71  0.00021 ***
## beginhourf04            0.63036    0.19871    3.17  0.00151 ** 
## beginhourf05            0.55688    0.19907    2.80  0.00515 ** 
## beginhourf06            0.53587    0.19917    2.69  0.00713 ** 
## beginhourf07            0.54341    0.19982    2.72  0.00654 ** 
## beginhourf08            0.49916    0.20050    2.49  0.01279 *  
## beginhourf09            0.65993    0.20047    3.29  0.00100 ***
## beginhourf10            0.62675    0.20084    3.12  0.00180 ** 
## beginhourf11            0.70052    0.20034    3.50  0.00047 ***
## beginhourf12            0.66069    0.19861    3.33  0.00088 ***
## beginhourf13            0.73606    0.22958    3.21  0.00135 ** 
## beginhourf14            0.66175    0.22660    2.92  0.00350 ** 
## beginhourf15            0.49215    0.22719    2.17  0.03029 *  
## beginhourf16            0.54664    0.22364    2.44  0.01451 *  
## beginhourf17            0.64032    0.22386    2.86  0.00423 ** 
## beginhourf18            0.61762    0.22712    2.72  0.00654 ** 
## beginhourf19            0.05970    0.25681    0.23  0.81617    
## beginhourf20            0.49625    0.24849    2.00  0.04582 *  
## beginhourf21            0.21966    0.27890    0.79  0.43094    
## beginhourf22            0.10532    0.30328    0.35  0.72840    
## beginhourf23            0.00567    0.32612    0.02  0.98612    
## beginmonth2            -0.15283    0.06585   -2.32  0.02029 *  
## beginmonth3            -0.14728    0.06263   -2.35  0.01870 *  
## beginmonth4            -0.14769    0.05821   -2.54  0.01117 *  
## beginmonth5            -0.46190    0.05745   -8.04  9.0e-16 ***
## beginmonth6            -0.56713    0.05657  -10.03  < 2e-16 ***
## beginmonth7            -0.44645    0.05636   -7.92  2.4e-15 ***
## beginmonth8            -0.53503    0.05894   -9.08  < 2e-16 ***
## beginmonth9            -0.36506    0.06485   -5.63  1.8e-08 ***
## beginmonth10           -0.23343    0.07007   -3.33  0.00086 ***
## beginmonth11           -0.05095    0.06792   -0.75  0.45311    
## beginmonth12           -0.22221    0.06990   -3.18  0.00148 ** 
## beginyear              -0.06268    0.00243  -25.77  < 2e-16 ***
## beginday2              -0.18481    0.04129   -4.48  7.6e-06 ***
## beginday3              -0.11689    0.04032   -2.90  0.00374 ** 
## beginday4              -0.11345    0.04025   -2.82  0.00483 ** 
## beginday5              -0.04990    0.03989   -1.25  0.21096    
## beginday6              -0.09477    0.04025   -2.35  0.01856 *  
## beginday7               0.08064    0.03985    2.02  0.04305 *  
## locationgroupMainland   0.57663    0.09727    5.93  3.1e-09 ***
## locationgroupMarine    -3.64874    0.32192  -11.33  < 2e-16 ***
## HurricaneTRUE           1.63050    0.16116   10.12  < 2e-16 ***
## HotTRUE                 2.06643    0.10079   20.50  < 2e-16 ***
## ColdTRUE               -1.03205    0.21346   -4.83  1.3e-06 ***
## SnowTRUE               -0.37212    0.08836   -4.21  2.5e-05 ***
## ThunderstormTRUE       -0.13286    0.07058   -1.88  0.05977 .  
## TornadoTRUE             1.66901    0.07230   23.08  < 2e-16 ***
## FireTRUE                1.97685    0.08958   22.07  < 2e-16 ***
## SlideTRUE               2.50098    0.11998   20.85  < 2e-16 ***
## HailTRUE               -2.52156    0.09913  -25.44  < 2e-16 ***
## IceTRUE                 0.86811    0.13406    6.48  9.5e-11 ***
## LightningTRUE           2.89237    0.07253   39.88  < 2e-16 ***
## MarineTRUE              1.96163    0.07467   26.27  < 2e-16 ***
## ParticlesTRUE           2.07208    0.16313   12.70  < 2e-16 ***
## WindTRUE                0.65982    0.07919    8.33  < 2e-16 ***
## FloodTRUE              -0.66713    0.07907   -8.44  < 2e-16 ***
## FogTRUE                 1.43030    0.12762   11.21  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 96597  on 653066  degrees of freedom
## Residual deviance: 77440  on 653007  degrees of freedom
## AIC: 77560
## 
## Number of Fisher Scoring iterations: 9
Crop Damage
fitcroplogistic <- glm(anycrop ~ beginhourf+beginmonth+beginyear+beginday+locationgroup+Hurricane+
                               Hot+Cold+Snow+Thunderstorm+Tornado+Fire+Slide+Hail + Ice+ Lightning+
                               Marine+ Particles + Wind + Flood + Fog, data=analysisdata95, family=binomial())
summary(fitcroplogistic)
## 
## Call:
## glm(formula = anycrop ~ beginhourf + beginmonth + beginyear + 
##     beginday + locationgroup + Hurricane + Hot + Cold + Snow + 
##     Thunderstorm + Tornado + Fire + Slide + Hail + Ice + Lightning + 
##     Marine + Particles + Wind + Flood + Fog, family = binomial(), 
##     data = analysisdata95)
## 
## Deviance Residuals: 
##    Min      1Q  Median      3Q     Max  
## -0.786  -0.288  -0.215  -0.143   3.984  
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            94.15998    3.45068   27.29  < 2e-16 ***
## beginhourf01           -0.84816    0.08689   -9.76  < 2e-16 ***
## beginhourf02           -0.91079    0.08602  -10.59  < 2e-16 ***
## beginhourf03           -0.95630    0.08540  -11.20  < 2e-16 ***
## beginhourf04           -0.96775    0.08504  -11.38  < 2e-16 ***
## beginhourf05           -0.90131    0.08483  -10.63  < 2e-16 ***
## beginhourf06           -0.83413    0.08475   -9.84  < 2e-16 ***
## beginhourf07           -0.75000    0.08512   -8.81  < 2e-16 ***
## beginhourf08           -0.70126    0.08581   -8.17  3.0e-16 ***
## beginhourf09           -0.60886    0.08645   -7.04  1.9e-12 ***
## beginhourf10           -0.65477    0.08766   -7.47  8.1e-14 ***
## beginhourf11           -0.62452    0.08780   -7.11  1.1e-12 ***
## beginhourf12           -0.46491    0.08484   -5.48  4.3e-08 ***
## beginhourf13           -1.07013    0.12716   -8.42  < 2e-16 ***
## beginhourf14           -1.01171    0.11548   -8.76  < 2e-16 ***
## beginhourf15           -0.83057    0.10539   -7.88  3.2e-15 ***
## beginhourf16           -0.91826    0.10588   -8.67  < 2e-16 ***
## beginhourf17           -0.72836    0.10282   -7.08  1.4e-12 ***
## beginhourf18           -0.49427    0.10124   -4.88  1.0e-06 ***
## beginhourf19           -0.56520    0.10803   -5.23  1.7e-07 ***
## beginhourf20           -0.47385    0.11355   -4.17  3.0e-05 ***
## beginhourf21           -0.27860    0.11911   -2.34   0.0193 *  
## beginhourf22           -0.15839    0.12647   -1.25   0.2104    
## beginhourf23           -0.01981    0.12780   -0.15   0.8768    
## beginmonth2            -0.05354    0.09094   -0.59   0.5560    
## beginmonth3            -0.56246    0.08800   -6.39  1.6e-10 ***
## beginmonth4             0.00633    0.07280    0.09   0.9307    
## beginmonth5             0.96891    0.06694   14.47  < 2e-16 ***
## beginmonth6             1.30084    0.06630   19.62  < 2e-16 ***
## beginmonth7             1.33660    0.06686   19.99  < 2e-16 ***
## beginmonth8             1.13048    0.06812   16.60  < 2e-16 ***
## beginmonth9             1.11954    0.07060   15.86  < 2e-16 ***
## beginmonth10            0.81536    0.07652   10.66  < 2e-16 ***
## beginmonth11            0.26805    0.09083    2.95   0.0032 ** 
## beginmonth12           -0.33554    0.11023   -3.04   0.0023 ** 
## beginyear              -0.04912    0.00172  -28.58  < 2e-16 ***
## beginday2               0.06012    0.02753    2.18   0.0290 *  
## beginday3              -0.17142    0.02865   -5.98  2.2e-09 ***
## beginday4              -0.05020    0.02775   -1.81   0.0704 .  
## beginday5              -0.02003    0.02776   -0.72   0.4705    
## beginday6              -0.01290    0.02780   -0.46   0.6427    
## beginday7               0.03478    0.02855    1.22   0.2232    
## locationgroupMainland   0.50693    0.10464    4.84  1.3e-06 ***
## locationgroupMarine   -11.78933   31.32079   -0.38   0.7066    
## HurricaneTRUE           1.65852    0.10412   15.93  < 2e-16 ***
## HotTRUE                -2.93101    0.45060   -6.50  7.8e-11 ***
## ColdTRUE                1.30767    0.08976   14.57  < 2e-16 ***
## SnowTRUE               -1.90115    0.14436  -13.17  < 2e-16 ***
## ThunderstormTRUE       -0.33962    0.05238   -6.48  9.0e-11 ***
## TornadoTRUE             0.48645    0.05820    8.36  < 2e-16 ***
## FireTRUE                0.09921    0.10429    0.95   0.3415    
## SlideTRUE              -1.90686    0.71023   -2.68   0.0073 ** 
## HailTRUE                0.41814    0.05173    8.08  6.3e-16 ***
## IceTRUE                -0.85160    0.32317   -2.64   0.0084 ** 
## LightningTRUE          -1.77600    0.12714  -13.97  < 2e-16 ***
## MarineTRUE             -2.82177    0.40952   -6.89  5.6e-12 ***
## ParticlesTRUE          -1.29800    0.50465   -2.57   0.0101 *  
## WindTRUE               -0.29678    0.07489   -3.96  7.4e-05 ***
## FloodTRUE               0.57779    0.05294   10.91  < 2e-16 ***
## FogTRUE               -13.26660   91.65655   -0.14   0.8849    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 169458  on 653066  degrees of freedom
## Residual deviance: 158070  on 653007  degrees of freedom
## AIC: 158190
## 
## Number of Fisher Scoring iterations: 16
Property Damage
fitproplogistic <- glm(anyprop ~ beginhourf+beginmonth+beginyear+beginday+locationgroup+Hurricane+
                        Hot+Cold+Snow+Thunderstorm+Tornado+Fire+Slide+Hail + Ice+ Lightning+
                        Marine+ Particles + Wind + Flood + Fog, data=analysisdata95, family=binomial())
summary(fitproplogistic)
## 
## Call:
## glm(formula = anyprop ~ beginhourf + beginmonth + beginyear + 
##     beginday + locationgroup + Hurricane + Hot + Cold + Snow + 
##     Thunderstorm + Tornado + Fire + Slide + Hail + Ice + Lightning + 
##     Marine + Particles + Wind + Flood + Fog, family = binomial(), 
##     data = analysisdata95)
## 
## Deviance Residuals: 
##    Min      1Q  Median      3Q     Max  
## -1.691  -0.924  -0.435   1.091   3.659  
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)           -1.77e+01   1.34e+00  -13.19  < 2e-16 ***
## beginhourf01           1.44e-01   4.24e-02    3.39  0.00069 ***
## beginhourf02           1.70e-01   4.21e-02    4.03  5.7e-05 ***
## beginhourf03           1.38e-01   4.20e-02    3.28  0.00103 ** 
## beginhourf04           1.26e-01   4.19e-02    3.00  0.00267 ** 
## beginhourf05           1.05e-01   4.19e-02    2.50  0.01226 *  
## beginhourf06           8.63e-02   4.19e-02    2.06  0.03948 *  
## beginhourf07           8.22e-02   4.21e-02    1.95  0.05080 .  
## beginhourf08           8.51e-02   4.23e-02    2.01  0.04415 *  
## beginhourf09           6.89e-02   4.26e-02    1.62  0.10578    
## beginhourf10           8.40e-02   4.28e-02    1.96  0.04969 *  
## beginhourf11           1.19e-01   4.29e-02    2.76  0.00570 ** 
## beginhourf12           9.92e-02   4.23e-02    2.35  0.01901 *  
## beginhourf13           1.26e-01   5.22e-02    2.42  0.01551 *  
## beginhourf14           1.86e-01   4.95e-02    3.76  0.00017 ***
## beginhourf15           1.15e-01   4.84e-02    2.38  0.01722 *  
## beginhourf16           1.64e-01   4.76e-02    3.45  0.00056 ***
## beginhourf17           1.04e-01   4.78e-02    2.17  0.03020 *  
## beginhourf18           1.25e-01   4.85e-02    2.57  0.01010 *  
## beginhourf19           2.08e-02   5.03e-02    0.41  0.67976    
## beginhourf20           4.39e-02   5.26e-02    0.83  0.40401    
## beginhourf21           1.18e-01   5.57e-02    2.13  0.03338 *  
## beginhourf22           6.57e-02   5.88e-02    1.12  0.26424    
## beginhourf23           2.44e-01   6.10e-02    4.01  6.1e-05 ***
## beginmonth2           -5.31e-03   2.17e-02   -0.25  0.80634    
## beginmonth3           -1.34e-01   2.02e-02   -6.63  3.5e-11 ***
## beginmonth4           -4.19e-02   1.87e-02   -2.24  0.02527 *  
## beginmonth5           -3.22e-01   1.81e-02  -17.80  < 2e-16 ***
## beginmonth6           -4.25e-01   1.78e-02  -23.88  < 2e-16 ***
## beginmonth7           -4.68e-01   1.82e-02  -25.77  < 2e-16 ***
## beginmonth8           -4.54e-01   1.87e-02  -24.28  < 2e-16 ***
## beginmonth9           -3.42e-01   2.09e-02  -16.39  < 2e-16 ***
## beginmonth10          -9.84e-02   2.26e-02   -4.36  1.3e-05 ***
## beginmonth11          -7.87e-02   2.34e-02   -3.36  0.00077 ***
## beginmonth12          -5.46e-02   2.34e-02   -2.34  0.01941 *  
## beginyear              7.42e-03   6.69e-04   11.09  < 2e-16 ***
## beginday2             -2.83e-03   1.13e-02   -0.25  0.80299    
## beginday3             -3.36e-02   1.12e-02   -3.00  0.00266 ** 
## beginday4              1.34e-02   1.11e-02    1.20  0.22896    
## beginday5             -1.03e-02   1.12e-02   -0.92  0.35677    
## beginday6              1.53e-03   1.12e-02    0.14  0.89132    
## beginday7             -6.80e-02   1.17e-02   -5.80  6.5e-09 ***
## locationgroupMainland  8.58e-01   3.93e-02   21.80  < 2e-16 ***
## locationgroupMarine   -2.30e+00   9.14e-02  -25.20  < 2e-16 ***
## HurricaneTRUE          2.84e+00   7.00e-02   40.62  < 2e-16 ***
## HotTRUE               -2.29e+00   1.98e-01  -11.54  < 2e-16 ***
## ColdTRUE              -2.51e+00   1.05e-01  -23.92  < 2e-16 ***
## SnowTRUE              -3.79e-01   3.17e-02  -11.97  < 2e-16 ***
## ThunderstormTRUE       2.19e+00   2.57e-02   85.37  < 2e-16 ***
## TornadoTRUE            1.69e+00   2.80e-02   60.40  < 2e-16 ***
## FireTRUE               1.08e+00   4.41e-02   24.47  < 2e-16 ***
## SlideTRUE              1.09e+00   7.88e-02   13.79  < 2e-16 ***
## HailTRUE              -5.31e-02   2.62e-02   -2.03  0.04281 *  
## IceTRUE                1.07e+00   5.38e-02   19.80  < 2e-16 ***
## LightningTRUE          2.96e+00   3.15e-02   93.84  < 2e-16 ***
## MarineTRUE            -1.11e+00   4.59e-02  -24.22  < 2e-16 ***
## ParticlesTRUE          1.10e+00   9.73e-02   11.33  < 2e-16 ***
## WindTRUE               1.40e+00   2.88e-02   48.53  < 2e-16 ***
## FloodTRUE              1.63e+00   2.63e-02   62.06  < 2e-16 ***
## FogTRUE               -5.85e-01   9.57e-02   -6.11  9.7e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 786257  on 653066  degrees of freedom
## Residual deviance: 663013  on 653007  degrees of freedom
## AIC: 663133
## 
## Number of Fisher Scoring iterations: 6

Analysis of Amount of Harm for Each Harm Type

Note: Only includes events in which there was some harm reported for at least one type of harm.

For the analyses of Fatalities and Injuries poisson regression was used since these are count data.

For the analysis of economic data the log of the dollar amount was used in order to reduce the skew caused by a small number of billion dollar and other very large events. In order to use the log with data that had values of 0, 1 was added to all of the observations.

Fatalities
fitfatalpoisson <- glm(FATALITIES ~ beginhourf+beginmonth+beginyear+beginday+locationgroup+Hurricane+
                                Hot+Cold+Snow+Thunderstorm+Tornado+Fire+Slide+Hail + Ice+ Lightning+
                                Marine+ Particles + Wind + Flood + Fog, data=anyharmdata, family=poisson())

summary(fitfatalpoisson)
## 
## Call:
## glm(formula = FATALITIES ~ beginhourf + beginmonth + beginyear + 
##     beginday + locationgroup + Hurricane + Hot + Cold + Snow + 
##     Thunderstorm + Tornado + Fire + Slide + Hail + Ice + Lightning + 
##     Marine + Particles + Wind + Flood + Fog, family = poisson(), 
##     data = anyharmdata)
## 
## Deviance Residuals: 
##    Min      1Q  Median      3Q     Max  
##  -2.95   -0.28   -0.09   -0.07   43.91  
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)           64.68342    4.74324   13.64  < 2e-16 ***
## beginhourf01          -0.01438    0.12798   -0.11  0.91051    
## beginhourf02           0.21481    0.12622    1.70  0.08878 .  
## beginhourf03           0.27524    0.12534    2.20  0.02809 *  
## beginhourf04           0.18495    0.12561    1.47  0.14092    
## beginhourf05           0.08131    0.12751    0.64  0.52369    
## beginhourf06           0.04503    0.12634    0.36  0.72155    
## beginhourf07          -0.00655    0.12905   -0.05  0.95954    
## beginhourf08           0.17910    0.12626    1.42  0.15605    
## beginhourf09           0.12868    0.12684    1.01  0.31034    
## beginhourf10           0.03765    0.12773    0.29  0.76816    
## beginhourf11           0.07579    0.12607    0.60  0.54772    
## beginhourf12           0.21220    0.12292    1.73  0.08430 .  
## beginhourf13           0.21677    0.17000    1.28  0.20225    
## beginhourf14          -0.13651    0.18234   -0.75  0.45406    
## beginhourf15           0.24083    0.16548    1.46  0.14556    
## beginhourf16          -0.07393    0.17710   -0.42  0.67636    
## beginhourf17           0.08270    0.17337    0.48  0.63337    
## beginhourf18           0.03773    0.18249    0.21  0.83620    
## beginhourf19          -0.18616    0.20346   -0.91  0.36021    
## beginhourf20          -0.00149    0.19825   -0.01  0.99399    
## beginhourf21          -0.14678    0.22674   -0.65  0.51741    
## beginhourf22           0.55327    0.18128    3.05  0.00227 ** 
## beginhourf23           0.03570    0.23313    0.15  0.87829    
## beginmonth2            0.02522    0.05770    0.44  0.66203    
## beginmonth3           -0.08771    0.05958   -1.47  0.14098    
## beginmonth4            0.10358    0.05405    1.92  0.05533 .  
## beginmonth5           -0.11238    0.05614   -2.00  0.04529 *  
## beginmonth6           -0.50564    0.05840   -8.66  < 2e-16 ***
## beginmonth7           -0.13436    0.05493   -2.45  0.01444 *  
## beginmonth8           -0.21774    0.05739   -3.79  0.00015 ***
## beginmonth9           -0.00637    0.06023   -0.11  0.91582    
## beginmonth10          -0.34581    0.07354   -4.70  2.6e-06 ***
## beginmonth11          -0.22014    0.06939   -3.17  0.00151 ** 
## beginmonth12          -0.18578    0.06218   -2.99  0.00281 ** 
## beginyear             -0.03343    0.00237  -14.13  < 2e-16 ***
## beginday2             -0.38321    0.03860   -9.93  < 2e-16 ***
## beginday3             -0.24265    0.03765   -6.45  1.2e-10 ***
## beginday4             -0.07241    0.03586   -2.02  0.04344 *  
## beginday5             -0.43162    0.04002  -10.78  < 2e-16 ***
## beginday6             -0.43785    0.03972  -11.02  < 2e-16 ***
## beginday7             -0.19553    0.03704   -5.28  1.3e-07 ***
## locationgroupMainland -0.48108    0.06674   -7.21  5.7e-13 ***
## locationgroupMarine   -0.98517    0.22429   -4.39  1.1e-05 ***
## HurricaneTRUE          1.68612    0.10192   16.54  < 2e-16 ***
## HotTRUE                3.92581    0.07369   53.28  < 2e-16 ***
## ColdTRUE               2.52271    0.07465   33.80  < 2e-16 ***
## SnowTRUE               0.89781    0.08502   10.56  < 2e-16 ***
## ThunderstormTRUE      -2.48160    0.08434  -29.42  < 2e-16 ***
## TornadoTRUE            0.92407    0.07285   12.68  < 2e-16 ***
## FireTRUE               0.38088    0.12704    3.00  0.00272 ** 
## SlideTRUE              2.38106    0.09300   25.60  < 2e-16 ***
## HailTRUE              -4.49295    0.29655  -15.15  < 2e-16 ***
## IceTRUE                0.90746    0.12615    7.19  6.3e-13 ***
## LightningTRUE          0.24497    0.07861    3.12  0.00183 ** 
## MarineTRUE             2.43281    0.07006   34.72  < 2e-16 ***
## ParticlesTRUE          0.33150    0.28559    1.16  0.24574    
## WindTRUE               0.09242    0.07260    1.27  0.20304    
## FloodTRUE             -0.08910    0.06926   -1.29  0.19827    
## FogTRUE                2.14141    0.13968   15.33  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 73894  on 201267  degrees of freedom
## Residual deviance: 45360  on 201208  degrees of freedom
## AIC: 56572
## 
## Number of Fisher Scoring iterations: 9
Injuries
fitinjurypoisson <- glm(INJURIES ~ beginhourf+beginmonth+beginyear+beginday+locationgroup+Hurricane+
                               Hot+Cold+Snow+Thunderstorm+Tornado+Fire+Slide+Hail + Ice+ Lightning+
                               Marine+ Particles + Wind + Flood + Fog, data=anyharmdata, family=poisson())

summary(fitinjurypoisson)
## 
## Call:
## glm(formula = INJURIES ~ beginhourf + beginmonth + beginyear + 
##     beginday + locationgroup + Hurricane + Hot + Cold + Snow + 
##     Thunderstorm + Tornado + Fire + Slide + Hail + Ice + Lightning + 
##     Marine + Particles + Wind + Flood + Fog, family = poisson(), 
##     data = anyharmdata)
## 
## Deviance Residuals: 
##    Min      1Q  Median      3Q     Max  
##  -7.87   -0.59   -0.33   -0.24  113.52  
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            1.03e+02   1.83e+00   56.02  < 2e-16 ***
## beginhourf01           1.04e+00   1.05e-01    9.91  < 2e-16 ***
## beginhourf02           1.30e+00   1.05e-01   12.38  < 2e-16 ***
## beginhourf03           1.21e+00   1.05e-01   11.52  < 2e-16 ***
## beginhourf04           1.33e+00   1.05e-01   12.70  < 2e-16 ***
## beginhourf05           1.29e+00   1.05e-01   12.34  < 2e-16 ***
## beginhourf06           1.08e+00   1.05e-01   10.26  < 2e-16 ***
## beginhourf07           1.10e+00   1.05e-01   10.47  < 2e-16 ***
## beginhourf08           1.14e+00   1.05e-01   10.89  < 2e-16 ***
## beginhourf09           1.03e+00   1.05e-01    9.81  < 2e-16 ***
## beginhourf10           1.59e+00   1.05e-01   15.14  < 2e-16 ***
## beginhourf11           1.32e+00   1.05e-01   12.60  < 2e-16 ***
## beginhourf12           1.47e+00   1.04e-01   14.10  < 2e-16 ***
## beginhourf13           7.87e-01   1.23e-01    6.41  1.5e-10 ***
## beginhourf14           9.96e-01   1.17e-01    8.51  < 2e-16 ***
## beginhourf15           1.22e+00   1.14e-01   10.68  < 2e-16 ***
## beginhourf16           1.36e+00   1.12e-01   12.17  < 2e-16 ***
## beginhourf17           8.98e-01   1.16e-01    7.75  8.9e-15 ***
## beginhourf18           9.70e-01   1.16e-01    8.36  < 2e-16 ***
## beginhourf19           1.67e-01   1.34e-01    1.25  0.21253    
## beginhourf20           8.28e-01   1.24e-01    6.67  2.6e-11 ***
## beginhourf21           2.48e-01   1.48e-01    1.68  0.09233 .  
## beginhourf22           4.74e-01   1.46e-01    3.25  0.00116 ** 
## beginhourf23           6.84e-02   1.74e-01    0.39  0.69484    
## beginmonth2            1.85e-01   2.67e-02    6.93  4.1e-12 ***
## beginmonth3           -5.90e-02   2.60e-02   -2.27  0.02305 *  
## beginmonth4            3.54e-01   2.26e-02   15.70  < 2e-16 ***
## beginmonth5           -1.28e-02   2.31e-02   -0.55  0.58004    
## beginmonth6           -5.13e-01   2.48e-02  -20.67  < 2e-16 ***
## beginmonth7           -2.26e-01   2.40e-02   -9.41  < 2e-16 ***
## beginmonth8           -2.06e-01   2.48e-02   -8.30  < 2e-16 ***
## beginmonth9           -3.82e-01   2.79e-02  -13.68  < 2e-16 ***
## beginmonth10           1.07e+00   2.26e-02   47.35  < 2e-16 ***
## beginmonth11           5.48e-02   2.72e-02    2.01  0.04400 *  
## beginmonth12           9.33e-03   2.89e-02    0.32  0.74688    
## beginyear             -5.24e-02   9.12e-04  -57.44  < 2e-16 ***
## beginday2             -7.00e-01   1.61e-02  -43.47  < 2e-16 ***
## beginday3             -6.66e-01   1.61e-02  -41.30  < 2e-16 ***
## beginday4             -3.61e-01   1.44e-02  -25.04  < 2e-16 ***
## beginday5             -5.76e-01   1.54e-02  -37.41  < 2e-16 ***
## beginday6             -5.28e-01   1.53e-02  -34.50  < 2e-16 ***
## beginday7              1.70e-01   1.27e-02   13.37  < 2e-16 ***
## locationgroupMainland  3.74e-03   3.97e-02    0.09  0.92494    
## locationgroupMarine   -6.92e-01   1.96e-01   -3.53  0.00042 ***
## HurricaneTRUE          2.46e+00   5.01e-02   49.03  < 2e-16 ***
## HotTRUE                3.73e+00   4.55e-02   82.06  < 2e-16 ***
## ColdTRUE               2.14e-03   9.48e-02    0.02  0.98195    
## SnowTRUE               1.08e+00   4.76e-02   22.66  < 2e-16 ***
## ThunderstormTRUE      -1.48e+00   4.56e-02  -32.37  < 2e-16 ***
## TornadoTRUE            1.84e+00   4.42e-02   41.76  < 2e-16 ***
## FireTRUE               1.54e+00   5.07e-02   30.31  < 2e-16 ***
## SlideTRUE              5.10e-01   8.16e-02    6.25  4.1e-10 ***
## HailTRUE              -1.88e+00   5.57e-02  -33.69  < 2e-16 ***
## IceTRUE                1.07e+00   6.04e-02   17.74  < 2e-16 ***
## LightningTRUE          5.73e-01   4.63e-02   12.38  < 2e-16 ***
## MarineTRUE             9.31e-01   4.72e-02   19.72  < 2e-16 ***
## ParticlesTRUE          2.11e+00   6.57e-02   32.19  < 2e-16 ***
## WindTRUE              -4.78e-01   4.99e-02   -9.59  < 2e-16 ***
## FloodTRUE              2.08e-01   4.40e-02    4.74  2.2e-06 ***
## FogTRUE                2.88e+00   5.58e-02   51.62  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 551868  on 201267  degrees of freedom
## Residual deviance: 397613  on 201208  degrees of freedom
## AIC: 422621
## 
## Number of Fisher Scoring iterations: 10
Crop Damage
fitcroplm <- lm(log(cropcost+1) ~ beginhourf+beginmonth+beginyear+beginday+locationgroup+Hurricane+
                                Hot+Cold+Snow+Thunderstorm+Tornado+Fire+Slide+Hail + Ice+ Lightning+
                                Marine+ Particles + Wind + Flood + Fog, data=anyharmdata)

summary(fitcroplm)
## 
## Call:
## lm(formula = log(cropcost + 1) ~ beginhourf + beginmonth + beginyear + 
##     beginday + locationgroup + Hurricane + Hot + Cold + Snow + 
##     Thunderstorm + Tornado + Fire + Slide + Hail + Ice + Lightning + 
##     Marine + Particles + Wind + Flood + Fog, data = anyharmdata)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -6.217 -0.985 -0.536  0.008 20.224 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           71.88594    2.73975   26.24  < 2e-16 ***
## beginhourf01          -0.92527    0.08984  -10.30  < 2e-16 ***
## beginhourf02          -1.00228    0.08927  -11.23  < 2e-16 ***
## beginhourf03          -1.02139    0.08894  -11.48  < 2e-16 ***
## beginhourf04          -1.03340    0.08879  -11.64  < 2e-16 ***
## beginhourf05          -0.97070    0.08883  -10.93  < 2e-16 ***
## beginhourf06          -0.89730    0.08893  -10.09  < 2e-16 ***
## beginhourf07          -0.80803    0.08930   -9.05  < 2e-16 ***
## beginhourf08          -0.79944    0.08973   -8.91  < 2e-16 ***
## beginhourf09          -0.74404    0.09033   -8.24  < 2e-16 ***
## beginhourf10          -0.78225    0.09075   -8.62  < 2e-16 ***
## beginhourf11          -0.76507    0.09086   -8.42  < 2e-16 ***
## beginhourf12          -0.49348    0.08963   -5.51  3.7e-08 ***
## beginhourf13          -0.97774    0.11051   -8.85  < 2e-16 ***
## beginhourf14          -1.12214    0.10449  -10.74  < 2e-16 ***
## beginhourf15          -0.84345    0.10261   -8.22  < 2e-16 ***
## beginhourf16          -0.99257    0.10083   -9.84  < 2e-16 ***
## beginhourf17          -0.80799    0.10149   -7.96  1.7e-15 ***
## beginhourf18          -0.63910    0.10284   -6.21  5.2e-10 ***
## beginhourf19          -0.60966    0.10711   -5.69  1.3e-08 ***
## beginhourf20          -0.58139    0.11195   -5.19  2.1e-07 ***
## beginhourf21          -0.51017    0.11759   -4.34  1.4e-05 ***
## beginhourf22          -0.39937    0.12465   -3.20  0.00136 ** 
## beginhourf23          -0.25952    0.12680   -2.05  0.04070 *  
## beginmonth2            0.15644    0.04536    3.45  0.00056 ***
## beginmonth3           -0.15177    0.04249   -3.57  0.00035 ***
## beginmonth4           -0.00334    0.03890   -0.09  0.93160    
## beginmonth5            0.78008    0.03756   20.77  < 2e-16 ***
## beginmonth6            1.28193    0.03682   34.82  < 2e-16 ***
## beginmonth7            1.24788    0.03745   33.32  < 2e-16 ***
## beginmonth8            1.07995    0.03865   27.94  < 2e-16 ***
## beginmonth9            1.00400    0.04329   23.19  < 2e-16 ***
## beginmonth10           0.63139    0.04665   13.54  < 2e-16 ***
## beginmonth11           0.26951    0.04871    5.53  3.1e-08 ***
## beginmonth12           0.07246    0.04988    1.45  0.14633    
## beginyear             -0.03416    0.00136  -25.04  < 2e-16 ***
## beginday2              0.05089    0.02364    2.15  0.03137 *  
## beginday3             -0.10623    0.02340   -4.54  5.6e-06 ***
## beginday4             -0.01004    0.02320   -0.43  0.66510    
## beginday5             -0.03955    0.02335   -1.69  0.09030 .  
## beginday6             -0.05814    0.02339   -2.49  0.01293 *  
## beginday7              0.06006    0.02456    2.44  0.01449 *  
## locationgroupMainland  0.07623    0.08781    0.87  0.38534    
## locationgroupMarine    2.22302    0.23175    9.59  < 2e-16 ***
## HurricaneTRUE         -0.45267    0.12660   -3.58  0.00035 ***
## HotTRUE               -3.86850    0.11457  -33.76  < 2e-16 ***
## ColdTRUE               2.60291    0.12878   20.21  < 2e-16 ***
## SnowTRUE              -2.57517    0.07848  -32.81  < 2e-16 ***
## ThunderstormTRUE      -3.06773    0.06226  -49.28  < 2e-16 ***
## TornadoTRUE           -2.16162    0.06692  -32.30  < 2e-16 ***
## FireTRUE              -2.12249    0.10120  -20.97  < 2e-16 ***
## SlideTRUE             -2.75928    0.14450  -19.10  < 2e-16 ***
## HailTRUE               0.26538    0.06358    4.17  3.0e-05 ***
## IceTRUE               -2.59597    0.12381  -20.97  < 2e-16 ***
## LightningTRUE         -3.54663    0.06745  -52.58  < 2e-16 ***
## MarineTRUE            -2.83889    0.09342  -30.39  < 2e-16 ***
## ParticlesTRUE         -2.93277    0.21621  -13.56  < 2e-16 ***
## WindTRUE              -2.61249    0.06798  -38.43  < 2e-16 ***
## FloodTRUE             -2.04126    0.06352  -32.13  < 2e-16 ***
## FogTRUE               -2.93715    0.22700  -12.94  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.81 on 201208 degrees of freedom
## Multiple R-squared:  0.156,  Adjusted R-squared:  0.155 
## F-statistic:  629 on 59 and 201208 DF,  p-value: <2e-16
Property Damage
fitproplm <- lm(log(propcost+1) ~ beginhourf+beginmonth+beginyear+beginday+locationgroup+Hurricane+
                        Hot+Cold+Snow+Thunderstorm+Tornado+Fire+Slide+Hail + Ice+ Lightning+
                        Marine+ Particles + Wind + Flood + Fog, data=anyharmdata)

summary(fitproplm)
## 
## Call:
## lm(formula = log(propcost + 1) ~ beginhourf + beginmonth + beginyear + 
##     beginday + locationgroup + Hurricane + Hot + Cold + Snow + 
##     Thunderstorm + Tornado + Fire + Slide + Hail + Ice + Lightning + 
##     Marine + Particles + Wind + Flood + Fog, data = anyharmdata)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -13.170  -1.079   0.119   1.467  19.955 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           -26.26178    2.70717   -9.70  < 2e-16 ***
## beginhourf01           -0.05303    0.08877   -0.60  0.55021    
## beginhourf02           -0.07273    0.08821   -0.82  0.40967    
## beginhourf03           -0.05411    0.08788   -0.62  0.53809    
## beginhourf04           -0.06838    0.08774   -0.78  0.43579    
## beginhourf05           -0.05623    0.08777   -0.64  0.52173    
## beginhourf06           -0.02406    0.08787   -0.27  0.78419    
## beginhourf07            0.02383    0.08824    0.27  0.78710    
## beginhourf08            0.03687    0.08867    0.42  0.67752    
## beginhourf09            0.07095    0.08926    0.79  0.42667    
## beginhourf10            0.01958    0.08968    0.22  0.82720    
## beginhourf11            0.01553    0.08978    0.17  0.86265    
## beginhourf12           -0.02756    0.08857   -0.31  0.75570    
## beginhourf13           -0.19748    0.10920   -1.81  0.07054 .  
## beginhourf14           -0.04570    0.10324   -0.44  0.65806    
## beginhourf15           -0.04655    0.10139   -0.46  0.64617    
## beginhourf16            0.05276    0.09963    0.53  0.59645    
## beginhourf17            0.08752    0.10028    0.87  0.38280    
## beginhourf18            0.11300    0.10162    1.11  0.26612    
## beginhourf19            0.01825    0.10584    0.17  0.86307    
## beginhourf20            0.13794    0.11062    1.25  0.21243    
## beginhourf21            0.19582    0.11620    1.69  0.09195 .  
## beginhourf22            0.06805    0.12317    0.55  0.58058    
## beginhourf23            0.24430    0.12529    1.95  0.05120 .  
## beginmonth2             0.04942    0.04482    1.10  0.27017    
## beginmonth3             0.17595    0.04199    4.19  2.8e-05 ***
## beginmonth4             0.18615    0.03844    4.84  1.3e-06 ***
## beginmonth5            -0.11622    0.03712   -3.13  0.00174 ** 
## beginmonth6            -0.29077    0.03638   -7.99  1.3e-15 ***
## beginmonth7            -0.32886    0.03701   -8.89  < 2e-16 ***
## beginmonth8            -0.25640    0.03819   -6.71  1.9e-11 ***
## beginmonth9            -0.03797    0.04277   -0.89  0.37470    
## beginmonth10           -0.06734    0.04609   -1.46  0.14403    
## beginmonth11           -0.11943    0.04813   -2.48  0.01308 *  
## beginmonth12           -0.05034    0.04929   -1.02  0.30713    
## beginyear               0.01659    0.00135   12.30  < 2e-16 ***
## beginday2              -0.21566    0.02336   -9.23  < 2e-16 ***
## beginday3              -0.16195    0.02312   -7.00  2.5e-12 ***
## beginday4              -0.16381    0.02293   -7.14  9.0e-13 ***
## beginday5              -0.20894    0.02307   -9.06  < 2e-16 ***
## beginday6              -0.11729    0.02311   -5.07  3.9e-07 ***
## beginday7              -0.25225    0.02427  -10.39  < 2e-16 ***
## locationgroupMainland   0.82933    0.08677    9.56  < 2e-16 ***
## locationgroupMarine     2.56851    0.22899   11.22  < 2e-16 ***
## HurricaneTRUE           5.06272    0.12510   40.47  < 2e-16 ***
## HotTRUE                -7.02200    0.11321  -62.03  < 2e-16 ***
## ColdTRUE               -6.08993    0.12725  -47.86  < 2e-16 ***
## SnowTRUE                2.14873    0.07754   27.71  < 2e-16 ***
## ThunderstormTRUE        1.12004    0.06152   18.21  < 2e-16 ***
## TornadoTRUE             2.99034    0.06612   45.22  < 2e-16 ***
## FireTRUE                2.22538    0.10000   22.25  < 2e-16 ***
## SlideTRUE              -2.09508    0.14278  -14.67  < 2e-16 ***
## HailTRUE                0.27589    0.06282    4.39  1.1e-05 ***
## IceTRUE                 3.12880    0.12234   25.57  < 2e-16 ***
## LightningTRUE           0.27034    0.06665    4.06  5.0e-05 ***
## MarineTRUE             -3.06918    0.09231  -33.25  < 2e-16 ***
## ParticlesTRUE           0.21395    0.21364    1.00  0.31661    
## WindTRUE                1.29149    0.06717   19.23  < 2e-16 ***
## FloodTRUE               2.67863    0.06277   42.68  < 2e-16 ***
## FogTRUE                 0.84955    0.22430    3.79  0.00015 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.78 on 201208 degrees of freedom
## Multiple R-squared:  0.153,  Adjusted R-squared:  0.153 
## F-statistic:  616 on 59 and 201208 DF,  p-value: <2e-16

To identify the biggest impact storm events you look at the coefficient sizes. A larger coefficient indicates association with more.

This table indicates the top ranked 5 event types for predicting at least some reported harm for each type of harm. These are caclulated using logistic regression with a number of controls:

  • For fatalities: Heat, Slides, Marine, Hurricane, Lightning
  • For injuries: Lightning, Particles, Slides, Fire, Heat
  • For crops: Hurricane, Cold, Flood, Tornado, Heat
  • For property: Lighting, Hurricane, Thunderstorm, Tornado, Flood.

This table indicates the top ranked 5 event types for predicting amount of harm for events for which there is at least some harm. These are caclulated using poisson regression for injuries and fatalities and linear regression of the logged harm for crop and property damage, with a number of controls:

  • For fatalities: Heat, Slides, marine, Hurricane, Lightning

  • For injuries: Lightning, Particles, Slides, Fire, Heat

  • For crops: Hurricane, Cold, Flood, Tornado, Hail

  • For property: Lightning, Hurricane, Thunder, Tornado, Flood.

While the eight results are all different, there are some commonalities.

Hurricanes, tornados and floods are all associated with both property and crop damage. Hail and extreme heat or cold are bad for crops. Lightning and thunder storms are bad for property.

Heat, lightning and slides (mudslides, avalanches and similar events) are particularly associated with human harm. Marine events are associated more with fatalities (this may be because they are associated with the specific risk of drowning) while fires are more associated with injuries.

Conclusions

It is quite difficult to analyze what kind of event is most harmful because you need to consider the type of harm (direct human harm versus economic harm) and whether some events are very harmful but also relatively rare.

In addition, we would probably want to take into account the location for which planning would be being done, since event types can be rare or common in a certain location.

We would also want to take into account issue like population in the area and the interactions between various factors.