Storms and severe weather events can have serious public health and economic consequences. The following report investigates two aspects of the impacts of extreme weather events, and represents the solution of an assignment in the Coursera course Reproducible Research. The report is based on material from the U.S. National Oceanic and Atmospheric Administration's (NOAA) storm database. The two aspects examined in this report are the following:
The data were downloaded from the course website and loaded into a dataframe called storm as follows:
stfile <- bzfile("repdata-data-StormData.csv.bz2")
stormraw <- read.csv(stfile)
This table contains several variables that we are not interested in. The only two columns of the raw data frame relevant to the two questions above are the EVTYPE, FATALITIES, PROPDMG, PROPDMGEXP, CROPDMG, and CROPDMGEXP columns.
We can remove the unneeded columns and only retain the six relevant ones as follows:
storm <- stormraw[c(8,23:28)]
A summary of the variables shows that for most of the storms (at least up to the 3rd quartile) there are no fatalities, injuries, property damage or crop damage specified:
summary(storm)
## EVTYPE FATALITIES INJURIES PROPDMG
## HAIL :288661 Min. : 0 Min. : 0.0 Min. : 0
## TSTM WIND :219940 1st Qu.: 0 1st Qu.: 0.0 1st Qu.: 0
## THUNDERSTORM WIND: 82563 Median : 0 Median : 0.0 Median : 0
## TORNADO : 60652 Mean : 0 Mean : 0.2 Mean : 12
## FLASH FLOOD : 54277 3rd Qu.: 0 3rd Qu.: 0.0 3rd Qu.: 0
## FLOOD : 25326 Max. :583 Max. :1700.0 Max. :5000
## (Other) :170878
## PROPDMGEXP CROPDMG CROPDMGEXP
## :465934 Min. : 0.0 :618413
## K :424665 1st Qu.: 0.0 K :281832
## M : 11330 Median : 0.0 M : 1994
## 0 : 216 Mean : 1.5 k : 21
## B : 40 3rd Qu.: 0.0 0 : 19
## 5 : 28 Max. :990.0 B : 9
## (Other): 84 (Other): 9
Since we are only interested in weather events that had some quantifiable adverse impact, it makes sense to remove those lines from the data set that have 0 values specified for all of these four variables. This reduces the number of rows to be processed from more than 900,000 to slightly more than 250,000:
storm <- storm[storm$FATALITIES != 0 | storm$INJURIES != 0 | storm$CROPDMG != 0 | storm$PROPDMG != 0,]
Another issue is cleaning up the exponents for the property and crop damages. The following values for these appear in the table:
levels(storm$PROPDMGEXP)
## [1] "" "-" "?" "+" "0" "1" "2" "3" "4" "5" "6" "7" "8" "B" "h" "H" "K"
## [18] "m" "M"
levels(storm$CROPDMGEXP)
## [1] "" "?" "0" "2" "B" "k" "K" "m" "M"
Unfortunately the documentation of the database does not specify how these values should be interpreted. Presumably “H” means “hundred”, “K” means “thousand”, “M” means “million” and “B” means billion. The numeric values could mean 10n, but examining the descriptions of the events in the database more closely does not confirm this suspicion. Therefore I have treated all values beside H, K, M and B in the exponents columns as a multiplier value of 1000, i.e. equal to “K”, since according to the above summary of the columns this is by far the most frequent value for the exponent, and probably thus the intended value in these unusual cases.
In the next step I introduce two multiplier vectors, one for the property damage and the crop damage values each, according to the considerations above, coding the multipliers as powers of 10 (e.g. 3 means multiplying by 10n):
pmult <- vector(mode="integer", length=nrow(storm))
pmult[storm$PROPDMGEXP == "h" | storm$PROPDMGEXP == "H"] <- 2
pmult[storm$PROPDMGEXP == "m" | storm$PROPDMGEXP == "M"] <- 6
pmult[storm$PROPDMGEXP == "B"] <- 9
pmult[pmult == 0] <- 3
cmult <- vector(mode="integer", length=nrow(storm))
cmult[storm$CROPDMGEXP == "m" | storm$CROPDMGEXP == "M"] <- 6
cmult[storm$CROPDMGEXP == "B"] <- 9
cmult[cmult == 0] <- 3
Then the property, crop and total damage values are calculated by multiplying the PROPDMG and CROPDMG columns respectively by the previously calculated multipliers, and then adding the two results:
pdam <- storm$PROPDMG * 10^pmult
cdam <- storm$CROPDMG * 10^cmult
tdam <- pdam + cdam
storm <- cbind(storm, pdam, cdam, tdam)
I have carried out a quick sanity check on the data to see whether the damage values were in general correct:
summary(storm$pdam)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00e+00 2.00e+03 1.00e+04 1.68e+06 3.50e+04 1.15e+11
summary(storm$cdam)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00e+00 0.00e+00 0.00e+00 1.93e+05 0.00e+00 5.00e+09
summary(storm$tdam)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00e+00 2.50e+03 1.00e+04 1.87e+06 5.00e+04 1.15e+11
I have checked the events with the highest damage values using:
storm[storm$pdam == max(storm$pdam),]
## EVTYPE FATALITIES INJURIES PROPDMG PROPDMGEXP CROPDMG CROPDMGEXP
## 605953 FLOOD 0 0 115 B 32.5 M
## pdam cdam tdam
## 605953 1.15e+11 32500000 1.15e+11
storm[storm$cdam == max(storm$cdam),]
## EVTYPE FATALITIES INJURIES PROPDMG PROPDMGEXP CROPDMG
## 198389 RIVER FLOOD 0 0 5 B 5
## 211900 ICE STORM 0 0 500 K 5
## CROPDMGEXP pdam cdam tdam
## 198389 B 5e+09 5e+09 1e+10
## 211900 B 5e+05 5e+09 5e+09
The events with the highest damage values can then be examined in the raw data:
stormraw[605953,]
## STATE__ BGN_DATE BGN_TIME TIME_ZONE COUNTY COUNTYNAME
## 605953 6 1/1/2006 0:00:00 12:00:00 AM PST 55 NAPA
## STATE EVTYPE BGN_RANGE BGN_AZI BGN_LOCATI END_DATE
## 605953 CA FLOOD 0 COUNTYWIDE 1/1/2006 0:00:00
## END_TIME COUNTY_END COUNTYENDN END_RANGE END_AZI END_LOCATI
## 605953 07:00:00 AM 0 NA 0 COUNTYWIDE
## LENGTH WIDTH F MAG FATALITIES INJURIES PROPDMG PROPDMGEXP CROPDMG
## 605953 0 0 NA 0 0 0 115 B 32.5
## CROPDMGEXP WFO STATEOFFIC ZONENAMES LATITUDE LONGITUDE
## 605953 M MTR CALIFORNIA, Western 3828 12218
## LATITUDE_E LONGITUDE_
## 605953 3828 12218
## REMARKS
## 605953 Major flooding continued into the early hours of January 1st, before the Napa River finally fell below flood stage and the water receeded. Flooding was severe in Downtown Napa from the Napa Creek and the City and Parks Department was hit with $6 million in damage alone. The City of Napa had 600 homes with moderate damage, 150 damaged businesses with costs of at least $70 million.
## REFNUM
## 605953 605943
stormraw[198389,]
## STATE__ BGN_DATE BGN_TIME TIME_ZONE COUNTY
## 198389 17 8/31/1993 0:00:00 0000 CST 1
## COUNTYNAME STATE EVTYPE BGN_RANGE BGN_AZI
## 198389 ADAMS, CALHOUN AND JERSEY IL RIVER FLOOD 0
## BGN_LOCATI END_DATE END_TIME COUNTY_END COUNTYENDN END_RANGE
## 198389 West Central 0 NA 0
## END_AZI END_LOCATI LENGTH WIDTH F MAG FATALITIES INJURIES PROPDMG
## 198389 0 0 NA 0 0 0 5
## PROPDMGEXP CROPDMG CROPDMGEXP WFO STATEOFFIC ZONENAMES LATITUDE
## 198389 B 5 B 0
## LONGITUDE LATITUDE_E LONGITUDE_
## 198389 0 0 0
## REMARKS
## 198389 and Southwest Illinois,The Great Flood of '93 continued into its second month as the Mississippi, Illinois, and Kaskaskia Rivers reached their peaks early in the month and then began a very slow fall. Most points along the rivers were still above flood stage at the end of August. The information in this entry should be treated as a continuation of the July entry. \n Flood Stage Record Date Old Record Date \nGrafton, Illinois: 18 38.15 8/1 33.12 4/28/73\nAlton, Illinois: 21 42.71 8/1 36.6 4/29/73\nChester, Illinois: 27 49.69 8/7 43.3 4/30/73 \nLife along the rivers slowly moved a bit toward normal during August, but for most, normal life along the rivers will never return. As the water receded at the end of August, the damage became plainly visible. Destroyed homes and businesses, were the rule, not the exception. While there was some talk of rebuilding, a growing number of people were seriously considering giving the floodplains back to the rivers and moving to higher ground. \nThe National Weather Service (NWS) would like to compliment Mr. Robert Lindemann and Mr. Charles Staley, two employees on loan to the NWS from the Federal Aviation Administration, who gathered much of the information in this report. Adams County,On Wednesday (August 4) a ferry shuttle was set up on the Mississippi River between Quincy and La Grange since the bridges between Missouri and Illinois were still closed. Two pontoon boats, carrying more than 40 people each, connected with shuttle busses waiting at the designated landing points. On August 31, the Mississippi River was still 2 feet above flood stage at Quincy. \nCalhoun County,On Monday (August 2) officials of Calhoun County reported there were 880 people displaced, up from the 584 counted July 22. The flood had hit 220 homes and 60 businesses. At Hardin Sunday (August 1) a levee protecting the town water plant gave way, closing the water plant until the levee was repaired and the floodwater was pumped out. As of Tuesday (August 10) the boil order remained in effect in Hardin. On Friday (August 27) the Hardin airlift, a month long effort by National Guard helicopter crews, unloaded their last load. Reopened Illinois Highway 100 through Kampsville south to Hardin allowed daily food and supplies to be delivered by truck. The Hardin bridge over the Illinois River remained closed as 7 feet of water was still in East Hardin. At Kampsville, a sandbag levee protecting the American Archaeological Center broke Tuesday morning (August 3). Two buildings in the complex, two homes and a business were quickly flooded, however the eleven million prehistoric artifacts were spared. To date, 13 of the 17 buildings the Center owns had been flooded. Wednesday (August 4) about 30 homes were flooded and every business was closed in Kampsville due to the Tuesday levee break. Tuesday (August 10) the boil orders remained in effect in Kampsville. Jersey County,On Sunday (August 1) the mayor of Grafton said his town's water plant was pumping river water spiked with a heavy dose of chlorine. Residents were warned to use the water only for bathing and flushing toilets. Floodwater was still rising at Grafton at that time. The boil order for Jersey County Rural Water District was canceled Friday (August 20). Thursday ((August 19) a Grafton Alderman said too many of the town's 109 homes are still under water to begin any buy out applications. \nMadison County,The Mississippi swamped the landfill on Chouteau Island near Granite City Monday (August 2). On Sunday (August 1) the water plant at Alton and 12 businesses were flooded when water pushed beneath a buckled street and into low-lying parts of downtown. Water service was cut off to 72,000 customers. The levee protecting the older portion of downtown failed in the 200 block of Piasa Street. By Sunday night the river had taken buildings 3 blocks up from the river and was still climbing. By Monday (August 2) Alton city officials estimate that Sunday's downtown flooding of a 3 square block area would cost about $4 million just to repair the streets, sidewalks and sewers. Seventy-five businesses were flooded. The Alton water plant resumed operation Friday (August 6) but the quality of the water was only suitable for flushing toilets. As of Sunday (August 8) about 2.3 million gallons of water had been brought in by truck and distributed since the city's water plant was flooded on July 27. The Illinois-American Water Company in Alton reported Saturday afternoon (August 14) that they had restored water service to all customers in Alton, Godfrey, Brighton, Elsah and Fosterburg. A company spokesperson said the water was still not safe to drink even if boiled. By Friday (August 20) a boil water order was lifted for residents of Alton, Brighton, Godfrey, Bunker Hill, Cottage Hills and the Forest Homes - Maple Park water district. Some distant reaches of the water network were still affected by the boil order as more time was needed to flush out the system. The mayor's office at Alton advised on Saturday (August 28) that the flood had damaged 45 businesses and 3 vacant buildings. \nMonroe County ,On Sunday (August 1) the Columbia levee broke flooding farms and 15,000 acres of farmland in the Columbia Bottoms area. Some 65 homeowners in the Columbia Bottoms area fled Saturday night prior to the break. Another levee break late Sunday, the second to fail in less than a day displaced about 1,800 people. Sunday (August 8) officials estimated that 70,000 acres have been flooded in Monroe County, including 900 homes. Monroe County officials advised on Wednesday (August 18) that the Federal levee along the Mississippi River will be rebuilt to the pre-flood level of 38 feet. The Army Corps of Engineers call this a 10 year flood level. The county would like the levee raised to a 100 year flood level and the Corps had agreed to make a study of its economic viability by 1995. The Columbia mayor said Thursday (7-26) that 65 homes in the Bottoms area outside of the city limits were flooded. Residents of about 20 of those homes have been able to return. At Valmeyer, the Fountain Creek levee standing between the floodwater and the town, had water lapping at the top of the levee on Sunday (8/1/92). The south levee at the creek had been raised to 51 feet by rock and sandbags. The levee broke north of Valmeyer Monday (August 2) and began drowning the hopes of nearly all the 900 residents, confounding weeks of work and prayer. The Valmeyer School District planned to set up school in two portable buildings on the Monroe County Fairgrounds 4 miles east of Valmeyer. More than 400 students in the district of 550 students have been displaced by the flood. On August 26, the Mayor of Valmeyer said floodwater damaged 346 of the 350 homes in town and 8 of the 12 businesses. Around 60% of the property owners had flood insurance. Despite the flood insurance, many people talked of not returning, or of possibly moving the town to higher ground east of its present location. \nPike County,It was reported on Thursday (August 5) that the U.S. 54 bridge approach on the Illinois side of the Mississippi River may be repaired by early next week, making the bridge useable. Pedestrians were allowed to cross the bridge. In Louisiana, Missouri at 6 P.M. Saturday (August 7) the U.S. 54 bridge to Pike County Illinois was reopened. Illinois had closed the bridge July 1, 1993. Thousands of acres of farmland remained under water due to the Sny Levee break in July, even though some water was returning to the main channel of the Mississippi. \nRandolph County,As a wall of water from the levee break near Columbia, IL approached Prairie du Rocher August 1, it caused a flurry of activity in an attempt to save the town. On Wednesday (August 4) dump trucks poured rocks on top of the levee at Prairie du Rocher. Workers raised the levee at Prairie du Rocher to 52 feet. The Army Corps of Engineers blasted holes in a levee southwest of town hoping to divert floodwater back into the Mississippi River. On Thursday (August 5) the gamble to intentionally flood the bottom land northwest of Prairie du Rocher by blowing the Mississippi River levee paid off. Although blowing the levee flooded 75 homes north of the levee at Prairie du Rocher these homes would have been flooded anyway with the approaching water from the Columbia levee break. The Mississippi River crested August 5, with the levee protecting most of the town of Prairie du Rocher holding. In Chester, on Monday (August 2) guards at the Menard Correctional Center moved 200 prisoners from low-level cells to higher ground. In Evansville Friday (August 6) the Kaskaskia River caused flooding as it was backed up by the Mississippi River. The city had been under a boil water order for about a month even though the water treatment plant was sandbagged and the water tests were satisfactory. The backwater had flooded 6 businesses and 17 homes. On Thursday (August 26) the Randolph County Sheriff said only 5 of the 162 houses on Kaskaskia Island remained standing. The island had been flooded when the levee protecting the island blew in July. The small town of Rockwood, in the southwest corner of Randolph County, reported that as of Saturday (August 28) all 30 homes had been flooded. \nSt. Clair County,The flood wall protecting East St. Louis held throughout the threat of flooding. The only other potential problem was in the East Carondelet area where sandbagging stopped any major flooding. The other problem in East Carondelet was involved the flooding at a propane tank farm across the river in Missouri. If the tanks had exploded, the community would have been seriously affected. The EMA officials said on August 31 that there had been no flooding serious in St. Clair County.
## REFNUM
## 198389 198375
stormraw[211900,]
## STATE__ BGN_DATE BGN_TIME TIME_ZONE COUNTY
## 211900 28 2/9/1994 0:00:00 0000 CST 0
## COUNTYNAME STATE EVTYPE BGN_RANGE BGN_AZI
## 211900 MSZ001 - 023 - 025 - 026 - 034 MS ICE STORM 0
## BGN_LOCATI END_DATE END_TIME COUNTY_END COUNTYENDN
## 211900 2/10/1994 0:00:00 0 NA
## END_RANGE END_AZI END_LOCATI LENGTH WIDTH F MAG FATALITIES
## 211900 0 0 0 NA 0 0
## INJURIES PROPDMG PROPDMGEXP CROPDMG CROPDMGEXP WFO STATEOFFIC
## 211900 0 500 K 5 B
## ZONENAMES
## 211900 DE SOTO - DE SOTO - CHICKASAW - LEFLORE - GRENADA - WASHINGTON
## LATITUDE LONGITUDE LATITUDE_E LONGITUDE_
## 211900 0 0 0 0
## REMARKS
## 211900 During the early morning hours on the 9th, freezing rain began falling over north Mississippi and continued through mid-day on the 10th. Ice accumulation of three to six inches were common over the affected area. Due to the weight of the ice, power lines, trees and tree limbs were downed. Many trees fell on houses and automobiles. The ice storm cause significant damage to approximately 3.7 million acres of commercial forestland. The value of damaged timber was estimated to be $1.3 billion. In addition to the damage of commercial timber was the damage to urban trees, estimated to be $27 million. Twenty five percent of the states pecan crop will be lost for the next five to ten years at an estimated cost of $5.5 million per year. Nearly 750,000 customers were with out power in the affected area. Customers were without power for up to a month. Over eight thousand utility poles were pulled down by the weight of the ice. Over 4,700 miles of power lines were down. Four-hundred-ninety-one water systems were affected with around 741,000 customers without water. Estimates of damage to utilities will run nearly $500 million. This is the worst ice storm to strike Mississippi since a severe ice storm struck the state in January 1951.
## REFNUM
## 211900 211887
The latter two events seem correct, but the first event is very unlikely to have caused the indicated 115 billion dollars of damage based on the textual description of the event, so this should be corrected to 115 million in order to avoid serious distortion of the data:
storm$pdam[storm$pdam == 115000000000] <- 115000000
storm$tdam[storm$tdam == 115032500000] <- storm$pdam[storm$tdam == 115032500000] + storm$cdam[storm$tdam == 115032500000]
Having corrected this mistake, the next most costly event turns out to be the New Orleans flood of 2005, which makes sense:
storm[storm$pdam == max(storm$pdam),]
## EVTYPE FATALITIES INJURIES PROPDMG PROPDMGEXP CROPDMG
## 577676 STORM SURGE 0 0 31.3 B 0
## CROPDMGEXP pdam cdam tdam
## 577676 3.13e+10 0 3.13e+10
stormraw[577676,]
## STATE__ BGN_DATE BGN_TIME TIME_ZONE COUNTY
## 577676 22 8/29/2005 0:00:00 02:00:00 AM CST 40
## COUNTYNAME STATE EVTYPE BGN_RANGE
## 577676 LAZ040 - 059 - 061>064 - 067>070 LA STORM SURGE 0
## BGN_AZI BGN_LOCATI END_DATE END_TIME COUNTY_END
## 577676 8/29/2005 0:00:00 05:00:00 PM 0
## COUNTYENDN END_RANGE END_AZI END_LOCATI LENGTH WIDTH F MAG
## 577676 NA 0 0 0 NA 0
## FATALITIES INJURIES PROPDMG PROPDMGEXP CROPDMG CROPDMGEXP WFO
## 577676 0 0 31.3 B 0 LIX
## STATEOFFIC
## 577676 LOUISIANA, Southeast
## ZONENAMES
## 577676 ST. TAMMANY - ST. TAMMANY - UPPER LAFOURCHE - UPPER JEFFERSON - ORLEANS - UPPER PLAQUEMINES - UPPER ST. BERNARD - LOWER LAFOURCHE - LOWER JEFFERSON - LOWER PLAQUEMINES - LOWER ST. BERNARD
## LATITUDE LONGITUDE LATITUDE_E LONGITUDE_
## 577676 0 0 0 0
## REMARKS
## 577676 Storm surge damage in southeast Louisiana, especially in the New Orleans area and the coastal parishes, was catastrophic. Hurricane protection levees and floodwalls were overtopped and/or breached resulting in widespread and deep flooding of homes and businesses. Much of Orleans and Plaquemines Parishes and nearly all of St. Bernard Parish were flooded by storm surge. Approximately 80 percent of the city of New Orleans was flooded. Thousands of people were stranded by the flood waters in homes and buildings and on rooftops for several days and had to be rescued by boat and helicopter. In Jefferson Parish, levees were not compromised, however many homes were flooded by either heavy rain overwhelming limited pumping capacity or storm surge water moving through in-operable pumps into the parish. Severe storm surge damage also occurred along the north shore of Lake Pontchartrain from Mandeville to Slidell with storm surge water moving inland as far as Old Towne Slidell with water up to 6 feet deep in some locations\n\nPost storm high water surveys of the area conducted by FEMA indicated the following storm surge estimates: Orleans Parish - 12-15 feet in east New Orleans to 9 to 12 feet along the Lakefront; St. Bernard Parish - 14 to 17 feet; Jefferson Parish - 6 to 9 feet along the lakefront to 5 to 8 feet from Lafitte to Grand Isle; Plaquemines Parish - 15 to 17 feet; St. Tammany Parish - 11 to 16 feet in southeast portion to 7 to 10 feet in western portion. All storm surge heights are still water elevations referenced to NAVD88 datum.
## REFNUM
## 577676 577616
Finally a column is added to the table that summarizes the health impacts of events by adding the fatalities and injuries:
storm$tcasual <- storm$INJURIES + storm$FATALITIES
This completes the preprocessing of the data.
From the earliest events included in the NOAA database up to November 2011, a total of 15145 fatalities and more than 140000 injuries were linked to severe weather events.
sum(storm$FATALITIES)
## [1] 15145
sum(storm$INJURIES)
## [1] 140528
The 20 most harmful severe weather events in terms of fatalities were the following:
fatsum <- aggregate(storm$FATALITIES, by=list(storm$EVTYPE), sum)
fatsum.2 <- fatsum[order(fatsum$x,decreasing=TRUE),]
othersum <- sum(fatsum.2[21:nrow(fatsum.2),2])
fatsum.2 <- fatsum.2[1:20,]
fatsum.2[21,1] <- "OTHER"
fatsum.2[21,2] <- othersum
row.names(fatsum.2) <- NULL
names(fatsum.2) <- c("Event Type", "Fatalities")
fatsum.2
## Event Type Fatalities
## 1 TORNADO 5633
## 2 EXCESSIVE HEAT 1903
## 3 FLASH FLOOD 978
## 4 HEAT 937
## 5 LIGHTNING 816
## 6 TSTM WIND 504
## 7 FLOOD 470
## 8 RIP CURRENT 368
## 9 HIGH WIND 248
## 10 AVALANCHE 224
## 11 WINTER STORM 206
## 12 RIP CURRENTS 204
## 13 HEAT WAVE 172
## 14 EXTREME COLD 160
## 15 THUNDERSTORM WIND 133
## 16 HEAVY SNOW 127
## 17 EXTREME COLD/WIND CHILL 125
## 18 STRONG WIND 103
## 19 BLIZZARD 101
## 20 HIGH SURF 101
## 21 OTHER 1632
library(ggplot2)
qplot(fatsum.2$"Event Type", fatsum.2$Fatalities, geom="bar", stat="identity", xlab = "Event Type", ylab = "Fatalities", main="Weather Event Types with the Most Fatalities") + coord_flip()
The 20 most harmful severe weather events in terms of injuries were the following:
injsum <- aggregate(storm$INJURIES, by=list(storm$EVTYPE), sum)
injsum.2 <- injsum[order(injsum$x,decreasing=TRUE),]
othersum <- sum(injsum.2[21:nrow(injsum.2),2])
injsum.2 <- injsum.2[1:20,]
injsum.2[21,1] <- "OTHER"
injsum.2[21,2] <- othersum
row.names(injsum.2) <- NULL
names(injsum.2) <- c("Event Type", "Injuries")
injsum.2
## Event Type Injuries
## 1 TORNADO 91346
## 2 TSTM WIND 6957
## 3 FLOOD 6789
## 4 EXCESSIVE HEAT 6525
## 5 LIGHTNING 5230
## 6 HEAT 2100
## 7 ICE STORM 1975
## 8 FLASH FLOOD 1777
## 9 THUNDERSTORM WIND 1488
## 10 HAIL 1361
## 11 WINTER STORM 1321
## 12 HURRICANE/TYPHOON 1275
## 13 HIGH WIND 1137
## 14 HEAVY SNOW 1021
## 15 WILDFIRE 911
## 16 THUNDERSTORM WINDS 908
## 17 BLIZZARD 805
## 18 FOG 734
## 19 WILD/FOREST FIRE 545
## 20 DUST STORM 440
## 21 OTHER 5883
qplot(injsum.2$"Event Type", injsum.2$Injuries, geom="bar", stat="identity", xlab = "Event Type", ylab = "Injuries", main="Weather Event Types with the Most Injuries") + coord_flip()
These figures reveal that by far the most harmful weather event from a public health perspective are tornadoes. They are responsible for more than one-third of the total number of fatalities and about two-thirds of the injuries recorded. The second most dangerous event in terms of fatalities is (excessive) heat, which was responsible for almost 3000 deaths, i.e. almost 20 % of the recorded fatalities. Floods and flash floods are responsible for a further ca. 1500 deaths, i.e. almost 10 %. In terms of injuries the three major risks beside tornadoes are thunderstorm wind, (flash) floods and (excessive) heat, all of which accounted for between 8000 and 9000 deaths each.
Two economic consequences can be distinguished based on the content of the NOAA Storm database: property damage and crop damage. Note that the figures have not been corrected for inflation, so the amounts provided in the database do not make much sense directly. Note also that looking at the damage figures for earlier events it appears that these figures are estimates added later based on the type of the event, since the numbers for the events are very similar (almost all are 2.5 * some power of 10), and some of them seem unrealistic (e.g. some events are specified to have caused a property damage of $30). Disregarding these problems in the data set, which we are not in a position to correct, the severe weather events causing the top 20 amount of property damage in total are the following according to the NOAA database:
pdamsum <- aggregate(storm$pdam, by=list(storm$EVTYPE), sum)
pdamsum.2 <- pdamsum[order(pdamsum$x,decreasing=TRUE),]
othersum <- sum(pdamsum.2[21:nrow(pdamsum.2),2])
pdamsum.2 <- pdamsum.2[1:20,]
pdamsum.2[21,1] <- "OTHER"
pdamsum.2[21,2] <- othersum
row.names(pdamsum.2) <- NULL
names(pdamsum.2) <- c("Event Type", "Property Damage (Bn US$)")
pdamsum.2[2] <- pdamsum.2[2] / 1000000000
pdamsum.2
## Event Type Property Damage (Bn US$)
## 1 HURRICANE/TYPHOON 69.306
## 2 TORNADO 56.937
## 3 STORM SURGE 43.324
## 4 FLOOD 29.773
## 5 FLASH FLOOD 16.141
## 6 HAIL 15.733
## 7 HURRICANE 11.868
## 8 TROPICAL STORM 7.704
## 9 WINTER STORM 6.688
## 10 HIGH WIND 5.270
## 11 RIVER FLOOD 5.119
## 12 WILDFIRE 4.765
## 13 STORM SURGE/TIDE 4.641
## 14 TSTM WIND 4.485
## 15 ICE STORM 3.945
## 16 THUNDERSTORM WIND 3.483
## 17 HURRICANE OPAL 3.173
## 18 WILD/FOREST FIRE 3.002
## 19 HEAVY RAIN/SEVERE WEATHER 2.500
## 20 THUNDERSTORM WINDS 1.742
## 21 OTHER 12.842
During the period covered by the database, hurricanes and typhoons caused damage in excess of an estimated 80 billion dollars. If we add the cost of storm surges, which are also typically connected to hurricanes, the total costs exceed 120 billion dollars. The second most costly events were tornadoes at about 60 billion. The third most costly were floods including flash and river floods, costing a total of over 50 billion.
The events causing the top 20 amount in crop damage are the following:
cdamsum <- aggregate(storm$cdam, by=list(storm$EVTYPE), sum)
cdamsum.2 <- cdamsum[order(cdamsum$x,decreasing=TRUE),]
othersum <- sum(cdamsum.2[21:nrow(cdamsum.2),2])
cdamsum.2 <- cdamsum.2[1:20,]
cdamsum.2[21,1] <- "OTHER"
cdamsum.2[21,2] <- othersum
row.names(cdamsum.2) <- NULL
names(cdamsum.2) <- c("Event Type", "Crop Damage (Bn US$)")
cdamsum.2[2] <- cdamsum.2[2] / 1000000000
cdamsum.2
## Event Type Crop Damage (Bn US$)
## 1 DROUGHT 13.9726
## 2 FLOOD 5.6620
## 3 RIVER FLOOD 5.0295
## 4 ICE STORM 5.0221
## 5 HAIL 3.0260
## 6 HURRICANE 2.7419
## 7 HURRICANE/TYPHOON 2.6079
## 8 FLASH FLOOD 1.4213
## 9 EXTREME COLD 1.2930
## 10 FROST/FREEZE 1.0941
## 11 HEAVY RAIN 0.7334
## 12 TROPICAL STORM 0.6783
## 13 HIGH WIND 0.6386
## 14 TSTM WIND 0.5540
## 15 EXCESSIVE HEAT 0.4924
## 16 FREEZE 0.4462
## 17 TORNADO 0.4151
## 18 THUNDERSTORM WIND 0.4148
## 19 HEAT 0.4015
## 20 WILDFIRE 0.2955
## 21 OTHER 2.1644
Clearly the event most dangerous to crops is drought, which cost about 14 billion. Floods (including flash and river floods) add up to a similar amount, about 12 billion. The costs of ice storms also exceeded 5 billion dollars, as do the costs of hurricanes and typhoons. Compared to the high amount of property damage they cause, tornadoes are relatively harmless to crops, causing less than half a billion of damage in total.
The events with the highest total economic cost were:
tdamsum <- aggregate(storm$tdam, by=list(storm$EVTYPE), sum)
tdamsum.2 <- tdamsum[order(tdamsum$x,decreasing=TRUE),]
othersum <- sum(tdamsum.2[21:nrow(tdamsum.2),2])
tdamsum.2 <- tdamsum.2[1:20,]
tdamsum.2[21,1] <- "OTHER"
tdamsum.2[21,2] <- othersum
row.names(tdamsum.2) <- NULL
names(tdamsum.2) <- c("Event Type", "Total Damage (Bn US$)")
tdamsum.2[2] <- tdamsum.2[2] / 1000000000
tdamsum.2
## Event Type Total Damage (Bn US$)
## 1 HURRICANE/TYPHOON 71.914
## 2 TORNADO 57.353
## 3 STORM SURGE 43.324
## 4 FLOOD 35.435
## 5 HAIL 18.759
## 6 FLASH FLOOD 17.563
## 7 DROUGHT 15.019
## 8 HURRICANE 14.610
## 9 RIVER FLOOD 10.148
## 10 ICE STORM 8.967
## 11 TROPICAL STORM 8.382
## 12 WINTER STORM 6.715
## 13 HIGH WIND 5.909
## 14 WILDFIRE 5.061
## 15 TSTM WIND 5.039
## 16 STORM SURGE/TIDE 4.642
## 17 THUNDERSTORM WIND 3.898
## 18 HURRICANE OPAL 3.192
## 19 WILD/FOREST FIRE 3.109
## 20 HEAVY RAIN/SEVERE WEATHER 2.500
## 21 OTHER 20.010
qplot(tdamsum.2$"Event Type", tdamsum.2$"Total Damage (Bn US$)", geom="bar", stat="identity", xlab = "Event Type", ylab = "Total Damage in Bn US$", main="Weather Event Types with the Highest Economic Costs") + coord_flip()