Mann's co2detrend.f Calculation

If someone felt that it was necessary to detrend the bristlecone pine-based PC1 of Mann’s AD1000 network for CO2 fertilization, it’s doubtful that the initial instinct would be to coerce the data to a network of northern Canadian-Alaskan tree ring chronologies where the possibility of regional differences must surely be allowed for.

Inspection of Mann’s former FTP archive at the University of Virginia (which I fortunately archived before it was deleted) contains an interesting program entitled co2detrend.f (Mann’s main programs were not on the archive, but some programs were inadvertently left in the archive, including the program that calculated the tree ring network principal components – which was how we discovered Mann’s erroneous PC method.)

The program (which I’ve posted here) include the following interesting comments (in which Mann reports a correlation of 0.9 between the AD1000 PC1 and CO2:

c regress out co2-correlated trend (r=0.9 w/ co2)
c after 1800 from pc1 of ITRDB data

c remove co2-correlated portion (r=0.9) of 1800-1980
corr= 0.9

The program itself is in Fortran, which is highly verbose for simple operations like calculating a mean or standard deviation, that’s for sure. Below I’ve shown what is more or less a transliteration of his program into R so that you can see what the calculation does in simpler terms.

He first reads in the AD1000 Mannomatic PC1 and CO2 levels (with the 1610-1995 mean subtracted). I’ve uploaded both the source files to CA so that the commands below are fully operational (up to the need to take care with what WordPress does to quotation marks.) (The short R-script is here in ASCII form.)

First read in the data and make them into time series:

ser26= read.table(“”) # mannomatic pc1 1000-1980
ser12= read.table(“”) # CO2 values less 1610-1995 average
ser12=ts(ser12[,2],start=1610) #this is the starting date based on other info

Then standardize the two series on the period 1800-1980 (as in the Mann program). inverting the PC1:

pc1= -ser26; #invert orienation
m1=mean(pc1[(1800:1980)-999]);sd1=sd(pc1[(1800:1980)-999]); c(m1,sd1) #[1] -0.01463 0.01858
standard1= (pc1-m1)/sd1 #1000 1980

m2=mean(co2[(1800:1980)-1609]);sd2=sd(co2[(1800:1980)-1609]); c(m2,sd2) #[1] 7.219 14.059
standard2= (co2-m2)/sd2 #1610 1980

Then subtract the CO2-adjustment from the Mannomatic PC1. The code in Mann’s program is (asum1 is the mean):


I implemented this as:

newpc=pc1; corr=.9
newpc[(1610:1980)-999]=sd1*( standard1[(1610:1980)-999]- corr*standard2) + m1

For the portion before 1610, I used the average CO2 value for the period 1610-1980 in the adjustment. Then plot. Here I’ve plotted the output from the co2detrend.f program against the “fixed” PC1 (which ties in to MBH99 Figure 1), both rescaled to match the scale of MBH99 Figure 1a.



  1. A.Syme
    Posted Nov 14, 2007 at 2:22 PM | Permalink

    Quick question, how many different kinds of adjstments have been done to this data begining to end? I strikes me as a non-scientist that the data has for the most part, been adjusted to oblivian!

  2. MarkW
    Posted Nov 14, 2007 at 2:24 PM | Permalink

    reminds me of an old joke

    Why are numbers like people?

    Torture them enough, and they’ll tell you anything you want to know.

  3. henry
    Posted Nov 14, 2007 at 2:29 PM | Permalink

    Maybe it’s not a hockey stick. Maybe it’s really a sausage – nobody really knows what went in to it…

  4. Frank
    Posted Nov 14, 2007 at 10:14 PM | Permalink

    For those of us who work the policy end of this AGW mess, Mr. McIntyre is a godsend. When the whole story is finally written about “climate change”, McIntyre and McKitrick will be the superstars that Al Gore only thinks he is. Keep doing what you’re doing. We are very close to bringing accountability and science back together.

  5. fFreddy
    Posted Nov 15, 2007 at 4:29 AM | Permalink

    Re #4, Frank

    For those of us who work the policy end of this AGW mess, …
    We are very close to bringing accountability and science back together.

    Would you care to share any details ?

One Trackback

  1. [...] done has been somewhat a mystery. Two years ago Steve wrote notes about the issue (here, here, and here). It is worth reviewing those before continuing reading this [...]


Get every new post delivered to your Inbox.

Join 3,195 other followers

%d bloggers like this: