Phase Shift in Spencer’s Data

It was shown here that the phase shift between total solar irradiance and global temperature is exactly one quarter of the solar cycle, 90 degrees, or 2.75 years. This is a prediction of the accumulation theory described here and here that shows how solar variation can account for paleo and recent temperature change.

Phase shifts in the short-wave (SW) side of the climate system are erroneously attributed to ‘thermal inertia’ of the ocean and earth mass, and called ‘lags’, or regarded as non-existent. If thermal inertia was responsible, then a larger mass would show a larger lag. In fact, an exactly 90 degrees shift emerges directly from the basic energy balance model, C.dT/dt=F, as I will show later.

A 90 degree shift is also present on the long-wave (LW) at the annual time-scale using Spencer’s dataset. This cannot be a coincidence, and gives an important insight into the dynamics of the climate system.

First off is understanding how shifts arise.

The figure above shows an impulse (black) based on a cosine function with a 2*pi period, with its scaled derivative (green) and integral (red). Time is on the x axis.

The impulse in black represents any sudden change in forcing in the atmosphere that ’causes’ the derivative and integral responses (as they are derived directly from the impulse).

Note two things: (1) the peak of the derivative leads the peak of the impulse, and the peak of the integral lags the impulse. (2) The lead and lag are exactly one quarter of the period (2*pi/4 or 1.57 radians) of the cosine impulse. Note (3) the integral ‘amplifies’ the impulse, the mechanism responsible for high solar sensitivity in the accumulative theory.

Cross-correlation (ccf in R) of two variables gives precise information about the phase shifts, their size and significance. Above is the cross-correlation of the derivative and integral with the impulse above, with significance as blue lines. You can read off the phase shift from the first peak location.

The data from Spencer consists of satellite measurements of the short-wave and long-wave intensities at the top of the atmosphere, both for clear sky and cloudy skies. Below is the cross-correlation of each of these variables against his global temperature HadCRUT3 column.

The peaks of correlation show a three month phase shift on the LW and SW_clr components. The LW peaks are positive and the SW peaks are negative due to the orientation of flux in the dataset.

The LW peaks (LW_tot and LW_cls) are affected by the sharp peak at zero lag, probably due to fast radiant effects (magenta line SW_clr), shown in the similar graphic of these data by P.Solar here, mentioned in this thread at CA.

The LW and SW_clr components lead the global surface temperature. There are three possible explanations:

1. Changes in cloud cover actually do drive changes in global temperature due to gamma-ray flux (GRF) or other effects, or

2. The changes in cloud cover are caused by changes in global temperature, with the derivative mechanism described above.

3. Both 1 and 2.

Spencer argues that it is impossible to distinguish between 1 and 2. Both Spencer and Lindzen both consider the lags important because correlation is greatly improved (and determines whether feedback is positive to negative). Neither seem to have mentioned the 3 month phase relationships emerging from integral/derivative system dynamics.

I can’t see how it is possible perform a valid analysis without this insight.

Here is the code.

figure0<-function() {
x=2*pi*seq(-1,1,by=0.01);x2=2*pi*seq(-0.5,0.5,by=0.01)
x1=c(rep(0,50),cos(x2),rep(0,50))
png("impulse.png");
dx=as.numeric(scale(c(0,diff(x1))));sx=as.numeric(scale(cumsum(x1)))
plot(x,x1,ylab="Magnitude",ylim=c(-2,2),lwd=5,xlab="Radians",main="Derivative and Integral of an Impulse",type="l")
lines(c(-2*pi/4,-2*pi/4),c(-2,2),col="gray",lty=2)
lines(c(0,0),c(-2,2),col="gray",lty=2)
lines(c(2*pi/4,2*pi/4),c(-2,2),col="gray",lty=2)
lines(x,sx,col=2,lwd=3)
lines(x,dx,col=3,lwd=3)
text(c(-2*pi/4,0),c(1.5,1.5,1.5),c("f'(t)","f(t)=cos(t)"))
text(2*pi/4,1.5,expression(paste("\u222B",f(t))))
dev.off()
browser()
png("cross.png");
cxd=ccf(dx,x1,lag.max=100,plot=F)
cxs=ccf(sx,x1,lag.max=100,plot=F,new=T)
w=2*pi*cxd$lag/(100)
plot(w,cxs$acf,col=2,type="h",xlab="Radians",ylab="Correlation")
lines(w,cxd$acf,col=3,type="h")
lines(c(-100,100),c(0.15,0.15),lty=2,col=4)
lines(c(-100,100),c(-0.15,-0.15),lty=2,col=4)
lines(c(-100,100),c(0,0))
dev.off()
}

figure3<-function() {
par(mfcol=c(1,1),mar=c(4,4,3,3))
figure3.1(spencer[,7],spencer[,1:6],xlim=1)
#par(mar=c(4,4,0,3))
#figure3.1(dess[,5],dess[,1:4],xlim=1)
}

figure3.1<-function(X,data,lag=10,xlim=10) {
png("impulse.png");
plot(c(-100,100),c(0,0),xlim=c(-xlim,xlim),ylim=c(-0.5,0.5),type="l",xlab="Years",ylab="Correlation",main="Cross-correlation of SW and LW with Global Temperature")
lines(c(-100,100),c(0.18,0.18),lty=2,col=4)
lines(c(-100,100),c(-0.18,-0.18),lty=2,col=4)
lines(c(0.25,0.25),c(-1,1),lty=3)
lines(c(-0.25,-0.25),c(-1,1),lty=3)
send=tsp(data)
labels=colnames(data)
t=window(X,start=send[1],end=send[2])
for (i in 1:dim(data)[2]) {
cxd=ccf(data[,i],t,lag.max=lag,plot=F)
w=cxd$lag
lines(w,cxd$acf,col=i+1,lwd=2)
text(0.9,cxd$acf[length(w)],labels[i],col=1,cex=0.5)
}
dev.off()
}