Game Excitement Index: An In-Depth Exploration


One of the NCAA Men’s Basketball metrics I’ve been fascinated with lately is that of Game Excitement Index. Game Excitement Index (GEI) attempts to quantify how exciting a particular game was after it has been played. Related metrics have been implemented for NFL games by Brian Burke, NBA games by InPredict (Mike Beuoy), and for March Madness by FiveThirtyEight. One can compute GEI for college basketball games using my ncaahoopR package, which I define as follows:

\[ \text{GEI} = \frac{2400}{t}\sum_{i = 2}^n |p_i - p_{i-1}| \] where \(t\) is the length of the game (in seconds), \(n\) is the number of plays in the game, and \(p_i\) is the home team’s win probability on play \(i\) of the game. One can think of GEI as a measure of the length of the win probability curve if it were to be unwound, normalized to the length of a standard regulation game. The reason I choose to normalize the length of games is that I don’t want sloppy “boring” games which simply happen to go to 2 or 3 overtimes to be pegged as more exciting. In general, this small normalization has little effect, as games that go deep into overtime are generally pretty exciting to begin with. Through this article, I hope to explore which games, teams, and conferences have produced the most exciting basketball this season, while showing off how one can use ncaahoopR to answer interesting college basketball questions.

Obtaining the Data

The below code uses ncaahoopR to

  • Get each team’s schedule
  • Compute GEI for each game this season

Note that a complete list of team’s can be found in the ids data frame built into the package.

### Scrape All Schedules
i <- 1
for(team in ids$team) {
  print(paste("Getting Team:", i, " of ", 353))
  schedule <- get_schedule(team) %>%
    filter(date < Sys.Date()) %>%
    mutate("team" = team) 
  if(i == 1) {
    master <- schedule
    master <- rbind(master, schedule)
  i <- i + 1

### Get Unique Game IDs
game_ids <- 
  filter(master, !duplicated(game_id)) %>% 
  pull(game_id) %>% 

### Compute GEI for Each Game
n <- length(game_ids)
df <- data.frame("game_id" = game_ids,
                 "gei" = NA)
for(i in 1:nrow(df)) {
  print(paste("GEI:", i, "of", n))
  df$gei[i] <- game_excitement_index(game_ids[i])
master <- left_join(master, df, by = "game_id")


Below is a histogram of the Game Excitement Index for the 2018-19 season (for all games play-by-play data is avaiable). Through the first 6 weeks of the season, GEI has a mean of roughly 3.6 and standard deviation of about 2.6. GEI appears to follow some sort of Gamma distribution. The distribution is skewed right, with over 62 percent of games registing GEI less than 4.

We can see looking by the plot above that very few games have GEI greater than 10. In fact, 10 is the 99th percentile for GEI, and through 12/21/2018, only 23 games have achieved such a mark. Below are the most exciting games of the season.

St John’sVCU2018-11-20N878614.34
KentuckySeton Hall2018-12-08N838412.49
LouisvilleMichigan State2018-11-27H827811.27
CampbellUNC Wilmington2018-11-06H979311.14
HamptonNorfolk State2018-11-29A899411.10
UMass LowellWagner2018-11-10H888410.86
BYUIllinois State2018-11-28A899210.75
SMUWright State2018-11-21N777610.72
Texas StateUTSA2018-12-01A696810.52
Santa ClaraUSC2018-12-18H1029210.48
Boston CollegeProvidence2018-12-04H9510010.47
E KentuckyNorthern Kentucky2018-12-08H767410.46
LIU BrooklynMilwaukee2018-11-20A879210.44
IonaLong Beach State2018-11-19N858610.32
FairfieldLIU Brooklyn2018-11-13H878910.22
Abil ChristianPacific2018-11-23A737110.04
N IllinoisNorthern Kentucky2018-11-09H858810.01

Let’s take a closer look at the most exciting game of the season, VCU vs. St. John’s, an OT thriller in the Legend’s Classic championship game, during Thanksgiving “Feast Week”. We can make the win probability chart for the game using the function gg_wp_chart(), as follows.

gg_wp_chart(game_id = 401096927, home_col = "black", away_col = "red")

Next, we can look at which teams have the highest and lowest average GEI. Due to the skewed nature of the GEI distribution, it probably makes most sense to rank teams by median GEI. We can also classify games into a few different categories based on their GEI:

  • Heart Pounders: GEI > 8
  • Thrillers: 4 < GEI \(\leq\) 8
  • Average Games: 1 < GEI \(\leq\) 4
  • Duds: GEI < 1

Most Exciting Teams

## `summarise()` ungrouping output (override with `.groups` argument)
San Jose State7.156.279.851.054220
Seton Hall6.465.7912.490.742331
CSU Bakersfield6.075.529.141.771520
Ga Southern5.915.107.961.610830
Arizona State5.894.879.550.562422
Saint Joe’s5.825.318.421.461310
High Point5.745.039.251.152450

Least Exciting Teams

MD-E Shore0.531.315.350.230128
AR-Pine Bluff0.611.215.140.300126
Miss Valley St0.670.831.720.320027
Texas Tech0.682.637.680.260406
Coppin State0.731.458.290.301027
Chicago State0.802.468.190.381317
Alabama State0.841.232.840.310036
Alcorn State0.951.303.070.440055
Virginia Tech0.952.488.450.391125
Georgia Tech0.992.607.250.390314
NC State1.002.528.500.231235
S Carolina St1.001.875.920.390246
UNC Asheville1.012.477.520.340234
Saint Mary’s1.030.981.350.690032

Perhaps not suprisingly, many of the least exciting teams so far are MEAC and SWAC teams, often scheduling buy-games (and getting blown-out) against high-major opponents. Teams like Duke, UVA, and Texas Tech are likely on the list for the same reason–scheduling and destroying many weaker opponents. Duke’s appearance on this list is actually a testament to it’s domiance this season. Even having Kentucky, Texas Tech, Auburn, Indiana, and Gonzaga on it’s non-conference schedule, it’s level of dominance means Duke’s win probability charts flatline early and are marked by low GEI scores. This also shows a limitation of GEI to show what is exciting. Against most opponents, a team like Duke will still be fairly heavily favored when the score is close and as such, won’t be able to wrack up as high of a Game Excitement Index. Perhaps at this stage of the season, GEI is best used to rank mid-major teams, and it would be wise to wait until conference play begins to evalaute high-major teams on this metric.

GEI Game Types by Conference

Most Exciting Game by Date

Finally, one can look at the most exciting game on each day of the season. I got the idea for the below chart from Jordan Sperber’s look at the best ranked games each day per KenPom FanMatch, which seeks to quantify the quality of a game before it is played.

By no means is GEI meant to be a perfect metric, and it might fail to capture important aspects of the game that a given individual might find to be exciting. That being said, I think it does a pretty good job of capturing a lot of what makes games fun to watch, and helps raise awareness of a lot of good mid-major basketball that often flies under the radar. I’ll keep updating these materials as conference play kicks off in the coming weeks to see if/how the metric changes, but for now, we can sit back, relax, and appreciate some good college hoops.

Luke Benz
Biostatistics PhD Student