Guest Post by Willis Eschenbach

A while back in the US there was an ad for a hamburger chain. It featured an old lady who bought a competitor’s hamburger with a great big hamburger bun. But when she opened it up she asked …

I got to thinking about this in the context of whether there is any real danger in a degree or two of average temperature rise, or whether it’s a big bun with no beef. In my previous post, “Lies, Damned Lies, Statistics … and Graphs”, I closed by saying:

My conclusion? Move along, folks, nothing to see here …

A commenter took exception to this, saying

When talking about global average temperatures, tenths of a degree really do matter.

Now, if tenths of a degree changes over a century “matter” for the globe, they certainly must matter for parts of the globe.

So here’s your pop quiz for the day: Which US State warmed the most, which cooled the most, and by how much?

To answer this, I used the USHCN State Temperature Database. Here are my findings:

Figure 1. Temperature trends by state, USHCN data. Seven states cooled, and forty-one warmed.

The state that warmed the most was North Dakota (top center), which warmed 1.4°C per century. The state that cooled the most was Alabama (middle of three dark blue states, lower right). It cooled by 0.3°C/century.

To compare with my previous post, here’s a similar graph, of the decadal changes in North Dakota by month.

Figure 2. North Dakota decadal average temperatures by month, 1900-2009. Red line is the average for the decade 2000-2009. Photo is an old North Dakota farmhouse.

As with the US, for much of the year there is little change, and the warming is in November to February. Note that unlike the US, during that four months, the temperature of North Dakota is below freezing (32°F) …

Now, if tenths of a degree “matter”, if they are as important as the commenter claimed, we should have seen some problems in North Dakota. After all, it has warmed by 1.6°C since 1895. That’s almost three times the global average warming.

But somehow, I must have missed all of the headlines about the temperature calamities that have befallen the poor residents of the benighted state of North Dakota. I haven’t seen stories about them being “climate refugees”. I didn’t catch the newspaper articles about how it has been so hard on the farmers and the frogs. I am unaware of folks moving in droves to Alabama, which has cooled by -0.4° since 1895, and thus should be the natural refuge of those fleeing the thermal holocaust striking North Dakota.

In fact, I don’t remember seeing anything that would support the commenter’s claims that tenths of a degree are so important. North Dakota has warmed near the low end of the range forecast by the IPCC for the coming century, and there have been no problems at all that I can find. So I have to say, as I said before,

My conclusion? Move along, folks, nothing to see here … where’s the beef?

APPENDIX: R Code for the US Map

(I think this is turnkey. Sometimes WordPress puts in extra line breaks. If so, it is also available as a Word document here.)

The code requires that you download the USHCN Temperature Data cited above and save it as a “Comma Separated Values” (CSV) file. I downloaded it, opened it in Excel. I split it using “Text to Columns …” into the following columns, as detailed in the USHCN ReadMe file:

FILE FORMAT: STATE-CODE 1-3 STATE-CODE as indicated in State Code Table above. Range of values is 001-110. DIVISION-NUMBER 4 DIVISION NUMBER. Value is 0 which indicates an area-averaged element. ELEMENT-CODE 5-6 02 = Temperature (adjusted for time of observation bias) YEAR 7-10 This is the year of record. Range is 1895 to current year processed. JAN-VALUE 11-17 Monthly Temperature format: Range of values -50.00 to 140.00 degrees Fahrenheit. Decimals retain a position in the 7-character field. Missing values in the latest year are indicated by -99.90. FEB-VALUE 18-24 MAR-VALUE 25-31 APR-VALUE 32-38 MAY-VALUE 39-45 JUNE-VALUE 46-52 JULY-VALUE 53-59 AUG-VALUE 60-66 SEPT-VALUE 67-73 OCT-VALUE 74-80 NOV-VALUE 81-87 DEC-VALUE 88-94

If that is too complex, the CSV file is here.

Here’s the R code:

# The code requires that you download

# the USHCN Temperature Data

# and save it as a "Comma Separated Values" (CSV) file.

# I downloaded it, opened it in Excel, and used

# "Save As ..." to save

# it as "USHCN temp.csv"

#Libraries needed

library("mapdata")

library("mapproj")

library("maps")

# Functions

regm =function(x) {lm(x~c(1:length(x)))[[1]][[2]]}

#Read in data

tempmat=read.csv('USHCN temp.csv')

# Replace no data code -99.9 with NA

tempmat[tempmat==-99.9]=NA

# split off actual temps

temps=tempmat[,5:16]

# calculate row averages

tempavg=apply(temps,1,FUN=mean)

# calculate trends in °C by state

temptrends=round(tapply(tempavg,as.factor(tempmat[,1]),regm)*100*5/9,2)

# split off states from regional and national

statetrends=temptrends[1:48]

#calculate ranges for colors

statemax=max(statetrends)

statemin=min(statetrends)

statefract=(statetrends-statemin)/staterange

#set color ramp

myramp=colorRamp(c("blue","white","yellow","orange","darkorange","red"))

# assign state colors

mycol=myramp(statefract)

# names of the states (north michigan is missing for ease of programming)

myregions=c("alabama", "arizona", "arkansas", "california", "colorado", "connecticut", "delaware",

"florida", "georgia", "idaho", "illinois", "indiana", "iowa", "kansas", "kentucky", "louisiana", "maine",

"maryland", "massachusetts:main", "michigan:south", "minnesota", "mississippi", "missouri", "montana", "nebraska",

"nevada", "new hampshire", "new jersey", "new mexico", "new york:main", "north carolina:main", "north dakota",

"ohio", "oklahoma", "oregon", "pennsylvania", "rhode island", "south carolina", "south dakota", "tennessee", "texas",

"utah", "vermont", "virginia:main", "washington:main", "west virginia", "wisconsin", "wyoming")

# draw map

par(mar=c(6.01,2.01,4.01,2.01))

return=map('state',regions=myregions, exact=T,projection='mercator',fill=T,

mar=c(5.01,8.01,4.01,2.01),col=rgb(mycol,maxColorValue=255),ylim=c(10,60))

# set up legend boxes

xlref=-.48

yb=.37

ht=.05

wd=.08

textoff=.025

# assign legend labels

mylabels=round(seq(from=statemin,by=staterange/12,length.out=13),2)

#draw legend

myindex=0

for (i in seq(from=xlref,by=wd,length.out=12)){

xl=i

xr=xl+wd

yt=yb+ht

rectcolor=myramp(myindex/11)

rect(xl,yb,xr,yt,col=rgb(rectcolor,maxColorValue=255))

text(xl,yb-textoff,mylabels[myindex+1],cex=.65)

myindex=myindex+1

}

text(xl+wd,yb-textoff,mylabels[myindex+1],cex=.65)

# add annotations

text(0,1.08,"US Temperature Trends (°C/century)")

text(0,1.03,"USHCN Dataset, 1895-2009",cex=.8)

Share this: Print

Email

Twitter

Facebook

Pinterest

LinkedIn

Reddit



Like this: Like Loading...