Normalized scores for NFL teams’ defenses look promising as input to predict game outcomes and fantasy-player performances, but testing is still needed.

Working with football statistics, I wanted to evaluate a team’s performance and use the results as input for a LSTM neural network to predict players’ fantasy scores. Basically, the idea is with a better way to gauge a team’s performance, especially their defense, the more accurate the predictions of the outcome of a matchup will be.

Initially I was ranking teams every week based on how many accumulated passing, rushing, and receiving yards they had allowed, and I used those ranks as input (among other metrics) to neural networks. It wasn’t proving effective as input though for a number of reasons: some teams’ schedules are skewed, some teams have an overall easier schedule, some matchups are tougher (or mundane) than others, and some teams are more “lopsided”, meaning that they only excel in some areas. The total number of yards in each category was only part of the story.

The need to normalize the data arose, but how to do it?

My new strategy is to take the actual number of yards that a team has allowed for a category over the season (what I was ranking before), then divide that by the amount of yards they were expected to allow in that time. The denominator is the tricky bit. How is anyone to know the number of expected yards? I chose the average yards their opponents have earned at the time of their matchup. When I sum those averages for each matchup, I create an “expected” performance. There are many other ways to do this; this is just how I’ve chosen to calculate it. Here it is mathematically:

To normalize the Pass Rating for team t on week w:

Total passing yards against team t on week w.

Average passing yards for opponent o from week 1 to w.

The normalized rating would be similar for rushing and receiving.

It’s not possible to calculate ratings using this system on week 1 as there’s no data yet to input for the season. Come week 2, expected and actual yards are equal because each team has had only one matchup, making all the ratings the same. Data from the previous year could be utilized, but team dynamics change drastically year-to-year as players retire, age, and are traded. It’s just too unreliable.

So what does this give us? Here are the results as we approach Week 12:

A value less than 1 shows a team is performing better than expected – meaning with how well an opponent does before the matchup, the team will likely make their opponent perform less than their average. 1 means a team is doing as well as can be expected against opponents, and a value greater than 1 means that a team is underperforming defending that area.

Not only does this show what strengths a team’s defense has, but it also highlights what strategy an opponent may take against them.

For week 12,the Broncos ratings are 0.49 in passing, 1.26 in rushing, and 0.82 in receiving. That means that an opposing quarterback will have a tough time passing (thank you Von Miller!), and when they do get a pass off, they will underperform. However, an opponent is likely to get through the Bronco’s defense well with the rush.

The numbers seem to back up what commentators are saying on several sports blogs and shows. Rush against the Broncos. Broncos need to stop the run. Broncos no-fly zone is beast, but the front seven need work to stop the run. Offensive lines need to watch out for Von Miller, who has the most sacks of anyone this year. Sound familiar?

Now let’s look at another team. The Ravens have passing, rushing, and receiving ratings of 1.47, 0.74, and 0.98, respectively, meaning that opposing quarterbacks will have plenty of time to pass and will pass farther, but after the pass is complete, the receiver can be expected to stop at their performing average. Rushing against the Ravens will be difficult though.

The hard part for fantasy-football players is to use this data to judge which players to put into their lineups. For instance, this week the Ravens are playing the Bengals. With A.J. Green out on injury, the Ravens are likely to keep or improve upon their 0.98 receiving rating. But with the Raven’s passing rating of 1.47, their defense will probably give Andy Dalton more time to throw the ball and look around for a good target; likely Tyler Eifert. In my opinion, the Bengals will call more short throws or bootlegs in this game. Jeremy Hill, who’s averaging roughly 56 yards a game this season, will have a hard time with any run with the Raven’s rush rating at 0.74. And with Giovani Bernard on IR, I’d call their rush game in this matchup trivial.

What about the Chiefs at the Broncos? Looks like Alex Smith is in trouble against the No-Fly Zone (going against 0.82 receiving) and with Von Miller putting pressure on him (going against 0.49 passing). This means throws to Jeremy Maclin will be sparse. Rushing looks to be the name of the game for the Chiefs in this matchup, but with Jamal Charles out on IR, Spencer Ware and Charcandrick West will have to really push. I bet they’ll do better than their last few games, and splitting time on the field will help keep their energy up. In terms of the Chiefs having a chance to win the game, I’ll concede that possibility. But fantasy-wise, I’d place both of them as an RB2 or RB3 option – mainly because they’re splitting time.

It will be interesting to see how significantly (if at all) this rating system plays a role in predicting fantasy player performance, or even just predicting the winning team of a game, but that will be for a later day. For now, the predicting will have to be manual, but these ratings already give more to the story than the ranking of raw yards ever did.