by Jess Behrens
© 2005-2018 Jess Behrens, All Rights Reserved
To develop the populations I described in my last post, I first gather some basic season statistics. I’m not going to describe in detail which statistics I use here, or how I combine them to produce the vector (table) which is transformed into the network. What I will say is that everything I use is readily & publicly available.
After gathering these statistics, I standardize them using a proprietary method and, subsequently, transform them using a set of equations I wrote. This results in 47 different ‘indexes’ or combination of the standardized base statistics. Teams in each tournament are then ranked 1-68 (or 1-65 for 2005-2010) using these indexes. Thus, every team in the tournament has a rank in every index and year.
Converting these rankings into the ‘Win’ & ‘Loss’ network, involves writing SQL queries using a maximum of 2 indexes which cover contiguous ranges. The quality of each query is then evaluated by calculating the Negative and Positive likelihood ratios (NLR & PLR) from the query's sensitivity and specificity. NLR & PLR are then fed into the AIC equation and an aggregate value that combines output from both the NLR & PLR AIC calculations is developed.
I’ll walk you through an example that should illustrate both the usefulness of the method and the power of the indexes. Figure 1 shows one of the Loss network queries, combining Index 2, Rank 43-51 and Index 18, Rank 60-68.
Figure 1. Loss Network Query Example
As you can see, it includes 11 teams seeded 8 and higher who lost in the first round and 1 team that won at least one game. Since only results from 2005 to 2017 were used in determining query strength, this query would have a weight of 7.07.
To determine the query weight, you first have to calculate the sensitivity and specificity, both of which are defined here. Since there were 109 teams seeded 1-8 who lost in the first round between 2005 and 2017, 11 of which are in this query, box A is 11 and C is 98. The one team in Figure 1 who won at least a game in the tournament makes the value of Box B equal to 1. Box D, then, is 306, or the number of teams seeded from 1-8 who won at least a game minus 1. Figure 2 shows how this works in a 2 by 2 table.
Figure 2. Example of a Two by Two Sensitivity & Specificity Table
These values are then used to calculate the sensitivity and specificity, and subsequently the Negative and Positive Likelihood Ratios (NLR & PLR). Sensitivity is defined as [a / (a + c)], or 11 / 109 = 0.101, from figure 2. Specificity is [d / (b + d)], or 306 / 307 = 0.997, from figure 2.
The Negative Likelihood Ratio (NLR), or the probability of getting a negative test result given the presence of the observation, is [(1 - Sensitivity) / Specificity], or (1 - 0.101) / 0.997 = 0.902.
The Positive Likelihood Ratio (PLR), which is the ratio between the probability of a positive test result given the presence of the observation and the probability of a positive test result given the absence of the observation, is [Sensitivity / (1 - Specificity)], or 0.101 / (1 - 0.997) = 30.982.
Placing these two Likelihood Ratios in the AIC equation (k=2, the number of indexes) yields -2.867 or the PLR & 4.206 for the NLR. Combining these two separate measures yields 7.07 when you subtract PLR AIC from NLR AIC. The AIC was chosen because of its ability to adjust for queries that include 3 (k=3) or 4 (k=4) terms, if necessary.
Query Weight = NLR AIC - PLR AIC = 4.206 - -2.867 = 7.073
Only queries with a weight that exceeds four are included in the Win & Loss networks. Another query weight, the double specificity weight (I'm really bad at naming things), is also calculated and used. What my work shows is that virtually all of the really 'good' teams, defined here as Elite 8 and better, fall in small, tightly defined ranges. Since the tournament is 6 rounds (7 if you play in the first 4), in order to model the entire tournament using one network, it's imparative to develop multiple network weights. The double specificity is just:
Double Specificity (DS) = PLR / [(1-Specificity) / Sensitivity]
DS is used to cut through the multiple rounds and is only calculated for queries that have a query weight of 4 or more. These highly specific queries pull the teams within them closer together at a rate that is more rapid than the query weight. What this does is wire the network differently, giving those teams that fall in these highly specific queries a much higher Betweenness Centrality. The DS for the above is example is 13.734.
Figures 3-5 illustrate how tournament results line up in the indexes across tournament years. Figure 5 is included to demonstrate how all of this applies to that amazing performance by UMBC against Virginia. Don't worry about the '9999' - that's a flag I use to keep the current years teams out of the calculations. By the way, go ahead and look up UCF in 2005. They lost by 6 to the defending champions, UConn, & trimmed a 19 point deficit to 4 late in the game.
Figure 3. Losing 2 Seeds - Index 5, 63-63; 44, 10-10
Figure 4. Tournament Winners - Index 16, 55-57; 44, 4-4
Figure 5. Win Query Network - Including Two 2018 Teams - Index 11, 14-21; Index 43, 34-37
These are three of thousands of queries used to construct the 'Win' & 'Loss' networks. All told, there are 6,438 queries, 3,011 'Loss' queries & 3,427 'Win' queries, used in constructing the networks. Teams included in a query are linked together using the weight. Should teams co-occur in multiple queries, only the largest weight is used in analyzing the network. Every team from 2005 to 2017 is included multiple times in each network. Finally, all weights are converted into their Bayesian equivalents before the network centralities are calculated.
That's a brief, math-lite explanation of how I construct the networks. Next, I will describe the math behind the Evolutionary Game Theory simulations before moving on to describe some of the results!