Statbotics: 2024 Season

Hi everyone! With Week 1 events just around the corner, I’m excited to share a few updates to Statbotics.

EPA V2

The Expected Points Added (EPA) metric is getting a revamp!

  1. EPA Breakdowns: See detailed breakdowns of scoring contribution. When applicable, game constraints are taken into account to improve predictive power.

  2. 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.

  3. 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.

New Website

Statbotics V2

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!

139 Likes

Great update! I’m really excited to use statbotics during competition. Thanks for making this possible :grin:

3 Likes

Statbotics has changed how FRC teams scout. This is a fantastic resource and we appreciate all the work you do to make it happen!

45 Likes

I think this is meant to be The Thrifty Bot

6 Likes

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?

7 Likes

This also happens to me whenever I try to access the site on iOS (Chrome, Safari, and Firefox).

1 Like

Oddly enough this used to happen to me on the old site, but not the updated one.

1 Like

I have the same problems. The old site seems to be working but not V2.

2 Likes

Looks like the V2 site is attempting to hit a localhost API

1 Like

Oops, the V2 website is very experimental :sweat_smile:. Should be fixed now

5 Likes

Confidence intervals is game changing. Thanks!

8 Likes

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

Edit: Talking about the V2 website

3 Likes

I am getting the same

2 Likes

The team, event, and match pages are not yet implemented on the V2 website. Only the teams, events, and matches pages are implemented.

4 Likes

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?

4 Likes

How is EPA calculated preseason?

1 Like

Thanks for reporting this bug!

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!

5 Likes

Is there something wrong with the Harmony RP EPA right now? It shows -0.336 for every team.

2 Likes

It appears that none of the events in Turkey this year are there? Also if you sort teams by country and select Turkey, none appear

3 Likes

I was wondering if by chance no one had scored harmony, but it did happen at least once.

1 Like