Confidence Intervals: A 95% confidence interval is included with every EPA prediction. This will help teams better incorporate EPA alongside other metrics with the appropriate weight.
Better Tuning: Some parameters have been tweaked to improve model performance. Notably, EPA no longer tries to predict defense and updates a bit slower than before. As a result, EPA V2 is the best performing match prediction model in each of the past 10 years. The model is also much better calibrated and uses EPA breakdowns to improve RP predictions substantially. I will write a more detailed blog post about the changes soon.
This offseason, I started a website rewrite to address some limitations of the current setup and better showcase the new features. The V2 website has better tables, better bubble charts, EPA confidence intervals, dark mode, faster load time, and a bunch of smaller improvements. Unfortuantely, building the website took longer than anticipated and is not finished. The team, event, and match pages are still under construction and everything is a bit rough.
For the 2024 season, I have decided to run both the old and new websites. I plan on adding features to the new website throughout the competition season, so please be vocal about bugs and feature requests! By next season, I plan to fully deprecate the old website.
V3 API Endpoints
There are new REST API V3 endpoints that expose EPA breakdowns and confidence intervals through the API. The V2 endpoints are exactly the same as before. Like the website, I plan to deprecate the V2 endpoints before the 2025 season.
Sponsors
I am excited to announce that Statbotics is now sponsored by The Thrifty Bot! Huge shoutout to Ryan and Sam at Thrifty Bot who have done so much to make FRC more affordable and sustainable.
Their support, alongside many individual donors, allows me to continue working on Statbotics and hosting the application. Statbotics reached almost 100,000 people last year and I can’t wait to see what this year brings. Looking forward to another great season!
When I load the Statbotics v2 page, I find that the data is either blank or stuck loading indefinitely. Is this a known issue or is there something wrong on my end?
All the event and team data I’ve tried looking at hasn’t been showing up and it saying error 404, so I’m not sure if it’s just not pulling something correctly or if it’s just on my end
For the ISDE1 event, looking at F1M1, I see individual total_points EPA values for the finalist teams as:
Blue
2679: 5.67
1942: 23.95
5951: 23.93
Red
3339: 33.18
5135: 10.12
1690: 41.83
This gives summed EPA values for the alliances of:
Blue: 53.55
Red: 85.13
If I look at the API endpoint V3/match/2024isde1_f1m1, I see:
pred.blue_score: 61.01
pred.red_score: 97.01
If I look at the Elim Matches page under Finals 1-1 (or any of the Finals rows), I see:
Score Preds - Blue: 70
Score Preds - Red: 111
I suppose something is happening such that the sum of the alliance EPA values does not equal the match prediction EPA values from the match endpoint in the API. Is there any place where this difference is explained?
It’s less clear why the match predictions from the API and the match predictions on the Elim Matches page are not the same. Any explanation for what is happening there? Is there an API endpoint that would deliver the alliance score predictions as shown on the Elim Matches page?
EPAs are computed using the “clean” match score, excluding fouls. When estimating the match score, a foul_rate multiplier is applied. Based on matches so far, that rate is around 14%. Previously, the API would output the summed EPAs and the website would handle the foul multiplier. This year, the API outputs the match prediction, but I forgot to undo the website multiplier. As a result, the predicted fouls were getting double counted (fixed now). The correct prediction was 97-61.
A team’s start of season EPA is seeded with a linear combination of their EPA last year (42%) and two years ago (18%). Additionally, there is a 40% weight for the average EPA for mean reversion. Offseason and preseason matches do not affect a team’s EPA.
Additionally, I fixed a bug with the “Competing” dropdown on the teams page. You can once again use this dropdown to see which teams are competing this week. Let me know if anything else looks broken!