The EPA is interested in quantifying what future particulate matter (PM) concentrations might be in the future. In the U.S. intermountain west both extreme PM events and background PM concentrations are closely linked to wildfire activity. Once you start digging through fire science or air quality literature you don’t get far before someone mentions the expectation that wildfire occurrence and area will increase with climate change. This of course makes sense, as the West warms and dries it is perfectly reasonable to expect the number of wildfires to increase (and this has been shown in many studies). However, humans have a much more direct and complicated relationship with fire than warming the planet by pumping green house gasses into the atmosphere. Other major ways we interact with fires include: 1) Fighting them. Depending on where a fire is located we don’t let them burn without a fight. 2) Land management including fuel reduction, logging activity, and controlled burns. 3) We start them! There are of course other ways we interact with fire and the earth system but I want to focus on the third interaction I just mentioned. Humans start a lot of fires. How many fires? I decided to take a look at the data to get an idea of what the human contribution is.
The data used in this post is from the USGS. It includes fires documented by the BIA, BLM, BOR, USFS, FWS, and NPS. Data and metadata can be found here.
This plot clearly shows that humans do our fair share or starting fires. Smokey the Bear must be devastated. This figure includes all 50 states in the U.S. If we subset the data to include only western states it seems likely that natural starts could start to close the gap with humans.
We have seen that humans start a lot of fires, more than nature does. How many acres of burned land are we responsible for?
I was hoping humans weren’t going to be the leader in this category as well! These two figures combined seems to suggest that humans start a lot of fires but the fires we do start are generally small. It is also possible that a small number of fires for each start type account for a large fraction of total burned area.
Lets transition to looking at only western states. The states included in the following plots are Washington, Idaho, Nevada, Utah, California,
Montana, Oregon, Colorado, and Wyoming. First lets reproduce the previous two plots limited to data from these states.
In the western states there are more naturally caused fires than human caused fires. This makes sense now that we are in the more arid, mountainous part of the country, where there are far fewer people than the more densely populated eastern States. The area burned by natural fires is about double that of human caused fires. What do the burn area totals look like if we look at the data on an annual basis?
Lets look at the exact same data but in cumulative form.
The first plot shows that for any given year the area burned from naturally started fires exceeds human started fires. It also shows that area burned from both types of fires have good years together and bad years together. This does suggest that environmental factors control inter-annual variability. The data do not show a single year where there were a whole bunch of human caused fires but no natural fires. I believe this figure highlights the fact that regardless of how they are started, certain years (dry, hot, windy) will have more burn area than others.
On the other hand, the cumulative area burned figure gives a sense of how preventable burn area is stacking up over time. This burn area should be preventable, even under climate change.
The take home message is humans are responsible for A LOT of burning. When worrying about future PM emissions from fire it seems inappropriate to focus purely on the impact of climate change. Fires started by humans should be considered low hanging fruit in any effort to reduce burn area and the (somewhat) proportional emissions that follow.
R code and data used to make plots provided below
# load libraries library(ggplot2) library(sp) library(rgdal) library(rgeos) # Data : http://wildfire.cr.usgs.gov/firehistory/data/fh_all.zip # metadata : http://wildfire.cr.usgs.gov/firehistory/data.html # Download the data localDir <- getwd() url <- 'http://wildfire.cr.usgs.gov/firehistory/data/fh_all.zip' file <- paste(localDir, basename(url),sep='/') if (!file.exists(file)) { download.file(url, file) unzip(file,exdir=localDir) } # create a layer name for the shapefiles (text before file extension) layerName <- "firehistory_1980_2013_allagencies" localDir <- "firehistory_1980_2013_allagencies" # read data into a SpatialPolygonsDataFrame object dataProjected <- readOGR(dsn=localDir, layer=layerName) # Could use names(data_projected@data) or just: names(dataProjected) # Ok lets find out what burn area can be attributed to each of the start types # first lets show the three catigories total count cause <- dataProjected$CAUSE naturalMask <- cause == "Natural" humanMask <- cause == "Human" NAMask <- is.na(cause) nNatural <- sum(naturalMask, na.rm=TRUE) nHuman <- sum(humanMask, na.rm=TRUE) nNA <- sum(NAMask) png(filename="fireStart.png") par(las=1) height = c(nHuman,nNatural,nNA) barplot(height, names.arg=c("Human","Natural","unkown"), col="blue") title("Cause of wild fires in U.S. 1980 - 2013") dev.off() burnArea <- dataProjected$TOTALACRES humanArea <- sum(burnArea[humanMask], na.rm=TRUE) naturalArea <- sum(burnArea[naturalMask], na.rm=TRUE) NAArea <- sum(burnArea[NAMask], na.rm=TRUE) png(filename="burnAreaAttributed.png") par(las=1) height = c(humanArea,naturalArea,NAArea) barplot(height, names.arg=c("Human","Natural","unkown"), col="blue") title("Total acres burned by cause of wild fires, U.S. 1980 - 2013") dev.off() # TODO: Show these catigories as total by year over time # The next natural step is to do the same thing only for a subset of states we # are interested in # states of interest, we want to create a mask where dataProjected is TRUE # for any of these states states <- dataProjected$STATE statesOfInterest <- c("Washington","Idaho","Nevada","Utah","California", "Montana","Oregon","Colorado","Wyoming") stateMask <- rep(FALSE,length(states)) for (state in statesOfInterest){ stateMask[state == states] <- TRUE } dataProjectedSubset <- dataProjected[stateMask, ] # Ok lets find out what burn area can be attributed to each of the start types # first lets show the three catigories total count cause <- dataProjectedSubset$CAUSE naturalMask <- cause == "Natural" humanMask <- cause == "Human" NAMask <- is.na(cause) nNatural <- sum(naturalMask, na.rm=TRUE) nHuman <- sum(humanMask, na.rm=TRUE) nNA <- sum(NAMask) png(filename="fireStartWest.png") par(las=1) height = c(nHuman,nNatural,nNA) barplot(height, names.arg=c("Human","Natural","unkown"), col="blue") title("Cause of wild fires in U.S. western states 1980 - 2013") dev.off() burnArea <- dataProjectedSubset$TOTALACRES humanArea <- sum(burnArea[humanMask], na.rm=TRUE) naturalArea <- sum(burnArea[naturalMask], na.rm=TRUE) NAArea <- sum(burnArea[NAMask], na.rm=TRUE) png(filename="burnAreaAttributedWest.png") par(las=1) height = c(humanArea,naturalArea,NAArea) barplot(height, names.arg=c("Human","Natural","unkown"), col="blue") title("Total acres burned by cause of wild fires") title(line=0.5, "western states 1980 - 2013") dev.off() # loop through years to see how area burned can be attributed over time endDate <- as.POSIXlt(dataProjectedSubset$OUTDATED, format="%Y/%m/%d") naturalAreaBurned <- rep(NA, length(1980:2013)) humanAreaBurned <- rep(NA, length(1980:2013)) NAAreaBurned <- rep(NA, length(1980:2013)) # Loop through and count total area burned for each years <- 1980:2013 for (i in 1:length(years)){ year <- years[i] yearMask <- (endDate$year+1900) == year # count the years total burn by start type naturalAreaBurned[i] <- sum(burnArea[naturalMask & yearMask], na.rm=TRUE) humanAreaBurned[i] <- sum(burnArea[humanMask & yearMask], na.rm=TRUE) NAAreaBurned[i] <- sum(burnArea[NAMask & yearMask], na.rm=TRUE) } png(filename="acreasBurnedTimeSeries.png") par(mgp= c(3, 1, 0)) plot(years, naturalAreaBurned, col="black", pch=19, ylab="acres", xlab="Year") lines(years, naturalAreaBurned, col="black") points(years, humanAreaBurned, col="red", pch=19) lines(years, humanAreaBurned, col="red") points(years, NAAreaBurned, col="magenta") legendText <- c("Natural", "Human", "unknown") legend("topleft", legend=legendText, col=c("black","red", "magenta"), pch=c(19,19,1), cex=1.8 ) title("Acres burned in the western states by fire cause") dev.off() humanAreaCumulative <- cumsum(humanAreaBurned) naturalAreaCumulative <- cumsum(naturalAreaBurned) NAAreaAreaCumulative <- cumsum(NAAreaBurned) png(filename="acreasBurnedCumulative.png") par(mgp= c(3, 1, 0)) plot(years, naturalAreaCumulative, col="black", pch=19, ylab="acres", xlab="Year") lines(years, naturalAreaCumulative, col="black") points(years, humanAreaCumulative, col="red", pch=19) lines(years, humanAreaCumulative, col="red") points(years, NAAreaAreaCumulative, col="magenta") legendText <- c("Natural", "Human", "unknown") legend("topleft", legend=legendText, col=c("black","red", "magenta"), pch=c(19,19,1), cex=1.8 ) title("Cumulative acres burned in the western states by fire cause") dev.off()
Wow Steven this is such a cool post. I will likely be tweeting this five times a day for six weeks.