<?xml version="1.0" encoding="UTF-8" standalone="yes"?><oembed><version><![CDATA[1.0]]></version><provider_name><![CDATA[Azimuth]]></provider_name><provider_url><![CDATA[https://johncarlosbaez.wordpress.com]]></provider_url><author_name><![CDATA[John Baez]]></author_name><author_url><![CDATA[https://johncarlosbaez.wordpress.com/author/johncarlosbaez/]]></author_url><title><![CDATA[El Ni&ntilde;o Project (Part&nbsp;3)]]></title><type><![CDATA[link]]></type><html><![CDATA[<p>In February, this paper claimed there&#8217;s a 75% chance the next El Niño will arrive by the end of 2014:</p>
<p>&bull; Josef Ludescher, Avi Gozolchiani, Mikhail I. Bogachev, Armin Bunde, Shlomo Havlin, and Hans Joachim Schellnhuber, <a href="http://www.climatelinc.eu/fileadmin/UG_ADVANCED/Publications/BIU_-_Avi__Halvin__et_al-Very_early_warning_of_next_El_Nino.pdf">Very early warning of next El Niño</a>, <a href="http://www.pnas.org/content/early/2014/02/07/1323058111"><i>Proceedings of the National Academy of Sciences</i></a>, February 2014.  (Click title for free version, journal name for official version.)</p>
<p>Since it was published in a reputable journal, it created a big stir!  Being able to predict an El Ni&ntilde;o more than 6 months in advance would be a big deal.  El Ni&ntilde;os can cause billions of dollars of damage.</p>
<p>But that&#8217;s not the only reason we at the Azimuth Project want to analyze, criticize and improve this paper.  Another reason is that it uses a <i>climate network</i>&mdash;and we like network theory.</p>
<p>Very roughly, the idea is this.   Draw a big network of dots representing different places in the Pacific Ocean.  For each pair of dots, compute a number saying how strongly correlated the temperatures are at those two places.   The paper claims that when a El Ni&ntilde;o is getting ready to happen, the average of these numbers is big.  In other words, temperatures in the Pacific tend to go up and down in synch!</p>
<p>Whether this idea is right or wrong, it&#8217;s interesting&mdash;and it&#8217;s not very hard for programmers to dive in and study it.</p>
<p>Two Azimuth members have done just that: <a href="http://www.azimuthproject.org/azimuth/show/David+Tanzer">David Tanzer</a>, a software developer who works for financial firms in New York, and <a href="http://www.azimuthproject.org/azimuth/show/Graham+Jones">Graham Jones</a>, a self-employed programmer who also works on genomics and Bayesian statistics.  These guys have really brought new life to the Azimuth Code Project in the last few weeks, and it&#8217;s exciting!  It&#8217;s even gotten me to do some programming myself.</p>
<p>Soon I&#8217;ll start talking about the programs they&#8217;ve written, and how you can help.  But today I&#8217;ll summarize the paper by Ludescher <i>et al</i>.  Their methodology is also explained here:</p>
<p>&bull; Josef Ludescher, Avi Gozolchiani, Mikhail I. Bogachev, Armin Bunde, Shlomo Havlin, and Hans Joachim Schellnhuber, <a href="http://www.pnas.org/content/early/2013/06/26/1309353110.full.pdf+html">Improved El Niño forecasting by cooperativity detection</a>, <i>Proceedings of the National Academy of Sciences</i>, 30 May 2013.</p>
<h3> The basic idea </h3>
<p>The basic idea is to use a climate network.  There are lots of variants on this idea, but here&#8217;s a simple one.   Start with a bunch of dots representing different places on the Earth.  For any pair of dots <img src='https://s0.wp.com/latex.php?latex=i&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='i' title='i' class='latex' /> and <img src='https://s0.wp.com/latex.php?latex=j%2C&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='j,' title='j,' class='latex' /> compute the <a href="https://en.wikipedia.org/wiki/Cross-correlation">cross-correlation</a> of temperature histories at those two places.  Call some function of this the &#8216;link strength&#8217; for that pair of dots.  Compute the average link strength&#8230; and get excited when this gets bigger than a certain value.</p>
<p>The papers by Ludescher <i>et al</i> use this strategy to predict El Ni&ntilde;os. They build their climate network using correlations between daily temperature data for 14 grid points in the El Niño basin and 193 grid points outside this region, as shown here:</p>
<div align="center">
<a href="http://www.pnas.org/content/early/2013/06/26/1309353110.full.pdf+html"><br />
<img width="450" src="https://i0.wp.com/math.ucr.edu/home/baez/ecological/el_nino/ludescher_el_nino_cooperativity_1a.jpg" alt="" /></a>
</div>
<p>The red dots are the points in the El Ni&ntilde;o basin.</p>
<p>Starting from this temperature data, they compute an &#8216;average link strength&#8217; in a way I&#8217;ll describe later.  When this number is bigger than a certain fixed value, they claim an El Ni&ntilde;o is coming.</p>
<p>How do they decide if they&#8217;re right?  How do we tell when an El Ni&ntilde;o actually arrives?  One way is to use the &#8216;Ni&ntilde;o 3.4 index&#8217;.  This the area-averaged sea surface temperature anomaly in the yellow region here:</p>
<div align="center">
<a href="http://www.esrl.noaa.gov/psd/forecasts/sstlim/for1gl.html"><img width="450" src="https://i2.wp.com/math.ucr.edu/home/baez/ecological/el_nino/nino_3.4_region.gif" alt="" /></a>
</div>
<p><b>Anomaly</b> means the temperature minus its average over time: how much <i>hotter than usual</i> it is.  When the Ni&ntilde;o 3.4 index is over 0.5&deg;C for at least 5 months, Ludescher <i>et al</i> say there&#8217;s an El Ni&ntilde;o.   (By the way, this is not the <a href="http://ggweather.com/enso/oni.htm">standard definition</a>.  But we will discuss that some other day.)</p>
<p>Here is what they get:</p>
<div align="center"><a href="http://www.pnas.org/content/early/2013/06/26/1309353110.full.pdf+html"><br />
<img width="450" src="https://i0.wp.com/math.ucr.edu/home/baez/ecological/el_nino/ludescher_el_nino_cooperativity_2a.jpg" alt="" /></a></div>
<p>The blue peaks are El Ni&ntilde;os: episodes where the Ni&ntilde;o 3.4 index is over 0.5&deg;C for at least 5 months.</p>
<p>The red line is their &#8216;average link strength&#8217;.  Whenever this exceeds a certain threshold <img src='https://s0.wp.com/latex.php?latex=%5CTheta+%3D+2.82%2C&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;Theta = 2.82,' title='&#92;Theta = 2.82,' class='latex' /> and the Ni&ntilde;o 3.4 index is not <i>already</i> over 0.5&deg;C, they predict an El Ni&ntilde;o will start in the following calendar year.</p>
<p>The green arrows show their successful predictions.  The dashed arrows show their false alarms.  A little letter n appears next to each El Ni&ntilde;o that they failed to predict.</p>
<p>You&#8217;re probably wondering where the number <img src='https://s0.wp.com/latex.php?latex=2.82&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='2.82' title='2.82' class='latex' /> came from.  They get it from a learning algorithm that finds this threshold by optimizing the predictive power of their model.  Chart A here shows the &#8216;learning phase&#8217; of their calculation.  In this phase, they adjusted the threshold <img src='https://s0.wp.com/latex.php?latex=%5CTheta&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;Theta' title='&#92;Theta' class='latex' /> so their procedure would do a good job.  Chart B shows the &#8216;testing phase&#8217;.  Here they used the value of <img src='https://s0.wp.com/latex.php?latex=%5CTheta&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;Theta' title='&#92;Theta' class='latex' /> chosen in the learning phase, and checked to see how good a job it did.  I&#8217;ll let you read their paper for more details on how they chose <img src='https://s0.wp.com/latex.php?latex=%5CTheta.&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;Theta.' title='&#92;Theta.' class='latex' /></p>
<p>But what about their prediction now?  That&#8217;s the green arrow at far right here:</p>
<div align="center">
<a href="http://www.climatelinc.eu/fileadmin/UG_ADVANCED/Publications/BIU_-_Avi__Halvin__et_al-Very_early_warning_of_next_El_Nino.pdf"><br />
<img width="450" src="https://i0.wp.com/math.ucr.edu/home/baez/ecological/el_nino/ludescher_el_nino_warning_a.jpg" alt="" /><br />
</a>
</div>
<p>On 17 September 2013, the red line went above the threshold!   So, their scheme predicts an El Ni&ntilde;o sometime in 2014.  The chart at right is a zoomed-in version that shows the red line in August, September, October and November of 2013.</p>
<h3> The details </h3>
<p>Now I mainly need to explain how they compute their &#8216;average link strength&#8217;.</p>
<p>Let <img src='https://s0.wp.com/latex.php?latex=i&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='i' title='i' class='latex' /> stand for any point in this 9 &times; 23 grid:</p>
<div align="center">
<a href="http://math.ucr.edu/home/baez/ecological/el_nino/ludescher_el_nino_cooperativity_1.jpg"><br />
<img width="450" src="https://i0.wp.com/math.ucr.edu/home/baez/ecological/el_nino/ludescher_el_nino_cooperativity_1a.jpg" alt="" /><br />
</a></div>
<p>For each day <img src='https://s0.wp.com/latex.php?latex=t&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='t' title='t' class='latex' /> between June 1948 and November 2013, let <img src='https://s0.wp.com/latex.php?latex=%5Ctilde%7BT%7D_i%28t%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;tilde{T}_i(t)' title='&#92;tilde{T}_i(t)' class='latex' /> be the average surface air temperature at the point <img src='https://s0.wp.com/latex.php?latex=i&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='i' title='i' class='latex' /> on day <img src='https://s0.wp.com/latex.php?latex=t.&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='t.' title='t.' class='latex' /></p>
<p>Let <img src='https://s0.wp.com/latex.php?latex=T_i%28t%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='T_i(t)' title='T_i(t)' class='latex' /> be <img src='https://s0.wp.com/latex.php?latex=%5Ctilde%7BT%7D_i%28t%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;tilde{T}_i(t)' title='&#92;tilde{T}_i(t)' class='latex' /> minus its <b>climatological average</b>.  For example, if <img src='https://s0.wp.com/latex.php?latex=t&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='t' title='t' class='latex' /> is June 1st 1970, we average the temperature at location <img src='https://s0.wp.com/latex.php?latex=i&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='i' title='i' class='latex' /> over all June 1sts from 1948 to 2013, and subtract that from <img src='https://s0.wp.com/latex.php?latex=%5Ctilde%7BT%7D_i%28t%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;tilde{T}_i(t)' title='&#92;tilde{T}_i(t)' class='latex' /> to get <img src='https://s0.wp.com/latex.php?latex=T_i%28t%29.&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='T_i(t).' title='T_i(t).' class='latex' /></p>
<p>They call <img src='https://s0.wp.com/latex.php?latex=T_i%28t%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='T_i(t)' title='T_i(t)' class='latex' /> the <b>temperature anomaly</b>.</p>
<p>(A subtlety here: when we are doing prediction we can&#8217;t know the future temperatures, so the climatological average is only the average over <i>past</i> days meeting the above criteria.)</p>
<p>For any function of time, denote its moving average over the last 365 days by:</p>
<p><img src='https://s0.wp.com/latex.php?latex=%5Cdisplaystyle%7B+%5Clangle+f%28t%29+%5Crangle+%3D+%5Cfrac%7B1%7D%7B365%7D+%5Csum_%7Bd+%3D+0%7D%5E%7B364%7D+f%28t+-+d%29+%7D&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;displaystyle{ &#92;langle f(t) &#92;rangle = &#92;frac{1}{365} &#92;sum_{d = 0}^{364} f(t - d) }' title='&#92;displaystyle{ &#92;langle f(t) &#92;rangle = &#92;frac{1}{365} &#92;sum_{d = 0}^{364} f(t - d) }' class='latex' /></p>
<p>Let <img src='https://s0.wp.com/latex.php?latex=i&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='i' title='i' class='latex' /> be a point in the El Niño basin, and <img src='https://s0.wp.com/latex.php?latex=j&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='j' title='j' class='latex' /> be a point outside it.  For any time lag <img src='https://s0.wp.com/latex.php?latex=%5Ctau&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;tau' title='&#92;tau' class='latex' /> between 0 and 200 days, define the <b>time-delayed cross-covariance</b> by:</p>
<p><img src='https://s0.wp.com/latex.php?latex=%5Clangle+T_i%28t%29+T_j%28t+-+%5Ctau%29+%5Crangle+-+%5Clangle+T_i%28t%29+%5Crangle+%5Clangle+T_j%28t+-+%5Ctau%29+%5Crangle++&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;langle T_i(t) T_j(t - &#92;tau) &#92;rangle - &#92;langle T_i(t) &#92;rangle &#92;langle T_j(t - &#92;tau) &#92;rangle  ' title='&#92;langle T_i(t) T_j(t - &#92;tau) &#92;rangle - &#92;langle T_i(t) &#92;rangle &#92;langle T_j(t - &#92;tau) &#92;rangle  ' class='latex' /></p>
<p>Note that this is a way of studying the linear correlation between the temperature anomaly at node <img src='https://s0.wp.com/latex.php?latex=i&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='i' title='i' class='latex' /> and the temperature anomaly a time <img src='https://s0.wp.com/latex.php?latex=%5Ctau&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;tau' title='&#92;tau' class='latex' /> earlier at some node <img src='https://s0.wp.com/latex.php?latex=j.&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='j.' title='j.' class='latex' />  So, it&#8217;s about how temperature anomalies inside the El Ni&ntilde;o basin are correlated to temperature anomalies outside this basin at earlier times.</p>
<p>Ludescher <i>et al</i> then normalize this, defining the <b>time-delayed cross-correlation</b> <img src='https://s0.wp.com/latex.php?latex=C_%7Bi%2Cj%7D%5E%7Bt%7D%28-%5Ctau%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='C_{i,j}^{t}(-&#92;tau)' title='C_{i,j}^{t}(-&#92;tau)' class='latex' /> to be the time-delayed cross-covariance divided by</p>
<p><img src='https://s0.wp.com/latex.php?latex=%5Csqrt%7B%5CBig%7B%5Clangle%7D+%28T_i%28t%29++++++-+%5Clangle+T_i%28t%29%5Crangle%29%5E2++++++%5CBig%7B%5Crangle%7D%7D+%5C%3B+++++%5Csqrt%7B%5CBig%7B%5Clangle%7D+%28T_j%28t-%5Ctau%29+-+%5Clangle+T_j%28t-%5Ctau%29%5Crangle%29%5E2+%5CBig%7B%5Crangle%7D%7D+&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;sqrt{&#92;Big{&#92;langle} (T_i(t)      - &#92;langle T_i(t)&#92;rangle)^2      &#92;Big{&#92;rangle}} &#92;;     &#92;sqrt{&#92;Big{&#92;langle} (T_j(t-&#92;tau) - &#92;langle T_j(t-&#92;tau)&#92;rangle)^2 &#92;Big{&#92;rangle}} ' title='&#92;sqrt{&#92;Big{&#92;langle} (T_i(t)      - &#92;langle T_i(t)&#92;rangle)^2      &#92;Big{&#92;rangle}} &#92;;     &#92;sqrt{&#92;Big{&#92;langle} (T_j(t-&#92;tau) - &#92;langle T_j(t-&#92;tau)&#92;rangle)^2 &#92;Big{&#92;rangle}} ' class='latex' /></p>
<p>This is something like the standard deviation of <img src='https://s0.wp.com/latex.php?latex=T_i%28t%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='T_i(t)' title='T_i(t)' class='latex' /> times the standard deviation of <img src='https://s0.wp.com/latex.php?latex=T_j%28t+-+%5Ctau%29.&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='T_j(t - &#92;tau).' title='T_j(t - &#92;tau).' class='latex' />  Dividing by standard deviations is what people <a href="https://en.wikipedia.org/wiki/Cross-correlation#Normalized_cross-correlation">usually do</a> to turn covariances into correlations.  But there are some potential problems here, which I&#8217;ll discuss later.</p>
<p>They define <img src='https://s0.wp.com/latex.php?latex=C_%7Bi%2Cj%7D%5E%7Bt%7D%28%5Ctau%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='C_{i,j}^{t}(&#92;tau)' title='C_{i,j}^{t}(&#92;tau)' class='latex' /> in a similar way, by taking</p>
<p><img src='https://s0.wp.com/latex.php?latex=%5Clangle+T_i%28t+-+%5Ctau%29+T_j%28t%29+%5Crangle+-+%5Clangle+T_i%28t+-+%5Ctau%29+%5Crangle+%5Clangle+T_j%28t%29+%5Crangle++&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;langle T_i(t - &#92;tau) T_j(t) &#92;rangle - &#92;langle T_i(t - &#92;tau) &#92;rangle &#92;langle T_j(t) &#92;rangle  ' title='&#92;langle T_i(t - &#92;tau) T_j(t) &#92;rangle - &#92;langle T_i(t - &#92;tau) &#92;rangle &#92;langle T_j(t) &#92;rangle  ' class='latex' /></p>
<p>and normalizing it.  So, this is about how temperature anomalies outside the El Ni&ntilde;o basin are correlated to temperature anomalies inside this basin at earlier times.</p>
<p>Next, for nodes <img src='https://s0.wp.com/latex.php?latex=i&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='i' title='i' class='latex' /> and <img src='https://s0.wp.com/latex.php?latex=j%2C&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='j,' title='j,' class='latex' /> and for each time <img src='https://s0.wp.com/latex.php?latex=t%2C&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='t,' title='t,' class='latex' /> they determine the maximum, the mean and the standard deviation of <img src='https://s0.wp.com/latex.php?latex=%7CC_%7Bi%2Cj%7D%5Et%28%5Ctau%29%7C%2C&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='|C_{i,j}^t(&#92;tau)|,' title='|C_{i,j}^t(&#92;tau)|,' class='latex' /> as <img src='https://s0.wp.com/latex.php?latex=%5Ctau&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;tau' title='&#92;tau' class='latex' /> ranges from -200 to 200 days.</p>
<p>They define the <b>link strength</b> <img src='https://s0.wp.com/latex.php?latex=S_%7Bi+j%7D%28t%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='S_{i j}(t)' title='S_{i j}(t)' class='latex' /> as the difference between the maximum and the mean value, divided by the standard deviation.</p>
<p>Finally, they let <img src='https://s0.wp.com/latex.php?latex=S%28t%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='S(t)' title='S(t)' class='latex' /> be the <b>average link strength</b>, calculated by averaging <img src='https://s0.wp.com/latex.php?latex=S_%7Bi+j%7D%28t%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='S_{i j}(t)' title='S_{i j}(t)' class='latex' /> over all pairs <img src='https://s0.wp.com/latex.php?latex=%28i%2Cj%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='(i,j)' title='(i,j)' class='latex' /> where <img src='https://s0.wp.com/latex.php?latex=i&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='i' title='i' class='latex' /> is a node in the El Niño basin and <img src='https://s0.wp.com/latex.php?latex=j&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='j' title='j' class='latex' /> is a node outside.</p>
<p>They compute <img src='https://s0.wp.com/latex.php?latex=S%28t%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='S(t)' title='S(t)' class='latex' /> for every 10th day between January 1950 and November 2013.  When <img src='https://s0.wp.com/latex.php?latex=S%28t%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='S(t)' title='S(t)' class='latex' /> goes over 2.82, and the Ni&ntilde;o 3.4 index is not <i>already</i> over 0.5&deg;C, they predict an El Ni&ntilde;o in the next calendar year.</p>
<p>There&#8217;s more to say about their methods.  We&#8217;d like you to help us check their work and improve it.   Soon I want to show you Graham Jones&#8217; software for replicating their calculations!  But right now I just want to conclude by:</p>
<p>&bull; mentioning a potential problem in the math, and</p>
<p>&bull; telling you where to get the data used by Ludescher <i>et al</i>.</p>
<h3> Mathematical nuances </h3>
<p>Ludescher <i>et al</i> normalize the time-delayed cross-covariance in a somewhat odd way.  They claim to divide it by</p>
<p><img src='https://s0.wp.com/latex.php?latex=%5Csqrt%7B%5CBig%7B%5Clangle%7D+%28T_i%28t%29++++++-+%5Clangle+T_i%28t%29%5Crangle%29%5E2++++++%5CBig%7B%5Crangle%7D%7D+%5C%3B+++++%5Csqrt%7B%5CBig%7B%5Clangle%7D+%28T_j%28t-%5Ctau%29+-+%5Clangle+T_j%28t-%5Ctau%29%5Crangle%29%5E2+%5CBig%7B%5Crangle%7D%7D+&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;sqrt{&#92;Big{&#92;langle} (T_i(t)      - &#92;langle T_i(t)&#92;rangle)^2      &#92;Big{&#92;rangle}} &#92;;     &#92;sqrt{&#92;Big{&#92;langle} (T_j(t-&#92;tau) - &#92;langle T_j(t-&#92;tau)&#92;rangle)^2 &#92;Big{&#92;rangle}} ' title='&#92;sqrt{&#92;Big{&#92;langle} (T_i(t)      - &#92;langle T_i(t)&#92;rangle)^2      &#92;Big{&#92;rangle}} &#92;;     &#92;sqrt{&#92;Big{&#92;langle} (T_j(t-&#92;tau) - &#92;langle T_j(t-&#92;tau)&#92;rangle)^2 &#92;Big{&#92;rangle}} ' class='latex' /></p>
<p>This is a strange thing, since it has nested angle brackets.  The angle brackets are defined as a running average over the 365 days, so this quantity involves data going back twice as long: 730 days.  Furthermore, the &#8216;link strength&#8217; involves the above expression where <img src='https://s0.wp.com/latex.php?latex=%5Ctau&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;tau' title='&#92;tau' class='latex' /> goes up to 200 days.</p>
<p>So, taking their definitions at face value, Ludescher <i>et al</i> could not actually compute their &#8216;link strength&#8217; until 930 days after the surface temperature data first starts at the beginning of 1948.  That would be <i>late 1950</i>.  But their graph of the link strength starts at the <i>beginning</i> of 1950!</p>
<p>Perhaps they actually normalized the time-delayed cross-covariance by dividing it by this:</p>
<p><img src='https://s0.wp.com/latex.php?latex=%5Csqrt%7B%5Cbig%7B%5Clangle%7D+T_i%28t%29%5E2+%5Cbig%7B%5Crangle%7D+-+%5Cbig%7B%5Clangle%7D+T_i%28t%29%5Cbig%7B%5Crangle%7D%5E2%7D+%5C%3B+%5Csqrt%7B%5Cbig%7B%5Clangle%7D+T_j%28t-%5Ctau%29%5E2+%5Cbig%7B%5Crangle%7D+-+%5Cbig%7B%5Clangle%7D+T_j%28t-%5Ctau%29%5Cbig%7B%5Crangle%7D%5E2%7D+&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;sqrt{&#92;big{&#92;langle} T_i(t)^2 &#92;big{&#92;rangle} - &#92;big{&#92;langle} T_i(t)&#92;big{&#92;rangle}^2} &#92;; &#92;sqrt{&#92;big{&#92;langle} T_j(t-&#92;tau)^2 &#92;big{&#92;rangle} - &#92;big{&#92;langle} T_j(t-&#92;tau)&#92;big{&#92;rangle}^2} ' title='&#92;sqrt{&#92;big{&#92;langle} T_i(t)^2 &#92;big{&#92;rangle} - &#92;big{&#92;langle} T_i(t)&#92;big{&#92;rangle}^2} &#92;; &#92;sqrt{&#92;big{&#92;langle} T_j(t-&#92;tau)^2 &#92;big{&#92;rangle} - &#92;big{&#92;langle} T_j(t-&#92;tau)&#92;big{&#92;rangle}^2} ' class='latex' /></p>
<p>This simpler expression avoids nested angle brackets, and it makes more sense conceptually.  It is the standard deviation of <img src='https://s0.wp.com/latex.php?latex=T_i%28t%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='T_i(t)' title='T_i(t)' class='latex' /> over the last 365 days, times of the standard deviation of <img src='https://s0.wp.com/latex.php?latex=T_i%28t-%5Ctau%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='T_i(t-&#92;tau)' title='T_i(t-&#92;tau)' class='latex' /> over the last 365 days.</p>
<p>As <a href="http://www.azimuthproject.org/azimuth/show/Nadja+Kutz">Nadja Kutz</a> noted, the expression written by Ludescher <i>et al</i> does not equal this simpler expression, since:</p>
<p><img src='https://s0.wp.com/latex.php?latex=%5CBig%7B%5Clangle%7D+T_i%28t%29+%5C%3B+%5Clangle+T_i%28t%29+%5Crangle+%5CBig%7B%5Crangle%7D+%5Cneq+%5Cbig%7B%5Clangle%7D+T_i%28t%29+%5Cbig%7B%5Crangle%7D+%5C%3B+%5Cbig%7B%5Clangle%7D+T_i%28t%29+%5Cbig%7B%5Crangle%7D+&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;Big{&#92;langle} T_i(t) &#92;; &#92;langle T_i(t) &#92;rangle &#92;Big{&#92;rangle} &#92;neq &#92;big{&#92;langle} T_i(t) &#92;big{&#92;rangle} &#92;; &#92;big{&#92;langle} T_i(t) &#92;big{&#92;rangle} ' title='&#92;Big{&#92;langle} T_i(t) &#92;; &#92;langle T_i(t) &#92;rangle &#92;Big{&#92;rangle} &#92;neq &#92;big{&#92;langle} T_i(t) &#92;big{&#92;rangle} &#92;; &#92;big{&#92;langle} T_i(t) &#92;big{&#92;rangle} ' class='latex' /></p>
<p>The reason is that</p>
<p><img src='https://s0.wp.com/latex.php?latex=%5Cbegin%7Barray%7D%7Bccl%7D+%5CBig%7B%5Clangle%7D+T_i%28t%29+%5C%3B+%5Clangle+T_i%28t%29+%5Crangle+%5CBig%7B%5Crangle%7D+%26%3D%26+%5Cdisplaystyle%7B+%5Cfrac%7B1%7D%7B365%7D+%5Csum_%7Bd+%3D+0%7D%5E%7B364%7D+T_i%28t-d%29+%5Clangle+T_i%28t-d%29+%5Crangle%7D+%5C%5C++%5C%5C++%26%3D%26+%5Cdisplaystyle%7B+%5Cfrac%7B1%7D%7B365%7D+%5Csum_%7Bd+%3D+0%7D%5E%7B364%7D+%5Cfrac%7B1%7D%7B365%7D+%5Csum_%7BD+%3D+0%7D%5E%7B364%7D+T_i%28t-d%29+T_i%28t-d-D%29%7D+%5Cend%7Barray%7D&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;begin{array}{ccl} &#92;Big{&#92;langle} T_i(t) &#92;; &#92;langle T_i(t) &#92;rangle &#92;Big{&#92;rangle} &amp;=&amp; &#92;displaystyle{ &#92;frac{1}{365} &#92;sum_{d = 0}^{364} T_i(t-d) &#92;langle T_i(t-d) &#92;rangle} &#92;&#92;  &#92;&#92;  &amp;=&amp; &#92;displaystyle{ &#92;frac{1}{365} &#92;sum_{d = 0}^{364} &#92;frac{1}{365} &#92;sum_{D = 0}^{364} T_i(t-d) T_i(t-d-D)} &#92;end{array}' title='&#92;begin{array}{ccl} &#92;Big{&#92;langle} T_i(t) &#92;; &#92;langle T_i(t) &#92;rangle &#92;Big{&#92;rangle} &amp;=&amp; &#92;displaystyle{ &#92;frac{1}{365} &#92;sum_{d = 0}^{364} T_i(t-d) &#92;langle T_i(t-d) &#92;rangle} &#92;&#92;  &#92;&#92;  &amp;=&amp; &#92;displaystyle{ &#92;frac{1}{365} &#92;sum_{d = 0}^{364} &#92;frac{1}{365} &#92;sum_{D = 0}^{364} T_i(t-d) T_i(t-d-D)} &#92;end{array}' class='latex' /></p>
<p>which is generically different from</p>
<p><img src='https://s0.wp.com/latex.php?latex=%5CBig%7B%5Clangle%7D+%5Clangle+T_i%28t%29+%5Crangle+%5C%3B%5Clangle+T_i%28t%29+%5Crangle+%5CBig%7B%5Crangle%7D+%3D+&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;Big{&#92;langle} &#92;langle T_i(t) &#92;rangle &#92;;&#92;langle T_i(t) &#92;rangle &#92;Big{&#92;rangle} = ' title='&#92;Big{&#92;langle} &#92;langle T_i(t) &#92;rangle &#92;;&#92;langle T_i(t) &#92;rangle &#92;Big{&#92;rangle} = ' class='latex' /></p>
<p><img src='https://s0.wp.com/latex.php?latex=%5Cdisplaystyle%7B+%5Cfrac%7B1%7D%7B365%7D+%5Csum_%7BD+%3D+0%7D%5E%7B364%7D+%28%5Cfrac%7B1%7D%7B365%7D+%5Csum_%7Bd+%3D+0%7D%5E%7B364%7D+T_i%28t-d-D%29%29%28%5Cfrac%7B1%7D%7B365%7D+%5Csum_%7Bd+%3D+0%7D%5E%7B364%7D+T_i%28t-d-D%29+%29+%7D&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;displaystyle{ &#92;frac{1}{365} &#92;sum_{D = 0}^{364} (&#92;frac{1}{365} &#92;sum_{d = 0}^{364} T_i(t-d-D))(&#92;frac{1}{365} &#92;sum_{d = 0}^{364} T_i(t-d-D) ) }' title='&#92;displaystyle{ &#92;frac{1}{365} &#92;sum_{D = 0}^{364} (&#92;frac{1}{365} &#92;sum_{d = 0}^{364} T_i(t-d-D))(&#92;frac{1}{365} &#92;sum_{d = 0}^{364} T_i(t-d-D) ) }' class='latex' /></p>
<p>since the terms in the latter expression contain products <img src='https://s0.wp.com/latex.php?latex=T_i%28t-364-364%29T_i%28t-364-364%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='T_i(t-364-364)T_i(t-364-364)' title='T_i(t-364-364)T_i(t-364-364)' class='latex' /> that can&#8217;t appear in the former.</p>
<p>Moreover:</p>
<p><img src='https://s0.wp.com/latex.php?latex=%5Cbegin%7Barray%7D%7Bccl%7D+%5CBig%7B%5Clangle%7D+%28T_i%28t%29+-+%5Clangle+T_i%28t%29+%5Crangle%29%5E2+%5CBig%7B%5Crangle%7D+%26%3D%26+%5CBig%7B%5Clangle%7D+T_i%28t%29%5E2+-+2+T_i%28t%29+%5Clangle+T_i%28t%29+%5Crangle+%2B+%5Clangle+T_i%28t%29+%5Crangle%5E2+%5CBig%7B%5Crangle%7D+%5C%5C++%5C%5C++%26%3D%26+%5Clangle+T_i%28t%29%5E2+%5Crangle+-+2+%5Cbig%7B%5Clangle%7D+T_i%28t%29+%5Clangle+T_i%28t%29+%5Crangle+%5Cbig%7B%5Crangle%7D+%2B++%5Cbig%7B%5Clangle%7D+%5Clangle+T_i%28t%29+%5Crangle%5E2+%5Cbig%7B%5Crangle%7D+%5Cend%7Barray%7D&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;begin{array}{ccl} &#92;Big{&#92;langle} (T_i(t) - &#92;langle T_i(t) &#92;rangle)^2 &#92;Big{&#92;rangle} &amp;=&amp; &#92;Big{&#92;langle} T_i(t)^2 - 2 T_i(t) &#92;langle T_i(t) &#92;rangle + &#92;langle T_i(t) &#92;rangle^2 &#92;Big{&#92;rangle} &#92;&#92;  &#92;&#92;  &amp;=&amp; &#92;langle T_i(t)^2 &#92;rangle - 2 &#92;big{&#92;langle} T_i(t) &#92;langle T_i(t) &#92;rangle &#92;big{&#92;rangle} +  &#92;big{&#92;langle} &#92;langle T_i(t) &#92;rangle^2 &#92;big{&#92;rangle} &#92;end{array}' title='&#92;begin{array}{ccl} &#92;Big{&#92;langle} (T_i(t) - &#92;langle T_i(t) &#92;rangle)^2 &#92;Big{&#92;rangle} &amp;=&amp; &#92;Big{&#92;langle} T_i(t)^2 - 2 T_i(t) &#92;langle T_i(t) &#92;rangle + &#92;langle T_i(t) &#92;rangle^2 &#92;Big{&#92;rangle} &#92;&#92;  &#92;&#92;  &amp;=&amp; &#92;langle T_i(t)^2 &#92;rangle - 2 &#92;big{&#92;langle} T_i(t) &#92;langle T_i(t) &#92;rangle &#92;big{&#92;rangle} +  &#92;big{&#92;langle} &#92;langle T_i(t) &#92;rangle^2 &#92;big{&#92;rangle} &#92;end{array}' class='latex' /></p>
<p>But since <img src='https://s0.wp.com/latex.php?latex=%5Cbig%7B%5Clangle%7D+T_i%28t%29+%5Clangle+T_i%28t%29+%5Crangle+%5Cbig%7B%5Crangle%7D+%5Cneq+%5Cbig%7B%5Clangle%7D+%5Clangle+T_i%28t%29+%5Crangle+%5C%3B+%5Clangle+T_i%28t%29+%5Crangle+%5Cbig%7B%5Crangle%7D%2C&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;big{&#92;langle} T_i(t) &#92;langle T_i(t) &#92;rangle &#92;big{&#92;rangle} &#92;neq &#92;big{&#92;langle} &#92;langle T_i(t) &#92;rangle &#92;; &#92;langle T_i(t) &#92;rangle &#92;big{&#92;rangle},' title='&#92;big{&#92;langle} T_i(t) &#92;langle T_i(t) &#92;rangle &#92;big{&#92;rangle} &#92;neq &#92;big{&#92;langle} &#92;langle T_i(t) &#92;rangle &#92;; &#92;langle T_i(t) &#92;rangle &#92;big{&#92;rangle},' class='latex' /> as was just shown, those terms do not cancel out in the above expression.  In particular, this means that</p>
<p><img src='https://s0.wp.com/latex.php?latex=-2+%5Cbig%7B%5Clangle%7D+T_i%28t%29+%5Clangle+T_i%28t%29+%5Crangle+%5Cbig%7B%5Crangle%7D+%2B+%5Cbig%7B%5Clangle%7D+%5Clangle+T_i%28t%29+%5Crangle+%5Clangle+T_i%28t%29+%5Crangle+%5Cbig%7B%5Crangle%7D+&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='-2 &#92;big{&#92;langle} T_i(t) &#92;langle T_i(t) &#92;rangle &#92;big{&#92;rangle} + &#92;big{&#92;langle} &#92;langle T_i(t) &#92;rangle &#92;langle T_i(t) &#92;rangle &#92;big{&#92;rangle} ' title='-2 &#92;big{&#92;langle} T_i(t) &#92;langle T_i(t) &#92;rangle &#92;big{&#92;rangle} + &#92;big{&#92;langle} &#92;langle T_i(t) &#92;rangle &#92;langle T_i(t) &#92;rangle &#92;big{&#92;rangle} ' class='latex' /></p>
<p>contains terms <img src='https://s0.wp.com/latex.php?latex=T_i%28t-364-364%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='T_i(t-364-364)' title='T_i(t-364-364)' class='latex' /> which do not appear in <img src='https://s0.wp.com/latex.php?latex=%5Clangle+T_i%28t%29%5Crangle%5E2%2C&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;langle T_i(t)&#92;rangle^2,' title='&#92;langle T_i(t)&#92;rangle^2,' class='latex' /> hence</p>
<p><img src='https://s0.wp.com/latex.php?latex=%5CBig%7B%5Clangle%7D+%28T_i%28t%29+-+%5Clangle+T_i%28t%29+%5Crangle%29%5E2+%5CBig%7B%5Crangle%7D++%5Cneq+%5Clangle+T_i%28t%29%5E2%5Crangle+-+%5Clangle+T_i%28t%29%5Crangle%5E2+&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;Big{&#92;langle} (T_i(t) - &#92;langle T_i(t) &#92;rangle)^2 &#92;Big{&#92;rangle}  &#92;neq &#92;langle T_i(t)^2&#92;rangle - &#92;langle T_i(t)&#92;rangle^2 ' title='&#92;Big{&#92;langle} (T_i(t) - &#92;langle T_i(t) &#92;rangle)^2 &#92;Big{&#92;rangle}  &#92;neq &#92;langle T_i(t)^2&#92;rangle - &#92;langle T_i(t)&#92;rangle^2 ' class='latex' /></p>
<p>So at least for the case of the standard deviation it is clear that those two definitions are not the same for a running mean.  For the covariances this would still need to be shown.</p>
<h3> Surface air temperatures </h3>
<p>Remember that <img src='https://s0.wp.com/latex.php?latex=%5Ctilde%7BT%7D_i%28t%29&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='&#92;tilde{T}_i(t)' title='&#92;tilde{T}_i(t)' class='latex' /> is the average surface air temperature at the grid point <img src='https://s0.wp.com/latex.php?latex=i&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='i' title='i' class='latex' /> on day <img src='https://s0.wp.com/latex.php?latex=t.&#038;bg=ffffff&#038;fg=000&#038;s=0' alt='t.' title='t.' class='latex' />  You can get these temperatures from here:</p>
<p>&bull; Earth System Research Laboratory, <a href="http://www.esrl.noaa.gov/psd/cgi-bin/db_search/DBSearch.pl?Dataset=NCEP+Reanalysis+Daily+Averages+Surface+Level&amp;Variable=Air+Temperature&amp;group=0&amp;submit=Search">NCEP Reanalysis Daily Averages Surface Level</a>, or <a href="ftp://ftp.cdc.noaa.gov/Datasets/ncep.reanalysis.dailyavgs/surface/">ftp site</a>.</p>
<p>These sites will give you worldwide daily average temperatures on a 2.5&deg; latitude &times; 2.5&deg; longitude grid (144 &times;  73 grid points), from 1948 to now.  Ihe website will help you get data from within a chosen rectangle in a grid, for a chosen time interval.  Alternatively, you can use the ftp site to download temperatures worldwide one year at a time.  Either way, you&#8217;ll get <a href="http://www.unidata.ucar.edu/software/netcdf/">&#8216;NetCDF files&#8217;</a>&mdash;a format we will discuss later, when we get into more details about programming!</p>
<h3> Ni&ntilde;o 3.4 </h3>
<p><b>Ni&ntilde;o 3.4</b> is the area-averaged sea surface temperature anomaly in the region 5&deg;S-5&deg;N and 170&deg;-120&deg;W.  You can get Ni&ntilde;o 3.4 data here:</p>
<p>You can get Ni&ntilde;o 3.4 data here:</p>
<p>&bull; <a href="http://www.esrl.noaa.gov/psd/gcos_wgsp/Timeseries/Nino34/">Ni&ntilde;o 3.4 data since 1870 calculated from the HadISST1</a>, NOAA.  Discussed in N. A. Rayner <i>et al</i>, Global analyses of sea surface temperature, sea ice, and night marine air temperature since the late nineteenth century, <a href="http://onlinelibrary.wiley.com/doi/10.1029/2002JD002670/abstract"><i>J. Geophys. Res.</i></a> <b>108</b> (2003), 4407.</p>
<p>You can also get Ni&ntilde;o 3.4 data here:</p>
<p>&bull; <a href="http://www.cpc.noaa.gov/products/analysis_monitoring/ensostuff/ONI_change.shtml">Monthly Ni&ntilde;o 3.4 index</a>, Climate Prediction Center, National Weather Service.</p>
<p>The actual temperatures in Celsius are close to those at the other website, but the anomalies are rather different, because they&#8217;re computed in a way that takes global warming into account.  See the website for details.</p>
<p>Ni&ntilde;o 3.4 is just one of several official regions in the Pacific:</p>
<div align="center">
<a href="http://www.bom.gov.au/climate/enso/indices/about.shtml"><br />
<img width="450" src="https://i2.wp.com/math.ucr.edu/home/baez/ecological/el_nino/nino_regions.gif" alt="" /><br />
</a>
</div>
<p>&bull; Niño 1: 80&deg;W-90&deg;W and 5&deg;S-10&deg;S.</p>
<p>&bull; Niño 2: 80&deg;W-90&deg;W and 0&deg;S-5&deg;S</p>
<p>&bull; Niño 3: 90&deg;W-150&deg;W and 5&deg;S-5&deg;N.</p>
<p>&bull; Niño 3.4: 120&deg;W-170&deg;W and 5&deg;S-5&deg;N.</p>
<p>&bull; Niño 4: 160&deg;E-150&deg;W and 5&deg;S-5&deg;N.</p>
<p>For more details, read this:</p>
<p>&bull; Kevin E. Trenberth, <a href="http://www.cgd.ucar.edu/staff/trenbert/trenberth.papers/defnBAMS.pdf">The definition of El Niño</a>, <i>Bulletin of the American Meteorological Society</i> <b>78</b> (1997), 2771&ndash;2777.</p>
]]></html><thumbnail_url><![CDATA[https://i0.wp.com/math.ucr.edu/home/baez/ecological/el_nino/ludescher_el_nino_cooperativity_1a.jpg?fit=440%2C330]]></thumbnail_url><thumbnail_height><![CDATA[291]]></thumbnail_height><thumbnail_width><![CDATA[440]]></thumbnail_width></oembed>