Nebraska is not the best worst team in basketball again. They’re third best worst.

huskers
code
analysis
Author

Matt Waite

Published

March 20, 2022

Last year, this post may have suggested that Nebraska would be better this year than last year. That Nebraska was the best worst team in college basketball, and with major recruits coming in and the Big Ten expected to take a step back, all looked up.

Oops.

It didn’t work out as expected – in spite of a late season surge. But let’s return to the question: Is Nebraska the best worst team in college basketball?

Spoiler alert: Not this season.

Returning to Sports Reference’s college basketball site, we find our friends the Simple Rating System and Strength of Schedule. The SRS is a mix of average point differential and strength of schedule. Given that, a team with a losing record could have a positive rating if they lose games close but play good teams.

Like, say, Nebraska.

To find the worst teams, we’ll use the last place team in each conference by conference wins again.

Code
library(tidyverse)
library(ggalt)
library(gt)
library(ggbeeswarm)
library(ggrepel)

stats <- read_csv("http://mattwaite.github.io/sportsdatafiles/stats22.csv")
games <- read_csv("http://mattwaite.github.io/sportsdatafiles/logs22.csv")

stats <- games %>% 
  select(Team, Conference) %>% 
  distinct() %>% 
  right_join(stats, by=c("Team"="School")) %>% 
  filter(Games > 0)

lastplace <- stats %>%
  group_by(Conference) %>% 
  arrange(desc(ConferenceWins)) %>% 
  slice(n()) %>% 
  filter(Games > 10) %>%
  ungroup() %>% 
  arrange(desc(OverallSRS))

nu <- lastplace %>% filter(Team == "Nebraska")

lastplace %>% 
  select(Team, Conference, OverallWins, OverallLosses, OverallSRS, OverallSOS) %>% 
  rename(W = OverallWins, L=OverallLosses, `Simple Rating` = OverallSRS, `Sched. Strength`= OverallSOS) %>% 
  top_n(10, wt=`Simple Rating`) %>% 
  gt() %>%
  tab_header(
    title = "The Huskers didn't repeat as best of the worst",
    subtitle = "Notable: NC State - 3OT winner against Nebraska - finished just a hair ahead."
  ) %>% tab_style(
    style = cell_text(color = "black", weight = "bold", align = "left"),
    locations = cells_title("title")
  ) %>% tab_style(
    style = cell_text(color = "black", align = "left"),
    locations = cells_title("subtitle")
  ) %>%
  tab_source_note(
    source_note = "By Matt Waite"
  ) %>%
  tab_source_note(
    source_note = md("Source: [Sports Reference](https://www.sports-reference.com/cbb/seasons/2022-school-stats.html)")
  ) %>% tab_style(
    style = cell_text(color = "black", weight = "bold"),
    locations = cells_body(
      columns = c(Team)
    )
  ) %>% 
  tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Sched. Strength`),
      rows = `Sched. Strength` < 0
    )
  ) %>% 
  tab_style(
    style = cell_text(color = "green", weight = "normal"),
    locations = cells_body(
      columns = c(`Sched. Strength`),
      rows = `Sched. Strength` > 0
    )
  ) %>% 
  tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Simple Rating`),
      rows = `Simple Rating` < 0
    )
  ) %>% 
  tab_style(
    style = cell_text(color = "green", weight = "normal"),
    locations = cells_body(
      columns = c(`Simple Rating`),
      rows = `Simple Rating` > 0
    )
  ) %>% 
  opt_row_striping() %>% 
  opt_table_lines("none") %>% 
  tab_style(
    style = cell_borders(sides = c("top", "bottom"), 
                         color = "grey", weight = px(1)),
    locations = cells_column_labels(everything())
  )
The Huskers didn't repeat as best of the worst
Notable: NC State - 3OT winner against Nebraska - finished just a hair ahead.
Team Conference W L Simple Rating Sched. Strength
West Virginia Big 12 15 16 10.65 10.61
NC State ACC 11 20 3.59 6.08
Nebraska Big Ten 10 21 3.54 8.89
Georgetown Big East 6 24 1.91 8.31
Georgia SEC 6 25 0.64 8.48
Oregon State Pac-12 3 27 -0.76 8.95
South Florida AAC 8 22 -2.86 4.77
Northeastern CAA 9 22 -6.01 -1.20
Duquesne A-10 6 23 -6.39 2.02
Pepperdine WCC 7 25 -6.48 3.97
By Matt Waite
Source: Sports Reference

This season, West Virginia takes the best worst crown. They played the toughest schedule and won 15 games, five more than Nebraska, and ended with a far higher simple rating. A familiar name on the list will be NC State, which won an three overtime thriller against Nebraska. They had one more win than the Huskers, and finished just a tiny bit ahead.

But what about all teams in college basketball? Where does Nebraska rank out against other teams and other conferences?

Code
ggplot() +
  geom_vline(xintercept = 3.54) + 
  geom_beeswarm(
    data=stats, 
    groupOnX=FALSE, 
    aes(x=OverallSRS, y=Conference), color="grey") + 
  geom_beeswarm(
    data=lastplace, 
    groupOnX=TRUE, 
    aes(x=OverallSRS, y=Conference), color="blue") + 
  geom_beeswarm(
    data=nu, 
    groupOnX=TRUE, 
    aes(x=OverallSRS, y=Conference), color="red") +
  geom_text(
    aes(x=0, y="Big Ten", label="Nebraska")
  ) +
labs(x="Simple Rating", y="", title="Nebraska's simple rating is better than 5 conferences", subtitle="The Husker's finished dead last in the Big Ten, but wouldn't have nearly everywhere else.", caption="Source: Sports Reference | By Matt Waite") + 
  theme_minimal() + 
  theme(
    plot.title = element_text(size = 16, face = "bold"),
    axis.title = element_text(size = 8), 
    plot.subtitle = element_text(size=10), 
    panel.grid.minor = element_blank(),
    plot.title.position = "plot"
    )

Last year, Nebraska wins nine conferences. Now it’s five. None of them are powerhouse conferences.

What about the Power Five?

To put West Virginia in perspective, there’s 28 Power Five teams with a simple rating worse than they had. Nebraska finishes 22nd among that group. Among that group: Miami, which beat second-seed Auburn in the NCAA Tournament and, as of this writing, is still playing basketball.

Code
powerfive <- c("Big Ten", "Big 12", "Pac-12", "SEC", "ACC")

betterpowerfive <- stats %>% filter(Conference %in% powerfive) %>% filter(OverallSRS <= 10.65) %>% arrange(desc(OverallSRS))

ggplot() + 
  geom_point(data=betterpowerfive, aes(x=OverallSRS, y=OverallSOS, size=OverallWins)) + 
  geom_point(data=nu, aes(x=OverallSRS, y=OverallSOS, size=OverallWins), color="red") + 
  geom_text_repel(data=betterpowerfive, aes(x=OverallSRS, y=OverallSOS, label=Team), point.padding = 4) +
labs(x="Simple Rating", y="Schedule strength", title="Nebraska had a harder schedule than multiple tournament teams", subtitle="Nebraska isn't the best of the worst again, but teams in their ranking neighborhood had better fortunes.", caption="Source: Sports Reference | By Matt Waite") + 
  theme_minimal() + 
  theme(
    plot.title = element_text(size = 16, face = "bold"),
    axis.title = element_text(size = 8), 
    plot.subtitle = element_text(size=10), 
    panel.grid.minor = element_blank(),
    plot.title.position = "plot"
    )

The road forward for Nebraska is even murkier than last year. There’s coaching vacancies and roster turnover ahead, and after last year, no prediction here.