Dessler (2011) reported the following:

A related point made by both LC11 and SB11 is that regressions of TOA flux or its components vs. ΔTs will not yield an accurate estimate of the climate sensitivity λ or the cloud feedback.  This conclusion, however, relies on their particular values for σ(ΔFocean) and σ(ΔRcloud).  Using a more realistic value of σ(ΔFocean)/σ(ΔRcloud) = 20, regression of TOA flux vs. ΔTs yields a slope that is within 0.4% of λ, a result confirmed in Fig.  2b of Spencer and Braswell [2008].  This also applies to the individual components of the TOA flux, meaning that regression of ΔRcloud vs. ΔTs yields an accurate estimate of the magnitude of the cloud feedback, thereby confirming the results of D10. 

Although these findings have been widely praised by the “community” and already cited by Trenberth et al 2011, exactly what’s been shown in this paragraph is far from being clear on its face, despite Trenberth’s fulminations against SB11 that “the description of their method was incomplete, making it impossible to fully reproduce their analysis.  Such reproducibility and openness should be a benchmark of any serious study.” 

I asked Dessler for the source code supporting this paragraph, which he kindly provided me, but it would be better to have a Supplementary Information which makes manual requests unnecessary. 

After parsing the code, I’ve come to the conclusion that almost nothing in the above paragraph makes any sense.  I’ve set out my understanding below and, if I’ve misunderstood anything, I’ll amend accordingly. 



Quite aside from the criticisms of LC2011 and SB2011 (which I haven’t fully parsed yet), in my opinion, there are quite compelling reasons to think that “regressions of TOA flux or its components vs. ΔTs will not yield an accurate estimate of the climate sensitivity λ or the cloud feedback”.  We’ve already discussed this in connection with Dessler (2010).  The bigger question is why anyone would think that they would. 

Dessler says that such objections rely “on their particular values for σ(ΔFocean) and σ(ΔRcloud)”.  That hardly seems to me to be the case.  The problems with the D10 regression seem pretty fundamental to me and not related to the “particular values for σ(ΔFocean) and σ(ΔRcloud)”. 

Dessler continues:

Using a more realistic value of σ(ΔFocean)/σ(ΔRcloud) = 20, regression of TOA flux vs. ΔTs yields a slope that is within 0.4% of λ

It turns out that this conclusion is based on simulations – not at all obvious from the language.  I’ve shown the relevant code below (this is in Python, which I don’t use.  The regression function looks very limited relative to R, but that’s another story.)  Dessler’s setup is modeled on his interpretation of a setup in SB11 (which I’ll get to.)  Each simulation uses a simple feedback model with known parameters followed by a regression.  However, when parsed, it seems to me that Dessler got lost, that the simulation is essentially a tautology and doesn’t show anything one way or another. 

An important point at this stage: the issues here do not involve climate science.  None of the longwinded discussions by climate scientists about whether clouds are forcing or feedback have anything to do with this part of the analysis.  This is merely statistics.  And barely even statistics.  More like arithmetic. 

modelruns=1000.  modlen=500 calcslope=[] for kk in np.arange(modelruns): dF=np.random.normal(size=(modlen+18))*20 dF=smooth.smoothListGaussian(dF,degree=9) dR=np.random.normal(size=(modlen))*1 lmd=6 c=14*12. #  heat capacity t=[0.];dtdt=[] for ii in range(modlen): dtdt1=(dF[ii]+dR[ii]-lmd*t[-1])/c t.append(t[-1]+dtdt1);dtdt.append(dtdt1) t=np.array(t);dtdt=np.array(dtdt) # t=(t[1:]+t[:-1])/2 t=t[:-1] calcslope.append(stats.linregress(t,dR-lmd*t)[0]) print 'avg.  bias = %4.2f, avg.  std.  = %4.2f' % ((-np.average(calcslope)/lmd-1)*100,(np.std(calcslope)/lmd)*100)

Dessler’s setup is constructed to match the following setup in Spencer and Braswell 2011:

For the radiative forcing N(t) we used a time series of normally-distributed monthly random numbers with box filter smoothing of 9 months to approximate the time scales of variations seen in the climate models and observations in Fig.  3.  A separate time series of random numbers without low pass filtering was used for the non-radiative forcing S(t).  This mimics what we believe to be intraseasonal oscillations in the heat flux between the ocean and atmosphere seen in the data [5, 12].  The model time step was one month, and the model simulations were carried out for 500 years of simulated time. 

Let me re-state the code in R for an individual simulation.  First, the parameters:

N=modlen=500;

paramF=20;paramR=1

lmd=6 # feedback λ

c=14*12. #  heat capacity

Next create two random series – a white noise series dR of sd 1 and a reddened noise series dF created by smoothing a white noise series of sd 20. ( For analysis purposes, it’s useful to also experiment with a white noise series by itself and an AR1 series by itself.) 

dF= rnorm(modlen+16)*paramF

dF= filter(dF, truncated.gauss.weights(21)) #smooth.smoothListGaussian(dF,degree=9)

dF=dF[!is.na(dF)]

dR= rnorm(modlen)*paramR #np.random.normal(size=(modlen))*1

N=length(dF)

Here is a rendering of the simple feedback model into an R data frame (which simplifies keeping track of leads and lags.)  In ARMA terms (or econometric terms), each step has an “innovation” which is the sum of the two noise terms.  Added to the “innovation” is a feedback term, -lmd*t[k-1] (a negative feedback).  The temperature change is obtained by multiplying the sum of the innovation by 1/c, but mathematically the only relevant thing is that it’s a constant.  The new temperature is then obtained by adding the temperature change.  Offhand, I don’t see a material difference from ARMA, but haven’t parsed this yet. 

Data=data.frame(time=0:N, dF=c(NA,dF),dR=c(NA,dR),t=c(0,rep(NA,N)),dtdt=rep(NA,N+1),lag=c(NA,0,rep(NA,N-1) ) )

Data$direct=Data$dF+Data$dR

Data$feedback=NA

Data=Data[,c(1:3,7,8,6,5,4)]

for(i in 2: (N+1)) {

Data$lag[i]=Data$t[i-1]

Data$feedback[i]=-lmd*Data$lag[i]

Data$dtdt[i]= (Data$direct[i]+Data$feedback[i])/c

Data$t[i]= Data$lag[i]+Data$dtdt[i]

}

Dessler’s regression was (in Python):

calcslope.append(stats.linregress(t,dR-lmd*t)[0])

In R, this seems to me to be the following:

fmd=lm(I(dR-lmd*t)~t-1) #

Dessler ran this 1000 times and then calculated that the average slope of the resulting regression differed negligibly from -lmd with a narrow standard deviation.  This is apparently what was meant by the assertion:

regression of TOA flux vs. ΔTs yields a slope that is within 0.4% of λ

And yes, I too got this (almost tautological) result.  Look closely at the regression.  The regressand is dR-lmd*t i.e. a white noise series dR is added to -lmd*t which is regressed against t. t, by its construction, looks like an ARMA series, but this is irrelevant to the tautology.  The regression is going to yield a coefficients that are negligibly different from -lmd (and the regressions are going to have very high r2 – median 0.81 in my simulation.) 

Trenberth et al 2011 said (presumably of this aspect) of Dessler’s results:

Moreover, correlation does not mean causation.  This is brought out by Dessler [10] who quantifies the magnitude and role of clouds and shows that cloud effects are small even if highly correlated. 

However, it seems to me that the particular “result” in this paragraph of Dessler 2011 has NOTHING to do with climate, but is merely a very elementary and (pointless) statistical tautology. 

Nor does this tautology “confirm” the results of Dessler (2010), which used a different regression.  Transposing to the present case, the D10 regression is:

fm=lm(dR~t-1,Data);

This regression has entirely different properties: it has very low r2.  This can be easily seen by thinking about what’s been done.  dR is white noise; t is a weighted sum of white noise terms.  The correlations between such things are necessarily very low. 

Nor do these observations show that Spencer’s conclusions are valid.  On the narrow point under discussion here, I agree that Dessler 2010 methodology cannot be used to validly estimate feedback but the reasons set out here do not necessarily coincide with those advocated in Spencer and Braswell 2011 (which I’m still parsing.)