##TEMPERATURE CORRELATION #this calculates statlist with 6 items in list #Mann PRoxy Data and Info method="online" if (method=="offline") {load("d:/climate/data/mann08/mann.tab") load("d:/climate/data/mann08/mannorig.tab") load("d:/climate/data/mann08/idorig.tab") names(mannorig)=idorig$idorig load("d:/climate/data/mann08/details.tab") source("d:/climate/scripts/mann.2008/instrumental.txt")} else { url="http://www.climateaudit.org/data/mann.2008" download.file(file.path(url,"mann.tab"),"temp.dat",mode="wb");load("temp.dat") download.file(file.path(url,"mannorig.tab"),"temp.dat",mode="wb");load("temp.dat") download.file(file.path(url,"details.tab"),"temp.dat",mode="wb");load("temp.dat") download.file(file.path(url,"idorig.tab"),"temp.dat",mode="wb");load("temp.dat") names(mannorig)=idorig$idorig source("http://www.climateaudit.org/scripts/mann.2008/instrumental.txt")} #notes: details.tab here incorporates lat-longs from rtable. ##FUNCTIONS g=function(X) ts(X[,2],start=X[1,1]) use0="pairwise.complete.obs" absmax= function(x) if(sum(!is.na(x))>0) unique(x[(abs(x)==max(abs(x),na.rm=T))&!is.na(abs(x))])[1] else NA library(gplots) source("http://www.climateaudit.org/scripts/utilities.txt") ################# ##CALCULATE CORRELATIONS FOR VARIETY OF CASES #gridcell and next-nearest for both infilled and original; si and rtable statlist=rep(list(NA),6) names(statlist)[1:6]=c("grid_infill","grid_orig","next_infill","next_orig","si","rtable") #1. GRIDCELL AND INFILLED stat=array(NA,dim=c(1209,6)) for(k in 1:1209) { test=match(info$jones[!is.na(info$mann)],details$jones[k]);temp=!is.na(test) if(sum(temp) ==1){ index=info$mannid[!is.na(info$mann)][temp];index x=ts.union(inst[,paste(index)],g(mann[[k]]) ) temp1=(time(x)>=1850)&(time(x)<=1995) temp2=(time(x)>=1850)&(time(x)<=1949) temp3=(time(x)>=1896)&(time(x)<=1995) stat[k,1:3]=round(c( cor(x[temp1,],use=use0)[1,2] ,cor(x[temp2,],use=use0)[1,2] ,cor(x[temp3,],use=use0)[1,2] ),3) }} statlist[["grid_infill"]]=stat[,1:3] #2. GRIDCELL AND ORIGINAL for(k in 1:1209) { test=match(info$jones[!is.na(info$mann)],details$jones[k]);temp=!is.na(test) if(sum(temp) ==1){ index=info$mannid[!is.na(info$mann)][temp];index x=ts.union(inst[,paste(index)],g(mannorig[[details$old[k]]]) ) temp1=(time(x)>=1850)&(time(x)<=1995) temp2=(time(x)>=1850)&(time(x)<=1949) temp3=(time(x)>=1896)&(time(x)<=1995) stat[k,4:6]=round(c( cor(x[temp1,],use=use0)[1,2] ,cor(x[temp2,],use=use0)[1,2] ,cor(x[temp3,],use=use0)[1,2] ),3) }} statlist[["grid_orig"]]=stat[,4:6] #3. NEXTNEAREST AND INFILLED statnext=array(NA,dim=c(1209,6) ) for(k in 1:387) { #test=match(info$jones[!is.na(info$mann)],details$jones[k]+details$nextnearest[k]);temp=!is.na(test) test=match(info$jones[!is.na(info$mann)],c(details$next1[k],details$next2[k]) );temp=!is.na(test) if(sum(temp) > 1){ index=info$mannid[!is.na(info$mann)][temp];index x=ts.union(inst[,paste(index)],g(mann[[k]]) ) temp1=(time(x)>=1850)&(time(x)<=1995) temp2=(time(x)>=1850)&(time(x)<=1949) temp3=(time(x)>=1896)&(time(x)<=1995) statnext[k,1:6]=round(c( cor(x[temp1,],use=use0)[1:2,3] ,cor(x[temp2,],use=use0)[1:2,3] ,cor(x[temp3,],use=use0)[1:2,3] ),3) }} statlist[["next_infill"]]=statnext[,1:3] #4. NEXTNEAREST AND ORIGINAL for(k in 1:1209) { test=match(info$jones[!is.na(info$mann)],c(details$next1[k],details$next2[k]) );temp=!is.na(test) if(sum(temp) >11){ index=info$mannid[!is.na(info$mann)][temp];index x=ts.union(inst[,paste(index)],g(mannorig[[details$old[k]]]) ) temp1=(time(x)>=1850)&(time(x)<=1995) temp2=(time(x)>=1850)&(time(x)<=1949) temp3=(time(x)>=1896)&(time(x)<=1995) statnext[k,1:6]=round(c( cor(x[temp1,],use=use0)[1:2,3] ,cor(x[temp2,],use=use0)[1:2,3] ,cor(x[temp3,],use=use0)[1:2,3] ),3) }} statlist[["next_orig"]]=statnext[,4:6] #5. MANN SI statlist[["si"]]=details[,c("r1850_1995","r1896_1995","r1850_1949")] #collated from SD1 #6. MANN RTABLE statlist[["rtable"]]=details[,c("rtable.r1850_1995", "rtable.r1850_1995lf","rtable.r1896_1995","rtable.r1896_1995lf" )] #collated from rtable