Simple College Football Rankings
Super Simple College Football Rankings
After the first College Football Playoffs ranking came out there was some controversy over the top four. Nobody was complaining about Alabama as they are in a league of their own, Michigan has been beating teams by a bunch of points, and Clemson has navigated a pretty tough schedule to an undefeated record. However Texas A&M was ahead of Washington, even though UW is undefeated and A&M has one loss to Alabama.
I decided to try seeing what I could do to come up with a simple rating just to see what I could learn. I started by gathering the data and doing a simple comparison between teams and their scoring differential. It’s not super accurate or overly complex but it does seem to pass the eye test atleast for the top four. Here’s how I did it.
Load necessary packages and create helper functions.
library(rvest)
library(dplyr)
library(lubridate)
library(stringr)
#helper function to calculate points diff for a single team
calcTeamTotal <- function(df, team){
teamWins <- filter(df, df$Winner == team)
teamLosses <- filter(df, df$Loser == team)
totalgames <- nrow(teamWins) + nrow(teamLosses)
teamPlus <- sum(teamWins$WinPts - teamWins$LosePts) - sum(teamLosses$WinPts - teamLosses$LosePts)
return(c(teamPlus, totalgames))
}
#' Calculate total score differential for a team
#' @param df A data frame
#' @param team A char string
#' @return The sum of a team's scores so far this year
calcOpponentTotals <- function(df, team){
rows <- rownames(df)[df$Winner == team | df$Loser == team]
games <- df[rows,]
opponents <- unique( games$Winner)
opponents <- append(opponents,unique( games$Loser))
opponents <- opponents[!grepl(team, opponents)]
opponents <- opponents[!is.na(opponents)]
df <- df[! rownames(df) %in% rows, ]
total <- 0
numGames <- 0
for (t in opponents) {
data <- calcTeamTotal(df, t)
total <- total + data[1]
numGames <- numGames + data[2]
}
return(total/numGames)
}
Fetch and Tidy the Data
#fetch data from sports-ref site and create df
myHtml <- html("http://www.sports-reference.com/cfb/years/2016-schedule.html")
cfb_df <- myHtml %>%
html_nodes("table") %>%
html_table()%>%
data.frame()
#tidy up the data
#convert date column to date types
cfb_df$Date <- mdy(cfb_df$Date)
#remove non-game rows and rename columns
cfb_df <- filter(cfb_df, Rk != "Rk") %>%
rename( IsWinnerHome = Var.8 , Winner = Winner.Tie, Loser = Loser.Tie, WinPts = Pts, LosePts = Pts.1)
#convert strings to integers
cfb_df$Rk <- as.integer(cfb_df$Rk)
cfb_df$WinPts <- as.integer(cfb_df$WinPts)
cfb_df$LosePts <- as.integer(cfb_df$LosePts)
tail(cfb_df)
## Rk Wk Date Time Day Winner WinPts IsWinnerHome
## 824 824 15 2016-12-03 12:00 PM Sat Kansas State NA @
## 825 825 15 2016-12-03 12:00 PM Sat Louisiana-Lafayette NA @
## 826 826 15 2016-12-03 12:00 PM Sat New Mexico State NA @
## 827 827 15 2016-12-03 12:00 PM Sat (22) Oklahoma State NA @
## 828 828 15 2016-12-03 12:00 PM Sat Troy NA @
## 829 829 16 2016-12-10 4:00 PM Sat Navy NA @
## Loser LosePts TV Notes
## 824 Texas Christian NA
## 825 Louisiana-Monroe NA
## 826 South Alabama NA
## 827 (12) Oklahoma NA
## 828 Georgia Southern NA
## 829 Army NA CBS
Notice how any ranked teams show up with a (rank) in front of their names. This will cause a problem later when trying to find unique teams as most everyone’s rank will change almost weekly. So I will extract that ranking and place it in a new column.
#remove rank from team names and move rank value to new column
cfb_df$WinRank <- str_extract(cfb_df$Winner, '[0-9]{1,2}')
cfb_df$Winner <- sub("\\(.+\\).","", cfb_df$Winner)
cfb_df$LoseRank <- str_extract(cfb_df$Loser, '[0-9]{1,2}')
cfb_df$Loser <- sub("\\(.+\\).","", cfb_df$Loser)
tail(cfb_df)
## Rk Wk Date Time Day Winner WinPts IsWinnerHome
## 824 824 15 2016-12-03 12:00 PM Sat Kansas State NA @
## 825 825 15 2016-12-03 12:00 PM Sat Louisiana-Lafayette NA @
## 826 826 15 2016-12-03 12:00 PM Sat New Mexico State NA @
## 827 827 15 2016-12-03 12:00 PM Sat Oklahoma State NA @
## 828 828 15 2016-12-03 12:00 PM Sat Troy NA @
## 829 829 16 2016-12-10 4:00 PM Sat Navy NA @
## Loser LosePts TV Notes WinRank LoseRank
## 824 Texas Christian NA <NA> <NA>
## 825 Louisiana-Monroe NA <NA> <NA>
## 826 South Alabama NA <NA> <NA>
## 827 Oklahoma NA 22 12
## 828 Georgia Southern NA <NA> <NA>
## 829 Army NA CBS <NA> <NA>
#remove games not yet played
cfb_df <- filter(cfb_df, WinPts != "")
Analyzing the Data
Finally I get the unique teams and calculate their average point differential then calculate the average point differentials of all of their opponents.
#get all teams
unique_win <- unique(cfb_df$Winner) %>% sort()
unique_lose <- unique(cfb_df$Loser) %>% sort()
uni <- unique(c(unique_lose,unique_win))
team_totals <- data.frame(Team = character(), PtDiff=integer(),stringsAsFactors = FALSE)
for (t in uni) {
tot <- calcTeamTotal(cfb_df, t)
vec <- list("Team"= t, "PtDiff" =tot[1]/tot[2])
team_totals[nrow(team_totals)+1,] <- vec
}
team_totals[order(team_totals$PtDiff, decreasing = TRUE),]
## Team PtDiff
## 208 Michigan 37.3333333
## 212 Washington 31.3333333
## 126 Ohio State 31.0000000
## 83 Louisville 29.0000000
## 201 Alabama 26.8888889
## 214 Western Michigan 25.8888889
## 204 Clemson 22.8888889
## 143 San Diego State 20.6666667
## 13 Auburn 18.7777778
## 191 Washington State 18.3333333
## 178 Troy 18.1250000
## 176 Toledo 17.5555556
## 211 Richmond 17.0000000
## 58 Houston 16.7777778
## 195 Western Kentucky 16.7000000
## 32 Colorado 16.4444444
## 170 Texas A&M 15.7777778
## 91 Miami (FL) 15.0000000
## 80 Louisiana Tech 14.8000000
## 16 Baylor 14.7500000
## 188 Virginia Tech 14.6666667
## 89 Memphis 14.0000000
## 128 Oklahoma State 13.2222222
## 151 South Florida 13.2222222
## 42 Florida 12.8750000
## 193 West Virginia 12.6250000
## 127 Oklahoma 12.5555556
## 18 Boise State 12.1111111
## 164 Temple 12.1000000
## 79 Louisiana State 11.7500000
## 180 Tulsa 11.4444444
## 12 Army 11.2222222
## 7 Appalachian State 10.4444444
## 95 Minnesota 10.3333333
## 197 Wisconsin 10.0000000
## 26 Central Florida 9.2222222
## 132 Penn State 8.8888889
## 2 Air Force 8.7777778
## 155 Southern California 8.4444444
## 171 Texas Christian 8.2222222
## 113 North Carolina 8.0000000
## 94 Middle Tennessee State 7.2222222
## 73 Kansas State 7.1111111
## 110 New Mexico 6.5555556
## 182 Utah 6.5555556
## 125 Ohio 6.3000000
## 165 Tennessee 6.2222222
## 199 Wyoming 6.1111111
## 202 Albany 6.0000000
## 105 Navy 5.8750000
## 106 Nebraska 5.5555556
## 129 Old Dominion 5.5555556
## 67 Iowa 5.2222222
## 203 Central Arkansas 5.0000000
## 210 Northern Iowa 5.0000000
## 213 Western Illinois 5.0000000
## 46 Florida State 4.7777778
## 158 Southern Mississippi 4.7777778
## 175 Texas-San Antonio 4.5555556
## 173 Texas Tech 4.4444444
## 96 Mississippi 4.2222222
## 21 Brigham Young 4.1111111
## 205 Eastern Illinois 4.0000000
## 169 Texas 3.7777778
## 33 Colorado State 3.1111111
## 206 Eastern Washington 3.0000000
## 190 Wake Forest 2.8888889
## 116 North Carolina State 2.5555556
## 133 Pittsburgh 2.5555556
## 124 Notre Dame 2.2222222
## 86 Maryland 2.1111111
## 207 Illinois State 2.0000000
## 209 North Dakota State 2.0000000
## 10 Arkansas 1.8888889
## 99 Missouri 1.3333333
## 160 Stanford 1.3333333
## 52 Georgia Southern 1.1111111
## 97 Mississippi State 1.1111111
## 122 Northwestern 1.1111111
## 54 Georgia Tech 1.0000000
## 65 Indiana 0.5555556
## 181 UCLA 0.3333333
## 37 Duke 0.2222222
## 40 Eastern Michigan -0.4444444
## 9 Arizona State -0.8888889
## 121 Northern Illinois -0.8888889
## 27 Central Michigan -0.9000000
## 117 North Dakota -1.0000000
## 15 Ball State -1.2222222
## 11 Arkansas State -1.2500000
## 184 Vanderbilt -1.3333333
## 108 Nevada-Las Vegas -1.4444444
## 112 Nicholls State -1.5000000
## 147 South Carolina -2.0000000
## 51 Georgia -2.2222222
## 92 Miami (OH) -2.3000000
## 146 South Alabama -2.3333333
## 38 East Carolina -2.5555556
## 179 Tulane -2.7777778
## 23 Cal Poly -3.0000000
## 102 Montana State -3.0000000
## 75 Kentucky -3.1111111
## 118 North Texas -3.8888889
## 74 Kent State -4.0000000
## 130 Oregon -4.3333333
## 30 Cincinnati -4.4444444
## 24 California -4.7777778
## 183 Utah State -4.7777778
## 81 Louisiana-Lafayette -5.0000000
## 53 Georgia State -5.2222222
## 107 Nevada -5.4444444
## 3 Akron -5.8000000
## 63 Illinois -5.8888889
## 93 Michigan State -6.5555556
## 186 Virginia -6.5555556
## 85 Marshall -6.6666667
## 19 Boston College -6.7777778
## 88 McNeese State -8.0000000
## 156 Southern Illinois -8.0000000
## 131 Oregon State -8.1111111
## 157 Southern Methodist -8.3333333
## 68 Iowa State -8.5555556
## 61 Idaho -9.2222222
## 29 Charlotte -9.5555556
## 87 Massachusetts -9.8000000
## 55 Grambling State -10.0000000
## 34 Connecticut -10.4000000
## 163 Syracuse -10.4444444
## 57 Hawaii -11.4000000
## 137 Purdue -11.6666667
## 174 Texas-El Paso -11.8888889
## 144 San Jose State -12.2000000
## 5 Alabama State -13.0000000
## 45 Florida International -13.3000000
## 44 Florida Atlantic -13.8888889
## 22 Buffalo -14.7777778
## 8 Arizona -14.8888889
## 49 Furman -15.0000000
## 142 Samford -15.0000000
## 48 Fresno State -15.6000000
## 139 Rice -15.7777778
## 1 Abilene Christian -16.0000000
## 50 Gardner-Webb -16.0000000
## 82 Louisiana-Monroe -16.7777778
## 35 Delaware -17.0000000
## 114 North Carolina A&T -17.0000000
## 168 Tennessee-Martin -17.0000000
## 200 Youngstown State -17.0000000
## 140 Rutgers -17.3333333
## 172 Texas State -17.7500000
## 150 South Dakota State -18.0000000
## 152 Southeast Missouri State -18.0000000
## 166 Tennessee State -18.0000000
## 78 Liberty -19.0000000
## 111 New Mexico State -19.0000000
## 101 Monmouth -20.0000000
## 72 Kansas -20.6666667
## 17 Bethune-Cookman -21.0000000
## 70 Jacksonville State -21.0000000
## 185 Villanova -21.0000000
## 84 Maine -22.5000000
## 187 Virginia Military Institute -23.0000000
## 20 Bowling Green State -23.8888889
## 25 California-Davis -24.0000000
## 39 Eastern Kentucky -24.0000000
## 159 Southern Utah -24.0000000
## 90 Mercer -25.0000000
## 198 Wofford -25.0000000
## 31 Colgate -26.0000000
## 120 Northern Colorado -26.0000000
## 149 South Dakota -27.0000000
## 71 James Madison -28.0000000
## 141 Sacramento State -28.0000000
## 189 Wagner -28.0000000
## 66 Indiana State -30.0000000
## 64 Incarnate Word -31.0000000
## 109 New Hampshire -31.0000000
## 119 Northern Arizona -31.0000000
## 154 Southern -31.0000000
## 41 Elon -33.0000000
## 56 Hampton -33.0000000
## 196 William & Mary -34.0000000
## 134 Portland State -34.5000000
## 100 Missouri State -35.0000000
## 47 Fordham -36.0000000
## 177 Towson -36.0000000
## 162 Stony Brook -38.0000000
## 60 Howard -38.5000000
## 192 Weber State -39.0000000
## 59 Houston Baptist -39.5000000
## 62 Idaho State -39.5000000
## 14 Austin Peay -40.0000000
## 6 Alcorn State -42.0000000
## 77 Lamar -42.0000000
## 148 South Carolina State -42.0000000
## 28 Charleston Southern -44.0000000
## 135 Prairie View A&M -44.0000000
## 194 Western Carolina -45.0000000
## 115 North Carolina Central -46.0000000
## 136 Presbyterian -46.0000000
## 98 Mississippi Valley State -47.0000000
## 123 Northwestern State -48.0000000
## 104 Murray State -49.0000000
## 138 Rhode Island -49.0000000
## 69 Jackson State -50.0000000
## 161 Stephen F. Austin -52.0000000
## 153 Southeastern Louisiana -54.0000000
## 4 Alabama A&M -55.0000000
## 76 Lafayette -55.0000000
## 145 Savannah State -55.0000000
## 167 Tennessee Tech -55.0000000
## 103 Morgan State -62.0000000
## 43 Florida A&M -67.0000000
## 36 Delaware State -79.0000000
opp_totals <- list()
for (t in team_totals$Team) {
data <- calcOpponentTotals(cfb_df, t)
opp_totals <- append(opp_totals, as.numeric(data))
}
team_totals$OppDiff <- opp_totals
team_totals$totalDiff <- as.numeric(team_totals$PtDiff) + as.numeric(team_totals$OppDiff)
team_totals[order(team_totals$totalDiff , decreasing = TRUE),]
## Team PtDiff OppDiff totalDiff
## 208 Michigan 37.3333333 6.523077 43.85641026
## 201 Alabama 26.8888889 10.66667 37.55555556
## 126 Ohio State 31.0000000 4.986111 35.98611111
## 204 Clemson 22.8888889 8.846154 31.73504274
## 83 Louisville 29.0000000 2.430556 31.43055556
## 212 Washington 31.3333333 -3.753846 27.57948718
## 214 Western Michigan 25.8888889 0.2686567 26.15754561
## 13 Auburn 18.7777778 7.185714 25.96349206
## 206 Eastern Washington 3.0000000 21 24.00000000
## 79 Louisiana State 11.7500000 12.08929 23.83928571
## 32 Colorado 16.4444444 5.947368 22.39181287
## 170 Texas A&M 15.7777778 5.953125 21.73090278
## 132 Penn State 8.8888889 11.73973 20.62861492
## 197 Wisconsin 10.0000000 10.30556 20.30555556
## 91 Miami (FL) 15.0000000 5.25 20.25000000
## 195 Western Kentucky 16.7000000 2.078947 18.77894737
## 46 Florida State 4.7777778 13.73438 18.51215278
## 58 Houston 16.7777778 1.492063 18.26984127
## 188 Virginia Tech 14.6666667 3.138462 17.80512821
## 165 Tennessee 6.2222222 11.54688 17.76909722
## 191 Washington State 18.3333333 -0.703125 17.63020833
## 127 Oklahoma 12.5555556 4.736111 17.29166667
## 178 Troy 18.1250000 -0.8392857 17.28571429
## 193 West Virginia 12.6250000 4.357143 16.98214286
## 164 Temple 12.1000000 3.931507 16.03150685
## 128 Oklahoma State 13.2222222 2.111111 15.33333333
## 96 Mississippi 4.2222222 11.01587 15.23809524
## 143 San Diego State 20.6666667 -5.447761 15.21890547
## 180 Tulsa 11.4444444 3.343284 14.78772803
## 18 Boise State 12.1111111 2.430556 14.54166667
## 176 Toledo 17.5555556 -3.514706 14.04084967
## 10 Arkansas 1.8888889 11.88889 13.77777778
## 151 South Florida 13.2222222 0.3846154 13.60683761
## 26 Central Florida 9.2222222 4.333333 13.55555556
## 42 Florida 12.8750000 -0.07692308 12.79807692
## 89 Memphis 14.0000000 -1.3125 12.68750000
## 105 Navy 5.8750000 6.614035 12.48903509
## 155 Southern California 8.4444444 3.75 12.19444444
## 80 Louisiana Tech 14.8000000 -2.649351 12.15064935
## 113 North Carolina 8.0000000 3.96875 11.96875000
## 211 Richmond 17.0000000 -5.25 11.75000000
## 16 Baylor 14.7500000 -3.267857 11.48214286
## 122 Northwestern 1.1111111 10.29688 11.40798611
## 73 Kansas State 7.1111111 3.904762 11.01587302
## 116 North Carolina State 2.5555556 7.984375 10.53993056
## 7 Appalachian State 10.4444444 -0.3521127 10.09233177
## 171 Texas Christian 8.2222222 1.725806 9.94802867
## 173 Texas Tech 4.4444444 5.125 9.56944444
## 169 Texas 3.7777778 5.563636 9.34141414
## 133 Pittsburgh 2.5555556 6.71875 9.27430556
## 160 Stanford 1.3333333 7.819444 9.15277778
## 12 Army 11.2222222 -2.2 9.02222222
## 199 Wyoming 6.1111111 2.6 8.71111111
## 2 Air Force 8.7777778 -0.5384615 8.23931624
## 209 North Dakota State 2.0000000 6.125 8.12500000
## 95 Minnesota 10.3333333 -2.34375 7.98958333
## 21 Brigham Young 4.1111111 3.43662 7.54773083
## 182 Utah 6.5555556 0.9384615 7.49401709
## 106 Nebraska 5.5555556 1.863014 7.41856925
## 94 Middle Tennessee State 7.2222222 -0.2537313 6.96849088
## 33 Colorado State 3.1111111 3.630769 6.74188034
## 54 Georgia Tech 1.0000000 5.609375 6.60937500
## 37 Duke 0.2222222 6.307692 6.52991453
## 181 UCLA 0.3333333 5.708333 6.04166667
## 86 Maryland 2.1111111 3.666667 5.77777778
## 129 Old Dominion 5.5555556 -0.1363636 5.41919192
## 97 Mississippi State 1.1111111 4.25 5.36111111
## 67 Iowa 5.2222222 -0.01754386 5.20467836
## 184 Vanderbilt -1.3333333 6.515625 5.18229167
## 99 Missouri 1.3333333 3.704918 5.03825137
## 213 Western Illinois 5.0000000 -0.375 4.62500000
## 9 Arizona State -0.8888889 5.5 4.61111111
## 203 Central Arkansas 5.0000000 -0.7142857 4.28571429
## 130 Oregon -4.3333333 8.061538 3.72820513
## 207 Illinois State 2.0000000 1.5 3.50000000
## 175 Texas-San Antonio 4.5555556 -1.21875 3.33680556
## 27 Central Michigan -0.9000000 4.178082 3.27808219
## 124 Notre Dame 2.2222222 1 3.22222222
## 190 Wake Forest 2.8888889 0.078125 2.96701389
## 121 Northern Illinois -0.8888889 3.415385 2.52649573
## 131 Oregon State -8.1111111 10.35385 2.24273504
## 205 Eastern Illinois 4.0000000 -2.111111 1.88888889
## 40 Eastern Michigan -0.4444444 2.212121 1.76767677
## 158 Southern Mississippi 4.7777778 -3.333333 1.44444444
## 38 East Carolina -2.5555556 3.538462 0.98290598
## 65 Indiana 0.5555556 0.4109589 0.96651446
## 51 Georgia -2.2222222 3.125 0.90277778
## 110 New Mexico 6.5555556 -6.396552 0.15900383
## 52 Georgia Southern 1.1111111 -0.952381 0.15873016
## 11 Arkansas State -1.2500000 1.25 0.00000000
## 24 California -4.7777778 4.692308 -0.08547009
## 63 Illinois -5.8888889 5.65625 -0.23263889
## 183 Utah State -4.7777778 4.453125 -0.32465278
## 157 Southern Methodist -8.3333333 8 -0.33333333
## 125 Ohio 6.3000000 -6.638889 -0.33888889
## 93 Michigan State -6.5555556 6.09375 -0.46180556
## 75 Kentucky -3.1111111 2.571429 -0.53968254
## 146 South Alabama -2.3333333 1.274194 -1.05913978
## 179 Tulane -2.7777778 1.328125 -1.44965278
## 147 South Carolina -2.0000000 0.2876712 -1.71232877
## 118 North Texas -3.8888889 1.953125 -1.93576389
## 3 Akron -5.8000000 3.164384 -2.63561644
## 68 Iowa State -8.5555556 5.859375 -2.69618056
## 74 Kent State -4.0000000 1.180328 -2.81967213
## 163 Syracuse -10.4444444 7.369231 -3.07521368
## 53 Georgia State -5.2222222 2 -3.22222222
## 30 Cincinnati -4.4444444 1.188406 -3.25603865
## 92 Miami (OH) -2.3000000 -1.368421 -3.66842105
## 186 Virginia -6.5555556 2.878788 -3.67676768
## 19 Boston College -6.7777778 2.863636 -3.91414141
## 210 Northern Iowa 5.0000000 -9 -4.00000000
## 15 Ball State -1.2222222 -3 -4.22222222
## 112 Nicholls State -1.5000000 -2.75 -4.25000000
## 152 Southeast Missouri State -18.0000000 13.5 -4.50000000
## 140 Rutgers -17.3333333 12.53846 -4.79487179
## 200 Youngstown State -17.0000000 12 -5.00000000
## 61 Idaho -9.2222222 4 -5.22222222
## 108 Nevada-Las Vegas -1.4444444 -4.852941 -6.29738562
## 85 Marshall -6.6666667 -0.7538462 -7.42051282
## 1 Abilene Christian -16.0000000 7.875 -8.12500000
## 34 Connecticut -10.4000000 2.136986 -8.26301370
## 87 Massachusetts -9.8000000 0.890411 -8.90958904
## 29 Charlotte -9.5555556 0.5151515 -9.04040404
## 8 Arizona -14.8888889 5.784615 -9.10427350
## 5 Alabama State -13.0000000 3.5 -9.50000000
## 23 Cal Poly -3.0000000 -6.5 -9.50000000
## 57 Hawaii -11.4000000 1.786667 -9.61333333
## 202 Albany 6.0000000 -15.875 -9.87500000
## 81 Louisiana-Lafayette -5.0000000 -4.962963 -9.96296296
## 70 Jacksonville State -21.0000000 10.42857 -10.57142857
## 50 Gardner-Webb -16.0000000 5.222222 -10.77777778
## 150 South Dakota State -18.0000000 7 -11.00000000
## 48 Fresno State -15.6000000 4.375 -11.22500000
## 144 San Jose State -12.2000000 0.972973 -11.22702703
## 109 New Hampshire -31.0000000 19.375 -11.62500000
## 137 Purdue -11.6666667 -0.09230769 -11.75897436
## 139 Rice -15.7777778 3.454545 -12.32323232
## 72 Kansas -20.6666667 8.238095 -12.42857143
## 174 Texas-El Paso -11.8888889 -0.8181818 -12.70707071
## 107 Nevada -5.4444444 -8.179104 -13.62354892
## 102 Montana State -3.0000000 -10.75 -13.75000000
## 45 Florida International -13.3000000 -0.746988 -14.04698795
## 88 McNeese State -8.0000000 -6.857143 -14.85714286
## 114 North Carolina A&T -17.0000000 2.0625 -14.93750000
## 142 Samford -15.0000000 -0.625 -15.62500000
## 35 Delaware -17.0000000 1.125 -15.87500000
## 44 Florida Atlantic -13.8888889 -3.015152 -16.90404040
## 20 Bowling Green State -23.8888889 6.666667 -17.22222222
## 22 Buffalo -14.7777778 -2.818182 -17.59595960
## 78 Liberty -19.0000000 1.1875 -17.81250000
## 82 Louisiana-Monroe -16.7777778 -1.873016 -18.65079365
## 172 Texas State -17.7500000 -1.535714 -19.28571429
## 159 Southern Utah -24.0000000 4.375 -19.62500000
## 111 New Mexico State -19.0000000 -0.8709677 -19.87096774
## 185 Villanova -21.0000000 0.25 -20.75000000
## 166 Tennessee State -18.0000000 -3.75 -21.75000000
## 84 Maine -22.5000000 0.5294118 -21.97058824
## 66 Indiana State -30.0000000 7.875 -22.12500000
## 71 James Madison -28.0000000 5.5 -22.50000000
## 149 South Dakota -27.0000000 4 -23.00000000
## 198 Wofford -25.0000000 1.625 -23.37500000
## 49 Furman -15.0000000 -9.25 -24.25000000
## 156 Southern Illinois -8.0000000 -16.625 -24.62500000
## 14 Austin Peay -40.0000000 15 -25.00000000
## 177 Towson -36.0000000 10.375 -25.62500000
## 120 Northern Colorado -26.0000000 0.25 -25.75000000
## 25 California-Davis -24.0000000 -2 -26.00000000
## 90 Mercer -25.0000000 -2 -27.00000000
## 101 Monmouth -20.0000000 -7 -27.00000000
## 168 Tennessee-Martin -17.0000000 -10.08 -27.08000000
## 17 Bethune-Cookman -21.0000000 -7 -28.00000000
## 55 Grambling State -10.0000000 -18 -28.00000000
## 117 North Dakota -1.0000000 -27 -28.00000000
## 77 Lamar -42.0000000 13.625 -28.37500000
## 162 Stony Brook -38.0000000 9.222222 -28.77777778
## 134 Portland State -34.5000000 5.352941 -29.14705882
## 148 South Carolina State -42.0000000 12.44 -29.56000000
## 56 Hampton -33.0000000 2.125 -30.87500000
## 100 Missouri State -35.0000000 3.625 -31.37500000
## 187 Virginia Military Institute -23.0000000 -9 -32.00000000
## 39 Eastern Kentucky -24.0000000 -10.25 -34.25000000
## 47 Fordham -36.0000000 1.571429 -34.42857143
## 196 William & Mary -34.0000000 -1.375 -35.37500000
## 119 Northern Arizona -31.0000000 -4.875 -35.87500000
## 115 North Carolina Central -46.0000000 8.9375 -37.06250000
## 123 Northwestern State -48.0000000 10 -38.00000000
## 62 Idaho State -39.5000000 -0.25 -39.75000000
## 59 Houston Baptist -39.5000000 -1.117647 -40.61764706
## 189 Wagner -28.0000000 -12.64706 -40.64705882
## 31 Colgate -26.0000000 -15 -41.00000000
## 28 Charleston Southern -44.0000000 -0.125 -44.12500000
## 6 Alcorn State -42.0000000 -3.125 -45.12500000
## 153 Southeastern Louisiana -54.0000000 8.125 -45.87500000
## 154 Southern -31.0000000 -14.875 -45.87500000
## 41 Elon -33.0000000 -14.875 -47.87500000
## 141 Sacramento State -28.0000000 -20.44444 -48.44444444
## 76 Lafayette -55.0000000 5.75 -49.25000000
## 192 Weber State -39.0000000 -10.25 -49.25000000
## 135 Prairie View A&M -44.0000000 -5.5 -49.50000000
## 60 Howard -38.5000000 -13.375 -51.87500000
## 136 Presbyterian -46.0000000 -6.111111 -52.11111111
## 98 Mississippi Valley State -47.0000000 -6.375 -53.37500000
## 161 Stephen F. Austin -52.0000000 -1.5 -53.50000000
## 194 Western Carolina -45.0000000 -8.5 -53.50000000
## 4 Alabama A&M -55.0000000 1.25 -53.75000000
## 167 Tennessee Tech -55.0000000 0.125 -54.87500000
## 64 Incarnate Word -31.0000000 -24.71429 -55.71428571
## 69 Jackson State -50.0000000 -7.875 -57.87500000
## 43 Florida A&M -67.0000000 8.5 -58.50000000
## 145 Savannah State -55.0000000 -3.5625 -58.56250000
## 104 Murray State -49.0000000 -12.75 -61.75000000
## 103 Morgan State -62.0000000 -15.25 -77.25000000
## 138 Rhode Island -49.0000000 -29.375 -78.37500000
## 36 Delaware State -79.0000000 -8.375 -87.37500000
Conclusion
There is my top 4 Michigan, Alabama, Ohio State, and Clemson. Looking at the top 6 it seems to be fairly accurate with Michigan (Go Blue!) with the largest total point differential (team Diff + Opponent Diff). Other take aways include Bama with the one of the toughest schedules (high OppDiff) and a very large point differential. Also I see why Washington gets no love as their opponents have an negative average differential.
Some obvious drawbacks of this simple approach is that it benefits teams that run up the score and does not take into account any other factors. Also FCS Eastern Washington snuck in their due to their one win against an apparently decent Pac-12 team in Washington State. I could remove all teams in the FCS by removing teams with less than 3 games.