Skip to content

Commit 1e96c80

Browse files
author
Sean Abu Wilson
committed
updates
1 parent 884b88d commit 1e96c80

8 files changed

+1604
-0
lines changed

_posts/2019-04-04_Ranking_Ever_Year_ofrMarch_Madness _posts/2019-04-04_Ranking_Ever_Year_of_March_Madness

+7
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,19 @@ This scoring format takes into consideration the likelihood of each upset, accor
2121

2222
So where does the 2018 NCAA Tournament rank in terms of ‘Madness’? It comes in third with a score of 135 points, behind 2014 (142 points) and 2013 (138 points).
2323

24+
{% include stack_bar.html %}
25+
2426
In 2014, the tournament started off relatively average with a first round score of 46 points, about 5 more than the average. But as the 8th-seeded Kentucky Wildcats and the 7th-seeded UConn Huskies marched towards the finals – the largest average seed of any championship game – that year’s score rose to the top. The second “maddest” tournament, in 2013, unfolded in a completely different manner. The underdogs that year racked up 105 points through the first two rounds – the most ever – but the #1 seeded Louisville Cardinals won the championship that year, preventing it from being the craziest ever. The least chaotic tournament ever was in 2007 when #1 Florida beat fellow #1 seed Ohio State, and the total upset score was 27. There were only 13 games in which a the winning seed was the expected winner, and eight of these "upsets" were by teams ranked only one seed lower than their opponent. The biggest Cinderella that year was #7-seed UNLV, who made it to the Sweet Sixteen. 30 other tournaments had a higher upset score in just the first round than 2007 had for the entire tournament. The next lowest year was 1995, which had a upset score that was 2.5 times higher than 2007.
2527

2628
Looking at the heatmap below you can see how tournaments developed through the rounds. The darker red square show rounds where there was a higher upset score compared to the same round for all other years. Conversely, the darker blue squares highlight rounds where the upset score is lower compared to the same round for all other years.
2729

30+
![Heatmap Comparing Upset Scores for each Round](http://www.seanabu.com/img/MM_heatmap.png)
31+
2832
Who has been the biggest Cinderella of all time? That title remains with the 1985 Villanova Wildcats. As the lowest seed (#8) to ever win a championship, their tournament run earned a score of 35, which beats out the four #11 seeds (1985 LSU, 2006 George Mason, 2011 VCU, and 2018 Loyola-Chicago) who scored 32 by making it to the Final Four.
2933

34+
![Heatmap Comparing Upset Scores for Each Round](http://www.seanabu.com/img/MM_rolling_average.png)
35+
36+
3037
It is easy to look at the upset scores over the past decade and believe there is an upward trend. Some might use these recent scores as evidence that there is more parity in college basketball or argue that the committee is incorrectly seeding the teams to create more madness. Looking at the trendline of the scores ever since the tournament expanded to 64 teams, we see this could be more of a cyclical ebb and flow and not overall change in the college basketball landscape. While this score has no predictive power for future tournaments, it does help give some context around all previous tournaments. So when your co-worker makes some hyperbolic statement about this being the crazy tournament ever, you can tell them, “Well actually…”
3138

3239

chart.html

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<!DOCTYPE html>
2+
<meta charset="utf-8">
3+
<style>
4+
5+
.bar {
6+
fill: steelblue;
7+
}
8+
9+
.bar:hover {
10+
fill: brown;
11+
}
12+
13+
.axis--x path {
14+
display: none;
15+
}
16+
17+
</style>
18+
<svg width="960" height="500"></svg>
19+
<script src="https://d3js.org/d3.v4.min.js"></script>
20+
<script>
21+
22+
var svg = d3.select("svg"),
23+
margin = {top: 20, right: 20, bottom: 30, left: 40},
24+
width = +svg.attr("width") - margin.left - margin.right,
25+
height = +svg.attr("height") - margin.top - margin.bottom;
26+
27+
var x = d3.scaleBand().rangeRound([0, width]).padding(0.1),
28+
y = d3.scaleLinear().rangeRound([height, 0]);
29+
30+
var g = svg.append("g")
31+
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
32+
33+
d3.json("final_results.json", function(d) {
34+
console.log(d)
35+
// d.frequency = +d.frequency;
36+
return d;
37+
}, function(error, data) {
38+
if (error) throw error;
39+
40+
x.domain(data.map(function(d) { return d.Season; }));
41+
y.domain([0, d3.max(data, function(d) { return d.TR6; })]);
42+
43+
g.append("g")
44+
.attr("class", "axis axis--x")
45+
.attr("transform", "translate(0," + height + ")")
46+
.call(d3.axisBottom(x));
47+
48+
g.append("g")
49+
.attr("class", "axis axis--y")
50+
.call(d3.axisLeft(y).ticks(10, "%"))
51+
.append("text")
52+
.attr("transform", "rotate(-90)")
53+
.attr("y", 6)
54+
.attr("dy", "0.71em")
55+
.attr("text-anchor", "end")
56+
.text("Frequency");
57+
58+
g.selectAll(".bar")
59+
.data(data)
60+
.enter().append("rect")
61+
.attr("class", "bar")
62+
.attr("x", function(d) { return x(d.Season); })
63+
.attr("y", function(d) { return y(d.TR6); })
64+
.attr("width", x.bandwidth())
65+
.attr("height", function(d) { return height - y(d.TR6); });
66+
});
67+
68+
</script>

0 commit comments

Comments
 (0)