On 6 May, Anthony Watts
posted at WUWT the following plot, which said it represented the effect of USHCN adjustments over the years. WUWT said:
"Yet as this simple comparison between raw and adjusted USHCN data makes clear…

…adjustments to the temperature record are increasing – dramatically. The present is getting warmer, the past is getting cooler, and it has nothing to do with real temperature data – only adjustments to temperature data. The climate reality our government is living in is little more than a self-serving construct."
Dramatically!
The text gave no source, but linked to
this USHCN document, which had no such graph. However, it did say you could click for the source, and that led you to
this post from Steven Goddard's site.
The title looks rather official, but he did not give the source. But you can see from comments below that he made it himself. And he doesn't give much detail.
He did in a
comment link to two tar files of data, on his site. So I downloaded them. They are standard USHCN files of station monthly averages, raw and initial.
I was surprised at the "dramatic" change, because USHCN had published a fairly well known ver 1 plot:
with much more modest changes, and since it's mostly TOBS, such a different version seemed unlikely.
So I did download the data, and did my own calc. I'll show the R code below the jump. But here is the plot:
Update. Zeke points out in a comment below that the files Steven Goddard supplied were in °C, not °F. Since SG had quoted his results in °F, I assumed that was the form of the data - there was no other indication. I've fixed the plot, sticking with °F.
Update,
A commenter, Peter O'Neill, who checked my code, noted perceptively that I had made a mistake on data reading. I allowed four places for a monthly temp, which is OK between -9 and 99, but for -10 or less loses the sign. My mistake was actually in thinking the data was in deg F, so -10 would be unlikely for a CONUS month average, tho apparently not impossible.
So I've fixed it as he suggested. Mainly, the result is a lot smoother. The format error only hurt badly when final and raw were on opposite sides of -10, which is rare and makes a jumpy result.
I now get a small spike in 2014, as Peter did. It is about 0.1°C. I have figured the reason. The average final-raw has a strong seasonal variation. here are the monthly averages for 2013 in hundredths °C:
12, 17, 14, 1, -7, -9, -10, -14, -14, -8, -2, 3
So the first four months of 2014 gets the positive part.
Pretty different. Note the y axis. I just subtracted raw from initial, for all months where both were available, and did an unweighted average over months and stations. That is what Steven Goddard said he did. Personally, I would at least have done by state, and then perhaps with area weighting, But it probably wouldn't make much difference.
Update: Diagnosis
I suggested
here that the problem is that SG subtracted the annual average of the final readings from the average of the raw. Zeke, who has the code, has
confirmed. But while the final data generally has no missing data, because of FILNET, the raw data has many missing station/months. So the difference of averages of two different populations is formed, and the data, being absolute temperatures, is very heterogeneous. Spatially, but even worse, seasonally.
The spike is clear evidence of the problem. SG got one
here, too, in Illinois. It is inevitable.
In 2014, the final set has 1218 values in each of the first four months. Every station. But for raw, there were, respectively, 891,883,883, and 645 for April. A big preponderance of winter month readings in the average. So the raw is cooler than final for that reason, not adjustments.
Update: Some commenters have kindly contributed their own plots. I've appended these at the end.
Here is my R code. The contents of the tar files are in my directories "raw" and "final".
# Code for averaging USHCN adjustment differences
#Written by Nick Stokes, 9 May 2014
# See post at https://moyhu.blogspot.com.au/
# gather and sort data
f=list.files("raw")
x=c(".raw.tavg",".FLs.52i.tavg")
n=substr(f,1,11) # station code
iy=1890:2014
# w will be a big matrix of raw and adjusted, in the original units of .01F
# from 1890-2014
# (yr+12 months,125 years,1218 stations,raw+final)
w=array(NA,c(13,125,1218,2))
for(i in 1:length(n)){
s=n[i]; # looping over stations
for(j in 1:2){ # raw, then final
y=x[j]; # read the file
b=readLines(paste(c("raw/","final/")[j],s,y,sep=""))
b=gsub("-9999"," NA ",b)
h=as.numeric(substr(b,13,16)) # Read year
# Read months
for(k in 0:11*9+19)h=rbind(h,as.numeric(substr(b,k,k+3)))
h=h[,h[1,]>1889] # delete pre 1890
kk=match(h[1,],iy) # line up
w[,kk,i,j]=h # add
}
if(i%%100==0)print(Sys.time()) # it takes about 80 sec
}
x=w[2:13,,,2]-w[2:13,,,1] # final-raw (omit years)
x1=colMeans(x,dims=1,na.rm=T) # mean over months
x2=rowMeans(x1,na.rm=T) # mean over stations
x2=round(x2/100,3) # round and set to deg F
# x2 are the annual averages Now do plot
graphics.off()
png("ushcn.png",width=800)
plot(1890:2014,x2,pch=19,xlab="Year", ylab="Final-raw in deg F",main="USHCN V2.5 adjustment discrepancy",col="blue")
lines(1890:2014,x2,col="blue")
text(1920,0,"Graph prepared by Nick Stokes, 9 May 2014")
text(1920,-0.05,"post at https://moyhu.blogspot.com.au/ 9 May")
dev.off()
Plots in comments:
Zeke shows this plot of raw and adjusted, and the difference
Here is Zeke's current version of the difference plot. He's using some gridding, which I think is better, but doesn't make a lot of difference (a bit smoother).
Bruce Schuck (sunshinehours) linked max/min plots as well: