Guest Post by Willis Eschenbach
In the leaked version of the upcoming United Nations Intergovernmental Panel on Climate Change (UN IPCC) Fifth Assessment Report (AR5) Chapter 1, we find the following claims regarding volcanoes.
The forcing from stratospheric volcanic aerosols can have a large impact on the climate for some years after volcanic eruptions. Several small eruptions have caused an RF for the years 2008−2011 of −0.10 [–0.13 to –0.07] W m–2, approximately double the 1999−2002 volcanic aerosol RF.
and
The observed reduction in warming trend over the period 1998–2012 as compared to the period 1951–2012, is due in roughly equal measure to a cooling contribution from internal variability and a reduced 2 trend in radiative forcing (medium confidence). The reduced trend in radiative forcing is primarily due 3 to volcanic eruptions and the downward phase of the current solar cycle.
Now, before I discuss these claims about volcanoes, let me remind folks that regarding the climate, I’m neither a skeptic nor am I a warmist.
I am a climate heretic. I say that the current climate paradigm, that forcing determines temperature, is incorrect. I hold that changes in forcing only marginally and briefly affect the temperature. Instead, I say that a host of emergent thermostatic phenomena act
quickly to cool the planet when it is too warm, and to warm it when it is too cool.
One of the corollaries of this position is that the effects of volcanic eruptions on global climate will be very, very small. Although I’ve demonstrated this before, Anthony recently pointed me to an updated volcanic forcing database, by Sato et al. Figure 1 shows the amount of forcing from the historical volcanoes.
Figure 1. Monthly changes in radiative forcing (downwelling radiation) resulting from historical volcanic eruptions. The two large recent spikes are from El Chichon (1983) and Pinatubo (1992) eruptions. You can see the average forcing of -0.1 W/m2 from 2008-2011 mentioned by the IPCC above. These are the equilibrium forcings Fe, and not the instantaneous forcing Fi.
Note that the forcings are negative, because the eruptions inject reflective aerosols into the stratosphere. These aerosols reflect the sunlight, and the forcing is reduced. So the question is … do these fairly large known volcanic forcings actually have any effect on the global surface air temperature, and if so how much?
To answer the question, we can use linear regression to calculate the actual effect of the changes in forcing on the temperature. Figure 2 shows the HadCRUT4 monthly global surface average air temperature.
Figure 2. Monthly surface air temperatures anomalies, from the HadCRUT4 dataset. The purple line shows a centered Gaussian average with a full width at half maximum (FWHM) of 8 years.
One problem with doing this particular linear regression is that the volcanic forcing is approximately trendless, while the temperature has risen overall. We are interested in the short-term (within four years or so) changes in temperature due to the volcanoes. So what we can do to get rid of the long-term trend is to only consider the temperature variations around the average for that historical time. To do that, we subtract the Gaussian average from the actual data, leaving what are called the “residuals”:
Figure 3. Residual anomalies, after subtracting out the centered 8-year FWHM gaussian average.
As you can see, these residuals still contain all of the short-term variations, including whatever the volcanoes might or might not have done to the temperature. And as you can also see, there is little sign of the claimed cooling from the eruptions. There is certainly no obvious sign of even the largest eruptions. To verify that, here is the same temperature data overlaid on the volcanic forcing. Note the different scales on the two sides.
Figure 4. Volcanic forcing (red), with the HadCRUT4 temperature residual overlaid.
While some volcanoes line up with temperature changes, some show increases after the eruptions. In addition, the largest eruptions don’t seem correlated with proportionately large drops in temperatures.
So now we can start looking at how much the volcanic forcing is actually affecting the temperature. The raw linear regression yields the following results.
R^2 = 0.01 (a measure from zero to one of how much effect the volcanoes have on temperature) "p" value of R^2 = 0.03 (a measure from zero to one how likely it is that the results occurred by chance) (adjusted for autocorrelation). Trend = 0.04°C per W/m2, OR 0.13°C per doubling of CO2 (how much the temperature varies with the volcanic forcing) "p" value of the TREND = 0.02 (a measure from zero to one how likely it is that the results occurred by chance) (adjusted for autocorrelation).
So … what does that mean? Well, it’s a most interesting and unusual result. It strongly confirms a very tiny effect. I don’t encounter that very often in climate science. It simultaneously says that yes, volcanoes do affect the temperature … and yet, the effect is vanishingly small—only about a tenth of a degree per doubling of CO2.
Can we improve on that result? Yes, although not a whole lot. As our estimate improves, we’d expect a better R^2 and a larger trend. To do this, we note that we wouldn’t expect to find an instantaneous effect from the eruptions. It takes time for the land and ocean to heat and cool. So we’d expect a lagged effect. To investigate that, we can calculate the R^2 for a variety of time lags. I usually include negative lags as well to make sure I’m looking at a real phenomenon. Here’s the result:
Figure 5. Analysis of the effects of lagging the results of the volcanic forcing.
That’s a lovely result, sharply peaked. It shows that as expected, after a volcano, it takes about seven-eight months for the maximum effects to be felt.
Including the lag, of course, gives us new results for the linear regress, viz:
R^2 = 0.03 [previously 0.01] "p" value of R^2 = 0.02 (adjusted for autocorrelation) [previously 0.03] Trend = 0.05°C per W/m2, OR 0.18 ± 0.02°C per doubling of CO2 [previously 0.13°C/doubling] "p" value of the Trend = 0.001 (adjusted for autocorrelation). [previously 0.02]
As expected, both the R^2 and the trend have increased. In addition the p-values have improved, particularly for the trend. At the end of the day, what we have is a calculated climate sensitivity (change in temperature with forcing) which is only about two-tenths of a degree per doubling of CO2.
Here are the conclusions that I can draw from this analysis.
1) The effect of volcanic eruptions is far smaller than generally assumed. Even the largest volcanoes make only a small difference in the temperature. This agrees with my eight previous analyses (see list in the Notes). For those who have questions about this current analysis, let me suggest that you read through all of my previous analyses, as this is far from my only evidence that volcanoes have very little effect on temperature.
2) As Figure 5 shows, the delay in the effects of the temperature is on the order of seven or eight months from the eruption. This is verified by a complete lagged analysis (see the Notes below). That analysis also gives the same value for the climate sensitivity, about two tenths of a degree per doubling.
3) However, this is not the whole story. The reason that the temperature change after an eruption is so small is that the effect is quickly neutralized by the homeostatic nature of the climate.
Finally, to return to the question of the IPCC Fifth Assessment Report, it says:
There is very high confidence that models reproduce the more rapid warming in the second half of the 20th century, and the cooling immediately following large volcanic eruptions.
Since there is almost no cooling that follows large volcanic eruptions … whatever the models are doing, they’re doing it wrong. You can clearly see the volcanic eruptions in the model results … but you can’t see them at all in the actual data.
The amazing thing to me is that this urban legend about volcanoes having some big effect on the global average temperature is so hard to kill. I’ve analyzed it from a host of directions, and I can’t find any substance there at all … but it is widely believed.
I ascribe this to an oddity of the climate control system … it’s invisible. For example, I’ve shown that the time of onset of tropical clouds has a huge effect on incoming solar radiation, with a change of about ten minutes in onset time being enough to counteract a doubling of CO2. But no one would ever notice such a small change.
So we can see the cooling effect of the volcanoes where it is occurring … but what we can’t see is the response of the rest of the climate system to that cooling. And so, the myth of the volcanic fingerprints stays alive, despite lots of evidence that while they have large local effects, their global effect is trivially small.
Best to all,
w.
PS—The IPCC claims that the explanation for the “pause” in warming is half due to “natural variations”, a quarter is solar, and a quarter is from volcanoes. Here’s the truly bizarre part. In the last couple decades, using round numbers, the IPCC predicted about 0.4°C of warming … which hasn’t happened. So if a quarter of that (0.1°C) is volcanoes, and the recent volcanic forcing is (by their own numbers) about 0.1 W/m2, they’re saying that the climate sensitivity is 3.7° per doubling of CO2.
Of course, if that were the case we’d have seen a drop of about 3°C from Pinatubo … and I fear that I don’t see that in the records.
They just throw out these claims … but they don’t run the numbers, and they don’t think them through to the end.
Notes and Data
For the value of the forcing, I have not used the instantaneous value of the volcanic forcing, which is called “Fi“. Instead, I’ve used the effective forcing “Fe“, which is the value of the forcing after the system has completely adjusted to the changes. As you might expect, Fi is larger than Fe. See the spreadsheet containing the data for the details.
As a result, what I have calculated here is NOT the transient climate response (TCR). It is the equilibrium climate sensitivity (ECS).
For confirmation, the same result is obtained by first using the instantaneous forcing Fi to calculate the TCR, and then using the TCR to calculate the ECS.
Further confirmation comes from doing a full interative lagged analysis (not shown), using the formula for a lagged linear relationship, viz:
T2 = T1 + lambda (F2 – F1) (1 – exp(-1/tau)) + exp(-1/tau) (T1 – T0)
where T is temperature, F is forcing, lambda is the proportionality coefficient, and tau is the time constant.
That analysis gives the same result for the trend, 0.18°C/doubling of CO2. The time constant tau was also quite similar, with the best fit at 6.4 months lag between forcing and response.
<strong>
In this case it’s the Sato paper, which provides a dataset of optical thicknesses “tau”, and says:
The relation between the optical thickness and the forcings are roughly (See “Efficacy …” below):
instantaneous forcing Fi (W/m2) = -27 τ
adjusted forcing Fa (W/m2) = -25 τ
SST-fixed forcing Fs (W/m2) = -26 τ
effective forcing Fe (W/m2) = -23 τ
And “Efficacy” refers to
Hansen, J., M. Sato, R. Ruedy, L. Nazarenko, A. Lacis, G.A. Schmidt, G. Russell, et al. 2005. Efficacy of climate forcings. J. Geophys. Res., 110, D18104, doi:10.1029/2005/JD005776.
Forcing Data
For details on the volcanic forcings used, see the Sato paper, which provides a dataset of optical thicknesses “tau”, and says:
The relation between the optical thickness and the forcings are roughly (See “Efficacy …” below):
instantaneous forcing Fi (W/m2) = -27 τ
adjusted forcing Fa (W/m2) = -25 τ
SST-fixed forcing Fs (W/m2) = -26 τ
effective forcing Fe (W/m2) = -23 τ
And “Efficacy” refers to
Hansen, J., M. Sato, R. Ruedy, L. Nazarenko, A. Lacis, G.A. Schmidt, G. Russell, et al. 2005. Efficacy of climate forcings. J. Geophys. Res., 110, D18104, doi:10.1029/2005/JD005776.
(Again, remember I’m using their methods, but I’m not claiming that their methods are correct.)
Future Analyses
My next scheme is that I want to gin up some kind of prototype governing system that mimics what it seems the climate system is doing. The issue is that to keep a lagged system on course, you need to have “overshoot”. This means that when the temperature goes below average, it then goes above average, and then finally returns to the prior value. Will I ever do the analysis? Depends on whether something shinier shows up before I get to it … I would love to have about a dozen bright enthusiastic graduate students to hand out this kind of analysis to.
I also want to repeat my analysis using “stacking” of the volcanoes, but using this new data, along with some mathematical method to choose the starting points for the stacking … which turns out to be a bit more difficult than I expected.
Previous posts on the effects of the volcano.
Prediction is hard, especially of the future.
Pinatubo and the Albedo Thermostat
Dronning Maud Meets the Little Ice Age
New Data, Old Claims about Volcanoes
Volcanoes: Active, Inactive and Interactive
Stacked Volcanoes Falsify Models

AK ” There is a lot of variation in the individual years and an interesting oscillation between a short phase one year and a long phase the next.”
A one year anti-correlation has been noted in arctic ice, though I don’t have a reference to hand.
There is a triplet of frequencies centred on 2y in the power spectrum of ice area:
http://climategrog.wordpress.com/?attachment_id=438
Similar pattern in UAH TLT for NH, though not the same in tropics or SH, there is a strong and common 2.48y peak that is probably what it called QBO (quasi-biennial osc).
http://climategrog.wordpress.com/?attachment_id=407
2.44y is the strongest peak in the trade wind spectrum.
http://climategrog.wordpress.com/?attachment_id=283
Over the short ARGO sample of 6 years , it could be the alternation you noted is due to 2.4 rather than 2y.
In view of the other global indications I would suggest what you noted is more like real than coin flip.
AK “Here’s the Adjusted R^2 verification statistic for the linear regression. For the individual years this is ugly, with some years getting into negative territory at a fairly shallow depth. ”
With phase lag getting close to a year in some cases this may not be surprising.
Would this behaviour suggest a circa 2y variation below the thermocline that is alternately adding and then opposing the surface signal? In even numbered years it opposes, leading to neg corr and long phase lag.
x1<-cos(x)
x2<-sin(x)
m<-lm(y ~ x1 + x2)
I can never get my head around the arcane way model functions are specified in R , could someone translate please?
AK, could you explain what “newtonian view” refers to in this context? Thanks.
Tried to run the R code but even after a few simple syntax changes (linux netcdf package has differences) and over a hour of data download it now shits out with an incredibly useless error message that tells me nothing about where look. (remind me why I gave up wasting time on R years ago).
Error in double(totvarsize) : vector size cannot be NA/NaN
Not that that is any reflection of AK, I just don’t have the time piss debugging that kind of crap environment.
The reason I tried to run the code was that AK’s graphs all stop in 2010 yet the data is “near real time” and should have complete years to 2012.
AK, is there a reason for this or where those graphs you linked created a couple of years ago?
Thanks.
Greg Goodman says:
September 25, 2013 at 10:59 pm
Re: 6mo cycle
You might be misreading the graph… I plotted 24 months by doubling up on the 12 month period. I find it easier to see patterns this way.
Probably won’t have time today to answer other questions… maybe tonight.
Actually Greg, I see what your talking about now. The wedge in the annual signal. Not sure what that is. There was only 6yrs of data available at the time and there’s two more now, so maybe it’s disappeared.
Greg Goodman says:
September 26, 2013 at 12:06 am
“…could someone translate please?”
######
What I’m doing here is fitting a sine curve using a linear model (lm). Here’s a good explanation:
https://stat.ethz.ch/pipermail/r-help/2008-May/162879.html
The “Newtonian View” is using simple exponential decay “exp(-t/tau)” (i.e. a one box model).
When I first started looking at this, I ran into Newton’s Model of Cooling, so that explains the terminology.
Greg Goodman says:
September 26, 2013 at 2:22 am
Re: Error
If you send your code to climateadj at gmail etc, maybe I’ll have a look tonight. I think I downloaded the ARGO data earlier this year, so that should save me a step.
AK, thanks very much for the clarifications. I’d guessed ‘Newton’ was something to do with a linear feedback model but wondered whether it implied more than that.
It would be very interesting to see what the graphs look like now, with the extra two years of data. Whether what I read as 6mo and you called a notch disappears or becomes clearer.
In your 2008 plots, between 600m and 900m, there’s more 6mo than 12mo . How about odd numbered years? There’s definitely some interesting information there.
The linux library (called ncdf) does not recognise the collapse=FALSE so I had to remove it, I don’t know whether that will mess things up but the error message was so vague and did not even relate to code in your script, I’d have to start putting ‘print’ statements everywhere and digging into the library code to track it down and I don’t have time to mess around like that.
re pipermail, good explanation , nice trick. hwvr, I can’t see this as being exactly what your code does:
x<-(2*pi*(((0:11+.5)/12)+(phaseoffsetdays/365))) # cf pipermail (x+b)
x1<-cos(x) # cf pipermail sin(b)*cos(x)
x2<-sin(x) # cf pipermail cos(b)*sin(x)
Maybe I’m being thick.
oops. Apologies for AJ/AK mix-up.
AJ says: Re: Error
If you send your code to climateadj at gmail etc, maybe I’ll have a look tonight. I think I downloaded the ARGO data earlier this year, so that should save me a step.
It’s not my code, it’s what you provided. I just had to make a few syntax changes :
library (ncdf)
nc2<-open.ncdf("argo_2005-2012_grd.nc")
# var.get becomes get.var:
long<-get.var.ncdf(nc,longvar)
I suspect the problem may this edit. Incompatible option
# ptsamp<-var.get.nc(nc,tempvar,start,count,collapse=FALSE) – k
ptsamp source (“AJ.R”)
Error in double(totvarsize) : vector size cannot be NA/NaN
Maybe they’ve changed a variable name. If your code still works on the data , I guess it’s an incompatibility in the linux ncdf lib for R.
thanks.
duh, WordPress dumped my formatting tags…
library (ncdf) nc2<-open.ncdf("argo_2005-2012_grd.nc") # var.get becomes get.var , all occurances changed long<-get.var.ncdf(nc,longvar) I suspect the problem may be this edit. Incompatible option removed: # ptsamp<-var.get.nc(nc,tempvar,start,count,collapse=FALSE) - k ptsamp <-get.var.ncdf(nc,tempvar,start,count) - kwhen I try to run it , it seems to have an empty vector despite the massive files.
ptsamp source (“AJ.R”) Error in double(totvarsize) : vector size cannot be NA/NaN 19838290 -rw-r--r-- 1 user users 4031083428 Jan 23 2013 argo_2005-2012_grd.nc 19838292 -rw-r--r-- 1 user users 503889588 Jan 23 2013 argo_CLIM_grd.nc nc1<-open.ncdf("argo_CLIM_grd.nc") nc2<-open.ncdf("argo_2005-2012_grd.nc")Maybe they’ve changed a variable name. If your code still works on the data , I guess it’s an incompatibility in the linux ncdf lib for R.
thanks.
jeez, whatever happened to the new preview function Anthony got with his $550 upgrade?!
The R command was obviously just :
source (“AJ.R”)
@Greg Goodman
I sent the upgrade back to the factory for retooling, there were several problems with it, and I discovered that it didn’t merit the cost.
I’m waiting to see if wordpress.com can solve the issues before reinstating it.
getncsample<-function
defined twice , pls check code appended to your link:
https://sites.google.com/site/climateadj/argo-sine-fitting
Greg:
The source at the bottom is actually four separate programs. I’ve separated them using a long string of X’s such as:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
My apologies on not making this clear. I should have done a better job. I really didn’t think anyone would ever look at the code.
“I discovered that it didn’t merit the cost. ”
I did not comment at the time since it was your choice and assumed you had your reasons but it seems a lot to pay for very little.
AJ: “Anyway, that’s all I have.”
You couldn’t do any better than that? 🙂
Seriously, great work; it makes the data talk to me–which is no mean accomplishment.
I see what you mean about about the trend plots’ suggesting overshoot. To me they look like a still shot of wave propagation both in the north-south direction and (slightly) from the surface downward. Or (sorry to perseverate), rather than a wave-equation-type phenomenon, it could (I think) be a diffusion phenomenon analogous to what Mr. Eschenbach’s tautochrone plot depicted. (I have no idea what the physical basis could be; I suspect that thermal conductivity is way too low to implicate conduction, which is what explains the tautochrones.)
In an attempt to make a quick test of diffusion-type equations I tried to find the code I used to generate tautochrones of my own when Mr. Eschenbach raised the subject, but it appears I didn’t keep it. A substitute you may want to try is a lumped-parameter approximation to that (distributed-parameter) implementation: a multi-box system in which dy_i / dt = r * (y_{i-1} – 2*y_i + y_{i+1}), with dy_1/dt = -(a + r) * y_1 + r * y_2 + x and dy_I/dt = r * (y_{I-1} – y_I), the i’s representing different latitudes. That is, you could imagine the system’s being driven only at the equator and then watch the results propagate poleward. I’m guessing you could get to I = 9 or 10 before numeric issues would make your computer balk or the solution would take the computer too much time.
Again, great work.
Greg:
Yes it’s probably collapsing the latitudinal dimension as the code is only selecting one latitude (45S). My code can select multiple latitudes and expects a 4D array (lon,lat,lev,time).
You can probably get around this by inserting something like this after your get.var:
if (length(dim(ptsamp)) == 3){
dimlen = dim(ptsamp)
ptsamp = array(ptsamp,,dim=c(dimlen[1],1,dimlen[2],dimlen[3]))
}
Me: “I’m guessing you could get to I = 9 or 10 before numeric issues would make your computer balk or the solution would take the computer too much time.”
Yeah, big talker. It just took my machine over seven minutes for I = 9.
Greg:
Re: pipermail explanation of linear sine fitting
I don’t think your thick. I remember it making my head hurt to translate what was described into workable code. I also had to make modifications for such things as hemispheres/equinoxes, lags extending out past 1/2 cycle, etc.
I’d walk you through it, but it’s been a couple of years since I wrote this and I’m afraid it would hurt my head again.
Seems to work though.
Greg:
Actually the dimensions should be in the variable “count”, so this should work to preserve the 4D array:
if (length(dim(ptsamp)) != length(count)){
ptsamp = array(ptsamp,,dim=count)
}
Or an even better way, forget about the “if” statement and just do:
dim(ptsamp) = count
Thanks for the suggestions AJ. but it’s not even getting as far as running the first line. of code.
Crappy interpreted languages that cannot even give an intelligible error message are more that my time’s worth. Jeezuz, I have the impression to be working with some early-80’s ROM based BASIC. Worse, at least they used to give a line number when they hit a problem.
It’s more akin to programming in a µP directly in HEX.
Let us know if you get a chance to update your plots with the more recent data. What you got in 2010 looked very interesting.
Greg:
Here’s the updated plots. I also updated the code to use ncdf:
https://sites.google.com/site/climateadj/argo-sine-fitting-2012
Seems like the linux ncdf library implementation does not know “collapse” and won’t accept the NA in the argument list. ( -1 is the flag to read all and it req a specific valid index in start).
also needed to replace win.graph
dev.new(); #win.graph()
but now I have your beautiful graphs . Thanks much for supplying code. 😉
cy<-08 # number of years to get 2011,2012
Now it gets interesting. Something notable happens between 300m and 400m in the last two years.
In the R2 plot 2011 starts out like an even year but ramps back up from 300m and ends like the other odd years. There is an odd jump in the phase plot at this point.
2012 crosses to neg R2 at 300m and stays there , basically similar to the other even years. The phase plot seems to wrap around 365 but otherwise looks orderly.
http://climategrog.files.wordpress.com/2013/09/argo-phase-45s.jpg
http://climategrog.files.wordpress.com/2013/09/argo-phase-45s.jpg