Skip to content

Instantly share code, notes, and snippets.

@ckuijjer
Last active December 24, 2015 17:59
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ckuijjer/6840308 to your computer and use it in GitHub Desktop.
Save ckuijjer/6840308 to your computer and use it in GitHub Desktop.
Unemployment rates with fitted LOESS curve

An implementation in D3 of Figure 4-47 "Unemployment rates with fitted LOESS curve" in "Visualize This" by Nathan Yau.

I've used loess.js from Jason Davies science.js to perform the LOESS smoothing.

<!DOCTYPE html>
<body>
<style>
body {
font-family: Georgia;
font-size: 14px;
color: #333;
}
#container {
width: 740px;
height: 500px;
margin: 0 auto;
position: relative;
background-color: #f2f2f2;
}
#inner-container {
position: absolute;
top: 20px;
left: 20px;
bottom: 20px;
right: 20px;
}
#header h1 {
margin-top: 0;
font-size: 20px;
font-weight: bold;
text-transform: uppercase
}
#footer {
position: absolute;
bottom: 0;
right: 0;
font-size: 12px;
}
svg {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.point {
fill: #FFC8CD;
}
.curve {
stroke: #D90036;
stroke-width: 4;
}
.axis .domain {
display: none;
}
.axis.x line {
shape-rendering: crispEdges;
stroke: #333;
stroke-width: 2;
}
.axis.x.minor line {
stroke: #ccc;
stroke-width: 1;
}
.axis-rule {
shape-rendering: crispEdges;
stroke: #e0e0e0;
}
.axis-rule.zero {
stroke-width: 2;
stroke: #000;
}
.line {
fill-opacity: 0;
stroke-width: 4;
stroke: #C10000;
}
</style>
<div id="container">
<div id="inner-container">
<div id="header">
<h1>United States unemployment rate, 1948-2010</h1>
</div>
<div id="footer">
Source: Bureau of Labor Statistics| Nathan Yau
</div>
</div>
</div>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script>
var science = { stats: {} };
</script>
<script src="loess.js" charset="utf-8"></script>
<script>
var width = 740,
height = 500,
margin = { top: 70, right: 20, bottom: 20, left: 20},
padding = { top: 30, right: 30, bottom: 50, left: 30 };
// Width/height of the chart without margin and padding
var chartWidth = width - margin.left - margin.right - padding.left - padding.right;
var chartHeight = height - margin.top - margin.bottom - padding.top - padding.bottom;
var xValue = function(d) { return d.period; },
xScale = d3.time.scale().range([0, chartWidth]),
xMap = function(d) { return xScale(xValue(d)); },
xAxis = d3.svg.axis()
.scale(xScale)
.orient('bottom')
.ticks(function() { // To create a specific set of tickmarks
return [1948, 1963, 1978, 1993, 2008]
.map(function(d) { return new Date(d, 0, 1); }) });
var yValue = function(d) { return d.value; },
yScale = d3.scale.linear().range([chartHeight, 0]),
yMap = function(d) { return yScale(yValue(d)); },
yAxis = d3.svg.axis()
.scale(yScale)
.ticks(6)
.tickFormat(function(d) { return d + '%'; })
.orient('left');
var svg = d3.select('#container').append('svg')
.attr('width', width)
.attr('height', height);
var chart = svg.append('g')
.attr('class', 'chart')
.attr('transform', 'translate(' + (margin.left + padding.left) + ', ' + (margin.top + padding.top) + ')');
var csvfile = 'unemployment-rate-1948-2010.csv';
d3.csv(csvfile, function(d) {
return {
period: new Date(+d.Year, +(d.Period.slice(1))), // it's only a period and a year, what should the date be?
value: +d.Value
};
}, function(error, data) {
// Set the domain based on the data
xScale.domain(d3.extent(data, xValue));
yScale.domain([0, d3.max(data, yValue)]);
// Render the X axis
chart.append('g')
.attr('class', 'axis x')
.attr('transform', 'translate(0, ' + chartHeight + ')')
.call(xAxis)
// Render the Y axis
chart.append('g')
.attr('transform', 'translate(0, -10)')
.attr('class', 'axis y')
.call(yAxis)
// Render the Y axis rulers
chart.selectAll('.axis-rule.x')
.data(yScale.ticks(7))
.enter()
.append('line')
.attr('class', function(d) {
var cls = 'axis-rule x'
if (d == 0) {
cls += ' zero';
}
return cls;
})
.attr('x1', -padding.left)
.attr('x2', chartWidth + padding.right)
.attr('y1', function(d) { return yScale(d); })
.attr('y2', function(d) { return yScale(d); })
// Render the values
chart.selectAll('.point')
.data(data)
.enter()
.append('circle')
.attr('class', 'point')
.attr('r', 3)
.attr('cx', xMap)
.attr('cy', yMap);
// Render the fitted line
chart.append('path')
.datum(function() {
var loess = science.stats.loess();
loess.bandwidth(0.25);
var xValues = data.map(xMap);
var yValues = data.map(yMap);
var yValuesSmoothed = loess(xValues, yValues);
return d3.zip(xValues, yValuesSmoothed);
})
.attr('class', 'line')
.attr('d', d3.svg.line()
.interpolate('basis')
.x(function(d) { return d[0]; })
.y(function(d) { return d[1]; }))
});
</script>
</body>
Copyright (c) 2011, Jason Davies
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name Jason Davies may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL JASON DAVIES BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Based on org.apache.commons.math.analysis.interpolation.LoessInterpolator
// from http://commons.apache.org/math/
science.stats.loess = function() {
var bandwidth = .3,
robustnessIters = 2,
accuracy = 1e-12;
function smooth(xval, yval, weights) {
var n = xval.length,
i;
if (n !== yval.length) throw {error: "Mismatched array lengths"};
if (n == 0) throw {error: "At least one point required."};
if (arguments.length < 3) {
weights = [];
i = -1; while (++i < n) weights[i] = 1;
}
science_stats_loessFiniteReal(xval);
science_stats_loessFiniteReal(yval);
science_stats_loessFiniteReal(weights);
science_stats_loessStrictlyIncreasing(xval);
if (n == 1) return [yval[0]];
if (n == 2) return [yval[0], yval[1]];
var bandwidthInPoints = Math.floor(bandwidth * n);
if (bandwidthInPoints < 2) throw {error: "Bandwidth too small."};
var res = [],
residuals = [],
robustnessWeights = [];
// Do an initial fit and 'robustnessIters' robustness iterations.
// This is equivalent to doing 'robustnessIters+1' robustness iterations
// starting with all robustness weights set to 1.
i = -1; while (++i < n) {
res[i] = 0;
residuals[i] = 0;
robustnessWeights[i] = 1;
}
var iter = -1;
while (++iter <= robustnessIters) {
var bandwidthInterval = [0, bandwidthInPoints - 1];
// At each x, compute a local weighted linear regression
var x;
i = -1; while (++i < n) {
x = xval[i];
// Find out the interval of source points on which
// a regression is to be made.
if (i > 0) {
science_stats_loessUpdateBandwidthInterval(xval, weights, i, bandwidthInterval);
}
var ileft = bandwidthInterval[0],
iright = bandwidthInterval[1];
// Compute the point of the bandwidth interval that is
// farthest from x
var edge = (xval[i] - xval[ileft]) > (xval[iright] - xval[i]) ? ileft : iright;
// Compute a least-squares linear fit weighted by
// the product of robustness weights and the tricube
// weight function.
// See http://en.wikipedia.org/wiki/Linear_regression
// (section "Univariate linear case")
// and http://en.wikipedia.org/wiki/Weighted_least_squares
// (section "Weighted least squares")
var sumWeights = 0,
sumX = 0,
sumXSquared = 0,
sumY = 0,
sumXY = 0,
denom = Math.abs(1 / (xval[edge] - x));
for (var k = ileft; k <= iright; ++k) {
var xk = xval[k],
yk = yval[k],
dist = k < i ? x - xk : xk - x,
w = science_stats_loessTricube(dist * denom) * robustnessWeights[k] * weights[k],
xkw = xk * w;
sumWeights += w;
sumX += xkw;
sumXSquared += xk * xkw;
sumY += yk * w;
sumXY += yk * xkw;
}
var meanX = sumX / sumWeights,
meanY = sumY / sumWeights,
meanXY = sumXY / sumWeights,
meanXSquared = sumXSquared / sumWeights;
var beta = (Math.sqrt(Math.abs(meanXSquared - meanX * meanX)) < accuracy)
? 0 : ((meanXY - meanX * meanY) / (meanXSquared - meanX * meanX));
var alpha = meanY - beta * meanX;
res[i] = beta * x + alpha;
residuals[i] = Math.abs(yval[i] - res[i]);
}
// No need to recompute the robustness weights at the last
// iteration, they won't be needed anymore
if (iter === robustnessIters) {
break;
}
// Recompute the robustness weights.
// Find the median residual.
var sortedResiduals = residuals.slice();
sortedResiduals.sort();
var medianResidual = sortedResiduals[Math.floor(n / 2)];
if (Math.abs(medianResidual) < accuracy)
break;
var arg,
w;
i = -1; while (++i < n) {
arg = residuals[i] / (6 * medianResidual);
robustnessWeights[i] = (arg >= 1) ? 0 : ((w = 1 - arg * arg) * w);
}
}
return res;
}
smooth.bandwidth = function(x) {
if (!arguments.length) return x;
bandwidth = x;
return smooth;
};
smooth.robustnessIterations = function(x) {
if (!arguments.length) return x;
robustnessIters = x;
return smooth;
};
smooth.accuracy = function(x) {
if (!arguments.length) return x;
accuracy = x;
return smooth;
};
return smooth;
};
function science_stats_loessFiniteReal(values) {
var n = values.length,
i = -1;
while (++i < n) if (!isFinite(values[i])) return false;
return true;
}
function science_stats_loessStrictlyIncreasing(xval) {
var n = xval.length,
i = 0;
while (++i < n) if (xval[i - 1] >= xval[i]) return false;
return true;
}
// Compute the tricube weight function.
// http://en.wikipedia.org/wiki/Local_regression#Weight_function
function science_stats_loessTricube(x) {
return (x = 1 - x * x * x) * x * x;
}
// Given an index interval into xval that embraces a certain number of
// points closest to xval[i-1], update the interval so that it embraces
// the same number of points closest to xval[i], ignoring zero weights.
function science_stats_loessUpdateBandwidthInterval(
xval, weights, i, bandwidthInterval) {
var left = bandwidthInterval[0],
right = bandwidthInterval[1];
// The right edge should be adjusted if the next point to the right
// is closer to xval[i] than the leftmost point of the current interval
var nextRight = science_stats_loessNextNonzero(weights, right);
if ((nextRight < xval.length) && (xval[nextRight] - xval[i]) < (xval[i] - xval[left])) {
var nextLeft = science_stats_loessNextNonzero(weights, left);
bandwidthInterval[0] = nextLeft;
bandwidthInterval[1] = nextRight;
}
}
function science_stats_loessNextNonzero(weights, i) {
var j = i + 1;
while (j < weights.length && weights[j] === 0) j++;
return j;
}
Series id Year Period Value
LNS14000000 1948 M01 3.4
LNS14000000 1948 M02 3.8
LNS14000000 1948 M03 4
LNS14000000 1948 M04 3.9
LNS14000000 1948 M05 3.5
LNS14000000 1948 M06 3.6
LNS14000000 1948 M07 3.6
LNS14000000 1948 M08 3.9
LNS14000000 1948 M09 3.8
LNS14000000 1948 M10 3.7
LNS14000000 1948 M11 3.8
LNS14000000 1948 M12 4
LNS14000000 1949 M01 4.3
LNS14000000 1949 M02 4.7
LNS14000000 1949 M03 5
LNS14000000 1949 M04 5.3
LNS14000000 1949 M05 6.1
LNS14000000 1949 M06 6.2
LNS14000000 1949 M07 6.7
LNS14000000 1949 M08 6.8
LNS14000000 1949 M09 6.6
LNS14000000 1949 M10 7.9
LNS14000000 1949 M11 6.4
LNS14000000 1949 M12 6.6
LNS14000000 1950 M01 6.5
LNS14000000 1950 M02 6.4
LNS14000000 1950 M03 6.3
LNS14000000 1950 M04 5.8
LNS14000000 1950 M05 5.5
LNS14000000 1950 M06 5.4
LNS14000000 1950 M07 5
LNS14000000 1950 M08 4.5
LNS14000000 1950 M09 4.4
LNS14000000 1950 M10 4.2
LNS14000000 1950 M11 4.2
LNS14000000 1950 M12 4.3
LNS14000000 1951 M01 3.7
LNS14000000 1951 M02 3.4
LNS14000000 1951 M03 3.4
LNS14000000 1951 M04 3.1
LNS14000000 1951 M05 3
LNS14000000 1951 M06 3.2
LNS14000000 1951 M07 3.1
LNS14000000 1951 M08 3.1
LNS14000000 1951 M09 3.3
LNS14000000 1951 M10 3.5
LNS14000000 1951 M11 3.5
LNS14000000 1951 M12 3.1
LNS14000000 1952 M01 3.2
LNS14000000 1952 M02 3.1
LNS14000000 1952 M03 2.9
LNS14000000 1952 M04 2.9
LNS14000000 1952 M05 3
LNS14000000 1952 M06 3
LNS14000000 1952 M07 3.2
LNS14000000 1952 M08 3.4
LNS14000000 1952 M09 3.1
LNS14000000 1952 M10 3
LNS14000000 1952 M11 2.8
LNS14000000 1952 M12 2.7
LNS14000000 1953 M01 2.9
LNS14000000 1953 M02 2.6
LNS14000000 1953 M03 2.6
LNS14000000 1953 M04 2.7
LNS14000000 1953 M05 2.5
LNS14000000 1953 M06 2.5
LNS14000000 1953 M07 2.6
LNS14000000 1953 M08 2.7
LNS14000000 1953 M09 2.9
LNS14000000 1953 M10 3.1
LNS14000000 1953 M11 3.5
LNS14000000 1953 M12 4.5
LNS14000000 1954 M01 4.9
LNS14000000 1954 M02 5.2
LNS14000000 1954 M03 5.7
LNS14000000 1954 M04 5.9
LNS14000000 1954 M05 5.9
LNS14000000 1954 M06 5.6
LNS14000000 1954 M07 5.8
LNS14000000 1954 M08 6
LNS14000000 1954 M09 6.1
LNS14000000 1954 M10 5.7
LNS14000000 1954 M11 5.3
LNS14000000 1954 M12 5
LNS14000000 1955 M01 4.9
LNS14000000 1955 M02 4.7
LNS14000000 1955 M03 4.6
LNS14000000 1955 M04 4.7
LNS14000000 1955 M05 4.3
LNS14000000 1955 M06 4.2
LNS14000000 1955 M07 4
LNS14000000 1955 M08 4.2
LNS14000000 1955 M09 4.1
LNS14000000 1955 M10 4.3
LNS14000000 1955 M11 4.2
LNS14000000 1955 M12 4.2
LNS14000000 1956 M01 4
LNS14000000 1956 M02 3.9
LNS14000000 1956 M03 4.2
LNS14000000 1956 M04 4
LNS14000000 1956 M05 4.3
LNS14000000 1956 M06 4.3
LNS14000000 1956 M07 4.4
LNS14000000 1956 M08 4.1
LNS14000000 1956 M09 3.9
LNS14000000 1956 M10 3.9
LNS14000000 1956 M11 4.3
LNS14000000 1956 M12 4.2
LNS14000000 1957 M01 4.2
LNS14000000 1957 M02 3.9
LNS14000000 1957 M03 3.7
LNS14000000 1957 M04 3.9
LNS14000000 1957 M05 4.1
LNS14000000 1957 M06 4.3
LNS14000000 1957 M07 4.2
LNS14000000 1957 M08 4.1
LNS14000000 1957 M09 4.4
LNS14000000 1957 M10 4.5
LNS14000000 1957 M11 5.1
LNS14000000 1957 M12 5.2
LNS14000000 1958 M01 5.8
LNS14000000 1958 M02 6.4
LNS14000000 1958 M03 6.7
LNS14000000 1958 M04 7.4
LNS14000000 1958 M05 7.4
LNS14000000 1958 M06 7.3
LNS14000000 1958 M07 7.5
LNS14000000 1958 M08 7.4
LNS14000000 1958 M09 7.1
LNS14000000 1958 M10 6.7
LNS14000000 1958 M11 6.2
LNS14000000 1958 M12 6.2
LNS14000000 1959 M01 6
LNS14000000 1959 M02 5.9
LNS14000000 1959 M03 5.6
LNS14000000 1959 M04 5.2
LNS14000000 1959 M05 5.1
LNS14000000 1959 M06 5
LNS14000000 1959 M07 5.1
LNS14000000 1959 M08 5.2
LNS14000000 1959 M09 5.5
LNS14000000 1959 M10 5.7
LNS14000000 1959 M11 5.8
LNS14000000 1959 M12 5.3
LNS14000000 1960 M01 5.2
LNS14000000 1960 M02 4.8
LNS14000000 1960 M03 5.4
LNS14000000 1960 M04 5.2
LNS14000000 1960 M05 5.1
LNS14000000 1960 M06 5.4
LNS14000000 1960 M07 5.5
LNS14000000 1960 M08 5.6
LNS14000000 1960 M09 5.5
LNS14000000 1960 M10 6.1
LNS14000000 1960 M11 6.1
LNS14000000 1960 M12 6.6
LNS14000000 1961 M01 6.6
LNS14000000 1961 M02 6.9
LNS14000000 1961 M03 6.9
LNS14000000 1961 M04 7
LNS14000000 1961 M05 7.1
LNS14000000 1961 M06 6.9
LNS14000000 1961 M07 7
LNS14000000 1961 M08 6.6
LNS14000000 1961 M09 6.7
LNS14000000 1961 M10 6.5
LNS14000000 1961 M11 6.1
LNS14000000 1961 M12 6
LNS14000000 1962 M01 5.8
LNS14000000 1962 M02 5.5
LNS14000000 1962 M03 5.6
LNS14000000 1962 M04 5.6
LNS14000000 1962 M05 5.5
LNS14000000 1962 M06 5.5
LNS14000000 1962 M07 5.4
LNS14000000 1962 M08 5.7
LNS14000000 1962 M09 5.6
LNS14000000 1962 M10 5.4
LNS14000000 1962 M11 5.7
LNS14000000 1962 M12 5.5
LNS14000000 1963 M01 5.7
LNS14000000 1963 M02 5.9
LNS14000000 1963 M03 5.7
LNS14000000 1963 M04 5.7
LNS14000000 1963 M05 5.9
LNS14000000 1963 M06 5.6
LNS14000000 1963 M07 5.6
LNS14000000 1963 M08 5.4
LNS14000000 1963 M09 5.5
LNS14000000 1963 M10 5.5
LNS14000000 1963 M11 5.7
LNS14000000 1963 M12 5.5
LNS14000000 1964 M01 5.6
LNS14000000 1964 M02 5.4
LNS14000000 1964 M03 5.4
LNS14000000 1964 M04 5.3
LNS14000000 1964 M05 5.1
LNS14000000 1964 M06 5.2
LNS14000000 1964 M07 4.9
LNS14000000 1964 M08 5
LNS14000000 1964 M09 5.1
LNS14000000 1964 M10 5.1
LNS14000000 1964 M11 4.8
LNS14000000 1964 M12 5
LNS14000000 1965 M01 4.9
LNS14000000 1965 M02 5.1
LNS14000000 1965 M03 4.7
LNS14000000 1965 M04 4.8
LNS14000000 1965 M05 4.6
LNS14000000 1965 M06 4.6
LNS14000000 1965 M07 4.4
LNS14000000 1965 M08 4.4
LNS14000000 1965 M09 4.3
LNS14000000 1965 M10 4.2
LNS14000000 1965 M11 4.1
LNS14000000 1965 M12 4
LNS14000000 1966 M01 4
LNS14000000 1966 M02 3.8
LNS14000000 1966 M03 3.8
LNS14000000 1966 M04 3.8
LNS14000000 1966 M05 3.9
LNS14000000 1966 M06 3.8
LNS14000000 1966 M07 3.8
LNS14000000 1966 M08 3.8
LNS14000000 1966 M09 3.7
LNS14000000 1966 M10 3.7
LNS14000000 1966 M11 3.6
LNS14000000 1966 M12 3.8
LNS14000000 1967 M01 3.9
LNS14000000 1967 M02 3.8
LNS14000000 1967 M03 3.8
LNS14000000 1967 M04 3.8
LNS14000000 1967 M05 3.8
LNS14000000 1967 M06 3.9
LNS14000000 1967 M07 3.8
LNS14000000 1967 M08 3.8
LNS14000000 1967 M09 3.8
LNS14000000 1967 M10 4
LNS14000000 1967 M11 3.9
LNS14000000 1967 M12 3.8
LNS14000000 1968 M01 3.7
LNS14000000 1968 M02 3.8
LNS14000000 1968 M03 3.7
LNS14000000 1968 M04 3.5
LNS14000000 1968 M05 3.5
LNS14000000 1968 M06 3.7
LNS14000000 1968 M07 3.7
LNS14000000 1968 M08 3.5
LNS14000000 1968 M09 3.4
LNS14000000 1968 M10 3.4
LNS14000000 1968 M11 3.4
LNS14000000 1968 M12 3.4
LNS14000000 1969 M01 3.4
LNS14000000 1969 M02 3.4
LNS14000000 1969 M03 3.4
LNS14000000 1969 M04 3.4
LNS14000000 1969 M05 3.4
LNS14000000 1969 M06 3.5
LNS14000000 1969 M07 3.5
LNS14000000 1969 M08 3.5
LNS14000000 1969 M09 3.7
LNS14000000 1969 M10 3.7
LNS14000000 1969 M11 3.5
LNS14000000 1969 M12 3.5
LNS14000000 1970 M01 3.9
LNS14000000 1970 M02 4.2
LNS14000000 1970 M03 4.4
LNS14000000 1970 M04 4.6
LNS14000000 1970 M05 4.8
LNS14000000 1970 M06 4.9
LNS14000000 1970 M07 5
LNS14000000 1970 M08 5.1
LNS14000000 1970 M09 5.4
LNS14000000 1970 M10 5.5
LNS14000000 1970 M11 5.9
LNS14000000 1970 M12 6.1
LNS14000000 1971 M01 5.9
LNS14000000 1971 M02 5.9
LNS14000000 1971 M03 6
LNS14000000 1971 M04 5.9
LNS14000000 1971 M05 5.9
LNS14000000 1971 M06 5.9
LNS14000000 1971 M07 6
LNS14000000 1971 M08 6.1
LNS14000000 1971 M09 6
LNS14000000 1971 M10 5.8
LNS14000000 1971 M11 6
LNS14000000 1971 M12 6
LNS14000000 1972 M01 5.8
LNS14000000 1972 M02 5.7
LNS14000000 1972 M03 5.8
LNS14000000 1972 M04 5.7
LNS14000000 1972 M05 5.7
LNS14000000 1972 M06 5.7
LNS14000000 1972 M07 5.6
LNS14000000 1972 M08 5.6
LNS14000000 1972 M09 5.5
LNS14000000 1972 M10 5.6
LNS14000000 1972 M11 5.3
LNS14000000 1972 M12 5.2
LNS14000000 1973 M01 4.9
LNS14000000 1973 M02 5
LNS14000000 1973 M03 4.9
LNS14000000 1973 M04 5
LNS14000000 1973 M05 4.9
LNS14000000 1973 M06 4.9
LNS14000000 1973 M07 4.8
LNS14000000 1973 M08 4.8
LNS14000000 1973 M09 4.8
LNS14000000 1973 M10 4.6
LNS14000000 1973 M11 4.8
LNS14000000 1973 M12 4.9
LNS14000000 1974 M01 5.1
LNS14000000 1974 M02 5.2
LNS14000000 1974 M03 5.1
LNS14000000 1974 M04 5.1
LNS14000000 1974 M05 5.1
LNS14000000 1974 M06 5.4
LNS14000000 1974 M07 5.5
LNS14000000 1974 M08 5.5
LNS14000000 1974 M09 5.9
LNS14000000 1974 M10 6
LNS14000000 1974 M11 6.6
LNS14000000 1974 M12 7.2
LNS14000000 1975 M01 8.1
LNS14000000 1975 M02 8.1
LNS14000000 1975 M03 8.6
LNS14000000 1975 M04 8.8
LNS14000000 1975 M05 9
LNS14000000 1975 M06 8.8
LNS14000000 1975 M07 8.6
LNS14000000 1975 M08 8.4
LNS14000000 1975 M09 8.4
LNS14000000 1975 M10 8.4
LNS14000000 1975 M11 8.3
LNS14000000 1975 M12 8.2
LNS14000000 1976 M01 7.9
LNS14000000 1976 M02 7.7
LNS14000000 1976 M03 7.6
LNS14000000 1976 M04 7.7
LNS14000000 1976 M05 7.4
LNS14000000 1976 M06 7.6
LNS14000000 1976 M07 7.8
LNS14000000 1976 M08 7.8
LNS14000000 1976 M09 7.6
LNS14000000 1976 M10 7.7
LNS14000000 1976 M11 7.8
LNS14000000 1976 M12 7.8
LNS14000000 1977 M01 7.5
LNS14000000 1977 M02 7.6
LNS14000000 1977 M03 7.4
LNS14000000 1977 M04 7.2
LNS14000000 1977 M05 7
LNS14000000 1977 M06 7.2
LNS14000000 1977 M07 6.9
LNS14000000 1977 M08 7
LNS14000000 1977 M09 6.8
LNS14000000 1977 M10 6.8
LNS14000000 1977 M11 6.8
LNS14000000 1977 M12 6.4
LNS14000000 1978 M01 6.4
LNS14000000 1978 M02 6.3
LNS14000000 1978 M03 6.3
LNS14000000 1978 M04 6.1
LNS14000000 1978 M05 6
LNS14000000 1978 M06 5.9
LNS14000000 1978 M07 6.2
LNS14000000 1978 M08 5.9
LNS14000000 1978 M09 6
LNS14000000 1978 M10 5.8
LNS14000000 1978 M11 5.9
LNS14000000 1978 M12 6
LNS14000000 1979 M01 5.9
LNS14000000 1979 M02 5.9
LNS14000000 1979 M03 5.8
LNS14000000 1979 M04 5.8
LNS14000000 1979 M05 5.6
LNS14000000 1979 M06 5.7
LNS14000000 1979 M07 5.7
LNS14000000 1979 M08 6
LNS14000000 1979 M09 5.9
LNS14000000 1979 M10 6
LNS14000000 1979 M11 5.9
LNS14000000 1979 M12 6
LNS14000000 1980 M01 6.3
LNS14000000 1980 M02 6.3
LNS14000000 1980 M03 6.3
LNS14000000 1980 M04 6.9
LNS14000000 1980 M05 7.5
LNS14000000 1980 M06 7.6
LNS14000000 1980 M07 7.8
LNS14000000 1980 M08 7.7
LNS14000000 1980 M09 7.5
LNS14000000 1980 M10 7.5
LNS14000000 1980 M11 7.5
LNS14000000 1980 M12 7.2
LNS14000000 1981 M01 7.5
LNS14000000 1981 M02 7.4
LNS14000000 1981 M03 7.4
LNS14000000 1981 M04 7.2
LNS14000000 1981 M05 7.5
LNS14000000 1981 M06 7.5
LNS14000000 1981 M07 7.2
LNS14000000 1981 M08 7.4
LNS14000000 1981 M09 7.6
LNS14000000 1981 M10 7.9
LNS14000000 1981 M11 8.3
LNS14000000 1981 M12 8.5
LNS14000000 1982 M01 8.6
LNS14000000 1982 M02 8.9
LNS14000000 1982 M03 9
LNS14000000 1982 M04 9.3
LNS14000000 1982 M05 9.4
LNS14000000 1982 M06 9.6
LNS14000000 1982 M07 9.8
LNS14000000 1982 M08 9.8
LNS14000000 1982 M09 10.1
LNS14000000 1982 M10 10.4
LNS14000000 1982 M11 10.8
LNS14000000 1982 M12 10.8
LNS14000000 1983 M01 10.4
LNS14000000 1983 M02 10.4
LNS14000000 1983 M03 10.3
LNS14000000 1983 M04 10.2
LNS14000000 1983 M05 10.1
LNS14000000 1983 M06 10.1
LNS14000000 1983 M07 9.4
LNS14000000 1983 M08 9.5
LNS14000000 1983 M09 9.2
LNS14000000 1983 M10 8.8
LNS14000000 1983 M11 8.5
LNS14000000 1983 M12 8.3
LNS14000000 1984 M01 8
LNS14000000 1984 M02 7.8
LNS14000000 1984 M03 7.8
LNS14000000 1984 M04 7.7
LNS14000000 1984 M05 7.4
LNS14000000 1984 M06 7.2
LNS14000000 1984 M07 7.5
LNS14000000 1984 M08 7.5
LNS14000000 1984 M09 7.3
LNS14000000 1984 M10 7.4
LNS14000000 1984 M11 7.2
LNS14000000 1984 M12 7.3
LNS14000000 1985 M01 7.3
LNS14000000 1985 M02 7.2
LNS14000000 1985 M03 7.2
LNS14000000 1985 M04 7.3
LNS14000000 1985 M05 7.2
LNS14000000 1985 M06 7.4
LNS14000000 1985 M07 7.4
LNS14000000 1985 M08 7.1
LNS14000000 1985 M09 7.1
LNS14000000 1985 M10 7.1
LNS14000000 1985 M11 7
LNS14000000 1985 M12 7
LNS14000000 1986 M01 6.7
LNS14000000 1986 M02 7.2
LNS14000000 1986 M03 7.2
LNS14000000 1986 M04 7.1
LNS14000000 1986 M05 7.2
LNS14000000 1986 M06 7.2
LNS14000000 1986 M07 7
LNS14000000 1986 M08 6.9
LNS14000000 1986 M09 7
LNS14000000 1986 M10 7
LNS14000000 1986 M11 6.9
LNS14000000 1986 M12 6.6
LNS14000000 1987 M01 6.6
LNS14000000 1987 M02 6.6
LNS14000000 1987 M03 6.6
LNS14000000 1987 M04 6.3
LNS14000000 1987 M05 6.3
LNS14000000 1987 M06 6.2
LNS14000000 1987 M07 6.1
LNS14000000 1987 M08 6
LNS14000000 1987 M09 5.9
LNS14000000 1987 M10 6
LNS14000000 1987 M11 5.8
LNS14000000 1987 M12 5.7
LNS14000000 1988 M01 5.7
LNS14000000 1988 M02 5.7
LNS14000000 1988 M03 5.7
LNS14000000 1988 M04 5.4
LNS14000000 1988 M05 5.6
LNS14000000 1988 M06 5.4
LNS14000000 1988 M07 5.4
LNS14000000 1988 M08 5.6
LNS14000000 1988 M09 5.4
LNS14000000 1988 M10 5.4
LNS14000000 1988 M11 5.3
LNS14000000 1988 M12 5.3
LNS14000000 1989 M01 5.4
LNS14000000 1989 M02 5.2
LNS14000000 1989 M03 5
LNS14000000 1989 M04 5.2
LNS14000000 1989 M05 5.2
LNS14000000 1989 M06 5.3
LNS14000000 1989 M07 5.2
LNS14000000 1989 M08 5.2
LNS14000000 1989 M09 5.3
LNS14000000 1989 M10 5.3
LNS14000000 1989 M11 5.4
LNS14000000 1989 M12 5.4
LNS14000000 1990 M01 5.4
LNS14000000 1990 M02 5.3
LNS14000000 1990 M03 5.2
LNS14000000 1990 M04 5.4
LNS14000000 1990 M05 5.4
LNS14000000 1990 M06 5.2
LNS14000000 1990 M07 5.5
LNS14000000 1990 M08 5.7
LNS14000000 1990 M09 5.9
LNS14000000 1990 M10 5.9
LNS14000000 1990 M11 6.2
LNS14000000 1990 M12 6.3
LNS14000000 1991 M01 6.4
LNS14000000 1991 M02 6.6
LNS14000000 1991 M03 6.8
LNS14000000 1991 M04 6.7
LNS14000000 1991 M05 6.9
LNS14000000 1991 M06 6.9
LNS14000000 1991 M07 6.8
LNS14000000 1991 M08 6.9
LNS14000000 1991 M09 6.9
LNS14000000 1991 M10 7
LNS14000000 1991 M11 7
LNS14000000 1991 M12 7.3
LNS14000000 1992 M01 7.3
LNS14000000 1992 M02 7.4
LNS14000000 1992 M03 7.4
LNS14000000 1992 M04 7.4
LNS14000000 1992 M05 7.6
LNS14000000 1992 M06 7.8
LNS14000000 1992 M07 7.7
LNS14000000 1992 M08 7.6
LNS14000000 1992 M09 7.6
LNS14000000 1992 M10 7.3
LNS14000000 1992 M11 7.4
LNS14000000 1992 M12 7.4
LNS14000000 1993 M01 7.3
LNS14000000 1993 M02 7.1
LNS14000000 1993 M03 7
LNS14000000 1993 M04 7.1
LNS14000000 1993 M05 7.1
LNS14000000 1993 M06 7
LNS14000000 1993 M07 6.9
LNS14000000 1993 M08 6.8
LNS14000000 1993 M09 6.7
LNS14000000 1993 M10 6.8
LNS14000000 1993 M11 6.6
LNS14000000 1993 M12 6.5
LNS14000000 1994 M01 6.6
LNS14000000 1994 M02 6.6
LNS14000000 1994 M03 6.5
LNS14000000 1994 M04 6.4
LNS14000000 1994 M05 6.1
LNS14000000 1994 M06 6.1
LNS14000000 1994 M07 6.1
LNS14000000 1994 M08 6
LNS14000000 1994 M09 5.9
LNS14000000 1994 M10 5.8
LNS14000000 1994 M11 5.6
LNS14000000 1994 M12 5.5
LNS14000000 1995 M01 5.6
LNS14000000 1995 M02 5.4
LNS14000000 1995 M03 5.4
LNS14000000 1995 M04 5.8
LNS14000000 1995 M05 5.6
LNS14000000 1995 M06 5.6
LNS14000000 1995 M07 5.7
LNS14000000 1995 M08 5.7
LNS14000000 1995 M09 5.6
LNS14000000 1995 M10 5.5
LNS14000000 1995 M11 5.6
LNS14000000 1995 M12 5.6
LNS14000000 1996 M01 5.6
LNS14000000 1996 M02 5.5
LNS14000000 1996 M03 5.5
LNS14000000 1996 M04 5.6
LNS14000000 1996 M05 5.6
LNS14000000 1996 M06 5.3
LNS14000000 1996 M07 5.5
LNS14000000 1996 M08 5.1
LNS14000000 1996 M09 5.2
LNS14000000 1996 M10 5.2
LNS14000000 1996 M11 5.4
LNS14000000 1996 M12 5.4
LNS14000000 1997 M01 5.3
LNS14000000 1997 M02 5.2
LNS14000000 1997 M03 5.2
LNS14000000 1997 M04 5.1
LNS14000000 1997 M05 4.9
LNS14000000 1997 M06 5
LNS14000000 1997 M07 4.9
LNS14000000 1997 M08 4.8
LNS14000000 1997 M09 4.9
LNS14000000 1997 M10 4.7
LNS14000000 1997 M11 4.6
LNS14000000 1997 M12 4.7
LNS14000000 1998 M01 4.6
LNS14000000 1998 M02 4.6
LNS14000000 1998 M03 4.7
LNS14000000 1998 M04 4.3
LNS14000000 1998 M05 4.4
LNS14000000 1998 M06 4.5
LNS14000000 1998 M07 4.5
LNS14000000 1998 M08 4.5
LNS14000000 1998 M09 4.6
LNS14000000 1998 M10 4.5
LNS14000000 1998 M11 4.4
LNS14000000 1998 M12 4.4
LNS14000000 1999 M01 4.3
LNS14000000 1999 M02 4.4
LNS14000000 1999 M03 4.2
LNS14000000 1999 M04 4.3
LNS14000000 1999 M05 4.2
LNS14000000 1999 M06 4.3
LNS14000000 1999 M07 4.3
LNS14000000 1999 M08 4.2
LNS14000000 1999 M09 4.2
LNS14000000 1999 M10 4.1
LNS14000000 1999 M11 4.1
LNS14000000 1999 M12 4
LNS14000000 2000 M01 4
LNS14000000 2000 M02 4.1
LNS14000000 2000 M03 4
LNS14000000 2000 M04 3.8
LNS14000000 2000 M05 4
LNS14000000 2000 M06 4
LNS14000000 2000 M07 4
LNS14000000 2000 M08 4.1
LNS14000000 2000 M09 3.9
LNS14000000 2000 M10 3.9
LNS14000000 2000 M11 3.9
LNS14000000 2000 M12 3.9
LNS14000000 2001 M01 4.2
LNS14000000 2001 M02 4.2
LNS14000000 2001 M03 4.3
LNS14000000 2001 M04 4.4
LNS14000000 2001 M05 4.3
LNS14000000 2001 M06 4.5
LNS14000000 2001 M07 4.6
LNS14000000 2001 M08 4.9
LNS14000000 2001 M09 5
LNS14000000 2001 M10 5.3
LNS14000000 2001 M11 5.5
LNS14000000 2001 M12 5.7
LNS14000000 2002 M01 5.7
LNS14000000 2002 M02 5.7
LNS14000000 2002 M03 5.7
LNS14000000 2002 M04 5.9
LNS14000000 2002 M05 5.8
LNS14000000 2002 M06 5.8
LNS14000000 2002 M07 5.8
LNS14000000 2002 M08 5.7
LNS14000000 2002 M09 5.7
LNS14000000 2002 M10 5.7
LNS14000000 2002 M11 5.9
LNS14000000 2002 M12 6
LNS14000000 2003 M01 5.8
LNS14000000 2003 M02 5.9
LNS14000000 2003 M03 5.9
LNS14000000 2003 M04 6
LNS14000000 2003 M05 6.1
LNS14000000 2003 M06 6.3
LNS14000000 2003 M07 6.2
LNS14000000 2003 M08 6.1
LNS14000000 2003 M09 6.1
LNS14000000 2003 M10 6
LNS14000000 2003 M11 5.8
LNS14000000 2003 M12 5.7
LNS14000000 2004 M01 5.7
LNS14000000 2004 M02 5.6
LNS14000000 2004 M03 5.8
LNS14000000 2004 M04 5.6
LNS14000000 2004 M05 5.6
LNS14000000 2004 M06 5.6
LNS14000000 2004 M07 5.5
LNS14000000 2004 M08 5.4
LNS14000000 2004 M09 5.4
LNS14000000 2004 M10 5.5
LNS14000000 2004 M11 5.4
LNS14000000 2004 M12 5.4
LNS14000000 2005 M01 5.3
LNS14000000 2005 M02 5.4
LNS14000000 2005 M03 5.2
LNS14000000 2005 M04 5.2
LNS14000000 2005 M05 5.1
LNS14000000 2005 M06 5
LNS14000000 2005 M07 5
LNS14000000 2005 M08 4.9
LNS14000000 2005 M09 5
LNS14000000 2005 M10 5
LNS14000000 2005 M11 5
LNS14000000 2005 M12 4.9
LNS14000000 2006 M01 4.7
LNS14000000 2006 M02 4.8
LNS14000000 2006 M03 4.7
LNS14000000 2006 M04 4.7
LNS14000000 2006 M05 4.6
LNS14000000 2006 M06 4.6
LNS14000000 2006 M07 4.7
LNS14000000 2006 M08 4.7
LNS14000000 2006 M09 4.5
LNS14000000 2006 M10 4.4
LNS14000000 2006 M11 4.5
LNS14000000 2006 M12 4.4
LNS14000000 2007 M01 4.6
LNS14000000 2007 M02 4.5
LNS14000000 2007 M03 4.4
LNS14000000 2007 M04 4.5
LNS14000000 2007 M05 4.4
LNS14000000 2007 M06 4.6
LNS14000000 2007 M07 4.6
LNS14000000 2007 M08 4.6
LNS14000000 2007 M09 4.7
LNS14000000 2007 M10 4.7
LNS14000000 2007 M11 4.7
LNS14000000 2007 M12 5
LNS14000000 2008 M01 5
LNS14000000 2008 M02 4.8
LNS14000000 2008 M03 5.1
LNS14000000 2008 M04 5
LNS14000000 2008 M05 5.4
LNS14000000 2008 M06 5.5
LNS14000000 2008 M07 5.8
LNS14000000 2008 M08 6.1
LNS14000000 2008 M09 6.2
LNS14000000 2008 M10 6.6
LNS14000000 2008 M11 6.9
LNS14000000 2008 M12 7.4
LNS14000000 2009 M01 7.7
LNS14000000 2009 M02 8.2
LNS14000000 2009 M03 8.6
LNS14000000 2009 M04 8.9
LNS14000000 2009 M05 9.4
LNS14000000 2009 M06 9.5
LNS14000000 2009 M07 9.4
LNS14000000 2009 M08 9.7
LNS14000000 2009 M09 9.8
LNS14000000 2009 M10 10.1
LNS14000000 2009 M11 10
LNS14000000 2009 M12 10
LNS14000000 2010 M01 9.7
LNS14000000 2010 M02 9.7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment