Offense/Defense rankings for 1043 teams

Warning: Use for scouting at your own risk. These numbers are for entertainment purposes only. The way these were computed leaves them open for a team without a shooter (like 1281) to be carried by some high-scoring teams (like 1114 and 1503) to the top of the rankings. In fact, if you look at the finals-only data, you’ll see that 1281 ended up ABOVE 1114 and 1503, despite not having a shooter in all the matches played (GTR isn’t included). Another example of the flaw in this method is that the top 3 defensive teams are all Israeli, since they were competing against mainly rookie teams.

I grabbed all the matches that FIRST had posted and ran it through an excel macro. So here are the results.

Top 10 Offensive Teams by average points scored:

Team	For	Against
25	83.42	31.23
1114	75.67	26.08
1126	69.84	26.58
987	67.73	32.39
1503	67.26	31.36
1625	67.13	32.87
111	65.49	41.38
175	65.00	27.80
233	64.45	31.35
469	64.38	27.47

Top 10 Defensive Teams by average points scored against them:

Team	For	Against
1955	23.38	13.69
1657	36.88	14.06
1574	33.75	14.44
977	17.50	15.00
547	34.50	15.33
1944	16.83	15.58
1580	22.71	15.64
1578	25.57	15.86
843	21.47	16.07
1742	24.33	16.22

For the rest of the teams, see the attachment.

topOffense.txt (21.9 KB)
topDefense.txt (21.7 KB)

topOffense.txt (21.9 KB)
topDefense.txt (21.7 KB)

Great job…this is pretty cool.

I think your defensive ranking may reward teams that do not compete in the elimination rounds (they don’t play against top scorers), but otherwise it is good info to work with.

Thanks for doing a great job!


I realized that I should distinguish between elimination rounds just after I posted. So here’s a bunch including and excluding elimination rounds. Note that some regionals (such as the GTR) do not actually have their elimination scores posted. This is how 1281 managed to come third AHEAD of the triplets, as they were part of 1114 and 1503’s winning alliance at waterloo that scored enormous amounts of points.

Edit: Finals-only corrected. It had a bit of leftover data from previous runs of the script.

TopOffenseFinalsOnly.txt (11.1 KB)
topDefenseFinalsOnly.txt (11.1 KB)
topOffenseNoFinals.txt (21.9 KB)
TopDefenseNoFinals.txt (21.9 KB)

TopOffenseFinalsOnly.txt (11.1 KB)
topDefenseFinalsOnly.txt (11.1 KB)
topOffenseNoFinals.txt (21.9 KB)
TopDefenseNoFinals.txt (21.9 KB)

I will admit that is pretty cool. My team was ranked much higher on the defensive side then I would have thought.

The question is, can you rerun those number only for teams going to Atlanta. It might be interesting for scouting folks.

I caution you against using these numbers for scouting purposes. Our team ranked 310 in offence and we were a mainly defensive robot. It also shows us ranked 1017 defensively. If you ask anyone who played with us defense was our specialty.

The majority of our high score comes from when we were at the Purdue regional and we were paired with a good shooter and played strong defense (rarely shooting) and provided solid offensive picks for our shooting partners. We could also easily get up on the platform and get the extra points. The majority of the points scored against us was from our unbelievably bad draw at Western Michigan where we were forced to play offence too often because of the weakness of our partners or when we were up against so many good teams in a match and were the only robot playing defense.

Indysam has a good point: These only show scores, not actual robot quality. Bad luck for alliance pairings or simply being against an unstoppable force in finals can make your defense average look very bad (or in 1281’s case, make our finals offense look really, really good despite running 6/9 finals games with a 35lb strapped on instead of our shooter). Also, there are some regionals excluded, which is why not all 320 Atlanta-bound teams are in these attached files.

TopDefenseAtlanta.txt (6.13 KB)
TopOffenseAtlanta.txt (6.12 KB)
TopDefenseNoFinalsAtlanta.txt (6.12 KB)
topOffenseNoFinalsAtlanta.txt (6.12 KB)
TopDefenseFinalsOnlyAtlanta.txt (6.13 KB)

TopDefenseAtlanta.txt (6.13 KB)
TopOffenseAtlanta.txt (6.12 KB)
TopDefenseNoFinalsAtlanta.txt (6.12 KB)
topOffenseNoFinalsAtlanta.txt (6.12 KB)
TopDefenseFinalsOnlyAtlanta.txt (6.13 KB)

Ran out of attachments on that last post. I’ll use this post to reiterate: Statistics give you a general view of things. Particularely when we’re dealing with smaller numbers of matches played, they may not reflect the true quality of your robot. If GTR’s results were up, then 1281’s offense and defense rankings would be much higher because we performed better there. Perhaps use this as a starting point for scouting or just to see who you want to take a look at, but don’t base anything on just one piece of information that some guy posted on the internet.

tl;dr: These are for entertainment purposes only. Nobody takes any responsibility for poor scouting decisions made based on this data.

Edit: The list of teams attending atlanta was lifted from the last page of that thread where they’re trying to guess division placements. And apparently they forgot 1281, so now I can’t find out where we’d place :mad:

topOffenseFinalsOnlyAtlanta.txt (6.12 KB)

topOffenseFinalsOnlyAtlanta.txt (6.12 KB)

so pretty much, these rankings SHOULD NOT BE USED FOR SCOUTING since they include to many variables.? the biggest one is that the scores reflect an alliance as a whole and not the team itself alone

Basically. Teams that can’t score at all are rewarded by being on an alliance as a defensive force, due to the offensive capability of the other two robots.

Similarly, teams who didn’t play at events with other strong shooters look worse, due to not having partners who can score.

A real measure would be average points scored per team. Unfortunately that’s nearly impossible to do.

I never claimed they should be used for scouting, though it is good to repeat that they shouldn’t since people might put a bit too much trust in numbers posted by someone anonymously on the internet. So here it is again: USE FOR SCOUTING AT YOUR OWN RISK. Also, I have now put a warning on top of the thread.

As for numbers reflecting alliances as a whole, if that was truly an enormous flaw, then FIRST should probably re-work how regionals are run. This is nothing more than an aggregation of all the average scores, as if the entire planet was at a single regional together and were being ranked by that.

Statistics can be manipulated, massaged, and otherwise molded to say what ever you want them to say…

I’m didn’t mean to say they SHOULD be used for scouting. But if you see a team high up in the list that is in your division, they might be worth watching to see if was luck or skill that got them there. If you could make decisions based on numbers alone, we wouldn’t need scouting… just a set of match results…

Remember: “There are three kinds of lies - lies, damned lies and statistics.” ~Benjamin Disraeli

Stinks for the teams who went to regionals where the scoring system was messed up… :rolleyes:

what we are the top scoring robot??? HELL must be frozen over right now. not bad for a defensive team.


Looks like the Atlanta bound list is missing some teams…121 is going to Atlanta but is not on any of those lists.

It seems to me that one way to use stats like these to measure how teams really perform would be to look at margin of victory in the elimination rounds, where there are good teams on both sides and you are trying to maximize your own score/minimize your opponents. (unlike in qualifying where opponents score ties in to your ranking, giving incentive to not play shutdown defense)

You would have to look at whole alliance performance rather than individual teams, and then rely on your own scouting knowlege to know which teams in an alliance are offensive and which are defensive.

If you are bored, maybe you could run this again, but rank each alliance that competed in elims by their margin of victory (or loss).

I think that would be a useful scouting tool when combined with reports on how each team in an alliance plays the game.


Have to add a little caveat here…Teams that actively try to increase ranking points actually fudge the numbers. If you are trying to give points to your opponents then you can’t at the same time, score for yourselves. Look at the “for” and “against” numbers carefully…

Here is a link for some individual robot scoring at West Michigan and Chesapeake.

Individual Scoring Thread

Here is the way I determine whether a team is carried or is carrying the alliance.

  1. Compute all team’s average score for the event
  2. For each match, compute the average of Team X’s alliance partners mean score across the event. Find the difference between that particular match score, and the new calculated average. Keep track of this number for every team in every match.
  3. Sum all of the calculated differences for each team together, and divide by the amount of matches they played in.

This should give you a pretty normal distribution of teams centered around 0. If the team is carried, they should get a negative score based on the other teams in the alliance average scores. The team in question’s position on the normal curve shows how well they did… the farther to the right the better. The standard deviation and sample density tell you how hard the event actually was.

Here’s the actual excel sheet. You’ll have to disable macro security if you want to run the calculator. To only list teams going to atlanta, append an ‘a’ to whatever you enter into the input box at the beginning

Looks like the Atlanta bound list is missing some teams…121 is going to Atlanta but is not on any of those lists.

It is possible that 121 only went to regionals that don’t have match results posted. For some reason there are regionals that had match results last week or two weeks ago, but don’t have them anymore.

Let’s do a little linear algebra. :smiley:

Start with the assumption that each robot, on average, will contribute a certain number of points to their alliance’s total in the matches that they play. The goal is to try to find that number for each robot using just the data from match scores.

Call the number of points on average a team contributes to their alliance’s score their “offensive power rating”. Let the vector of offensive power ratings be p. p is what we are trying to find.

Let s be the vector of the total points for each team at the competiton (the sum of the points scored by their alliance in their matches).

We can also create an nxn matrix (where n teams are competing in the regional) that represents the schedule for the regional. Call this matrix M. Define M as follows: M(ji)=M(ij)=the number of matches team i plays on an alliance with team j. Also let M(ii) be the number of matches that the ith team plays in total.

Fixing i=k and summing over j, M(k1)p(1)+M(k2)p(2)+…+M(kn)p(n) should equal s(k) be the number of points the kth team’s alliances score at the competition. In other words, Mp=s.

Can we can solve for p here? Yes, because M will always be nonsingular (unless one team plays all of its matches with another team).

I broke everything down regional-by-regional, because many teams who perform poorly at one regional do very well in the next.

And the winners are:

Team Offensive Power Rating Regional
1114 62.31 Waterloo
25 61.74 Las Vegas
469 51.31 Detroit
233 50.55 Boston
25 50.21 Trenton
1126 48.38 FingerLakes
1114 47.04 GLR
175 46.48 Annapolis
987 45.52 Arizona
111 45.22 Wisconsin

Mean is 10.14, Median is 8.46.

I did not include elimination rounds. Nor did I include GTR, SBPLI, UTC, or BAE (missing or no match data). I will share all the offensive ratings with anyone who asks. Defensive ratings can be done in a similar fashion but your results will not really tell you who the good defensive robots are (i.e. the defensive ratings will be useless). I would appreciate results for the regionals I am missing.

1 Like

didnt want it to appear as if i was shouting, simply wanted to point out the obvious, sorry