Next Gen Stats max speed numbers change by a surprisingly large amount from year to year.
They publish the 20 fastest ballcarrier speeds each week, which gives us a data set of 340 regular season speeds each season (20 per week for 17 weeks). I have those data (and playoff data) in
this spreadsheet. Here is the average of those 340 speeds for each year.
2016: 20.76 mph
2017: 20.00 mph
2018: 20.56 mph
2019: 20.47 mph
That's a huge drop from 2016 to 2017, and then a huge bounceback from 2017 to 2018, and then things stayed relatively stable from 2018 to 2019. It seems very likely to me that this is due to changes in their method, and not due to anything like players getting slower or faster. They made some changes to their method after 2016 which resulted in slower times, and then they made some more changes to their method after 2017 which resulted in faster times, and then they kept their method relatively stable from 2018-19. So the numbers between different years are not directly comparable.
I think that has to be the case because the gaps between years are just too big. And the different years look even more different if we zoom in on the details of the distribution rather than just averaging all 340 speeds together.
2016 stands out even farther from the other years if we focus in on the high end. 13 of the 15 fastest regular season times that they've recorded are from 2016, and just 2 are from 2017-19. Here are the top 10:
23.24 Tyreek Hill 2016
22.77 Tyreek Hill 2016
22.60 DeSean Jackson 2016
22.50 Stefon Diggs 2016
22.40 Xavier Rhodes 2016
22.40 Brandin Cooks 2016
22.34 Mike Wallace 2016
22.30 Matt Breida 2019
22.25 Tevin Coleman 2016
22.25 Marquise Goodwin 2016
2016 looks more similar to 2018-19 over the bottom half of the distribution (plays 171-340 in the dataset), although it's still somewhat faster there.
2017 is slower than the other years throughout the distribution, and this is most apparent at the bottom. The 60 slowest plays to make the weekly top 20 list all happened in 2017.
My guess is that the method they were using in 2016 was kind of noisy, and so they got less accurate numbers especially at the high end when some plays happened to get especially large positive measurement errors. For 2017 they made some adjustments to try to restrain this problem, but they did it in a way that depressed the estimated speeds across the board. For instance, maybe they looked at max speed over a longer distance - a player's max speed over a 5 yard distance will be a bit slower than his max speed over a 1 yard distance, and the estimate of speed over 5 yards will also be less noisy than the estimate of speed over 1 yard. Then in 2018 they found ways to improve the estimate to be less noisy, without depressing all of the speeds.
So if you're planning to look at anything which involves speeds across multiple years (as I am), you should do something to adjust for these issues with the data.
One idea is to look at the player's ranking for the year. In 2016 Tyreek Hill had the fastest recorded speed (23.24), in 2017 Leonard Fournette had the fastest speed (22.05), in 2018 Matt Breida had the fastest speed (22.09), and in 2019 Matt Breida had the fastest speed (22.30). You could treat those as all equally good - 1st place for the year. They are reported as different speeds, but the information about players' relative speeds within the season seems more reliable than the exact reported speeds. If you want to put them back on a mph scale (which is helpful for some purposes), you could calculate the average of those four #1 speeds (which is 22.42 mph) and credit them with that. Or maybe just average together the 2018 & 2019 #1 speeds (which gives you 22.20) because probably the 2018-19 estimates are better and more similar to what they'll use going forward. And you can do similarly with each spot in the rankings.