District Strength Analysis

https://docs.google.com/spreadsheets/d/1DEeYcwUWF7kg4T1imi7sZsUBfuGvzT5PGycAE-YN3_Y/edit?usp=sharing

I averaged the qualification and eliminations scores of all events played up until this point (end of week 4) to get a relative idea of the strength of all the currently existing districts. Why? I had time between classes and wanted to confirm my biases of course.

This method obviously has issues. For one it doesn’t take into account how regions have different levels of defense (I’ve heard rumors about Indiana). It also just gives an overview of how strong the average team is in a given district, and does not account for the influence of powerhouse teams other than their contribution to the average. A region like FIT for example has quite a few powerhouse teams, but their scores are fairly low. Also, since not all events have been played yet, some “big” events in regions are not accounted for yet. For example, Bensalem and Montgomery are slated to be FMA’s strongest events but haven’t been played yet. Overall this was just a quick look at the average scores and probably not the best metric.

TL;DR:
Quals: IN>FMA>NE>ONT>ISR=PNW>FIM>CHS>FNC>FIT>PCH
Elims: IN>NE>FIM>CHS>FMA>ONT>PNW>FIT>FNC>ISR>PCH

I’m kind of surprised by how close some of the scores were. Many regions were within 1 point of each other. I’m not sure if they elims or quals is a better metric. I’m leaning towards quals because it is every team at the event, while elims eliminates the bottom teams. I’ll keep this updated as the season progresses and might add some possible regions such as NY, Cali, and WOW if I get bored.

2 Likes

Would it make sense to compare some additional metrics beyond simply average scores? Such as rocket completion rates, habitat climb rates, or habitat RP rates?

5 Likes

Probably, I figured average scores would give the best overview. A district may have a lot of HAB 3 climbers but not a lot of good cyclers. I’ll take a look later.

I very much question the order of both quals and elims.

1 Like

I know for CHS that defense has been not fully utilized by many teams and could be the reason for why they have such a high elim’s score. There have been several very powerful triple scoring alliances in that region and with such small event sizes make the second pick harder to use on defense than using them for a few extra cycles.

1 Like

I’m curious what you mean? This isn’t my subjective opinion or an in-depth analysis of each region. I literally just ordered districts by their average match score.

1 Like

ISR is not on the same level as PNW, just a cursory glance of top tier bots. Nor would I put PNW above FIM, or NE above any of the three.

Just looking at average match score in itself seems flawed granted all of mine is from basic analysis of what ive watched.

Honestly, I agree that it’s flawed. I looked at it because I wanted to ignore the top tier bots. We often hear how strong Texas is simply because it has a few powerhouse teams. But looking at their match scores its pretty clear that outside of a select few teams their events are weaker than many other districts. What’s more important when judging relative strength, the average teams or the best teams? I just thought it would be interesting, and for the most part the scores were so close that you can’t really make a judgement off of them anyway.

3 Likes

Should you include some sort of normalization depending on which weeks the events happened in? Overall match scores have risen almost 10 points over the season and I’m sure this might skew some of the averages for districts that are spread to later weeks of the season.

I’m curious what the average and standard deviation are, but also yah: good vs bad vs no defense makes a large difference, as does week.

For the kind of quick-and-dirty analysis we’re doing here I think this is a pretty good idea; it has a lot of value relative to the annoyance of doing it.

Perhaps consider each event’s contribution to be: (eventAverage / weekAverage) and then average these contributions. The result will be less immediately interpretable but help the weighting.

5 Likes

I have a feeling this is a decent measure of what regions have less bad robots. Robots that can’t score drag down these numbers much more than powerhouse teams inflate them.

1 Like

As a PCH team, I interpret this as PCH having the best defensive robots out there :slight_smile:

2 Likes

So you can see what the OP is saying in his post, but I’ve got a handy guide here for what he’s really saying:

:wink:

2 Likes

Might be worth looking at it by point differential, as it wouldn’t penalized districts that play defense/reward those that don’t. A strong district would have closer scores than a weak one.

Also might be interesting to track foul points and see what district breaks the rules the most.

1 Like

Fouls would be a tough metric to measure, due to the variance of the way different refs call pinning. Eg. I have seen pin timers stop as soon as the robot is no longer touch and I have seen pinning penalties happen when the robot had backed up 10 feet. These are obviously fringe cases but even region does have some variance in Reffing.

Something unrelated I noticed when actually looking at the spreadsheet:
The average of the average score of each district event is not the average score of each match played in the district. It seems to me to be unlikely to make a huge difference in the results, but be aware precisely what you’re looking at. You can retrieve the average of each match in the district by weighting each event by the number of matches played.

Edit: added a .py file with functions to do those calculations, for the interested.

district_avg_score_script.py (1.7 KB)

1 Like

Update: to answer @Lil_Lavery’s question, I also wrote this set of python functions. This allows you to define your own objective function. I also provide some handy objective functions: average score, average score minus fouls, habRP docking rate, hab3 climb rate, and rocket completion rate.

You’ll have to include your own TBA auth key (this is easily gotten on your account page on TBA), and install tbapy. I’ll also attach an excel file with the results for each of the objective functions I’ve defined if you don’t want to do that. If you’re curious about some other statistic feel free to ask about it.

district_generic_summary.py (3.8 KB)

summary_results.xlsx (10.6 KB)

1 Like

Just skimming this thread in passing, but wouldn’t an easy(er) metric to give more robust ranking be: ranking by the average score of the losing alliance in elms? I don’t care how good your district is, if there are only ever 2 good teams at any given event and they pair up to make every match a blowout then your district is weak.

Tbh variance in scores is probably the best tell of district strength (that is easily computed & agreed upon). Higher scores with low variance = awesome. I’ll leave it up to the hivemind to figure out the weights on scores vs variance. (You can ignore my rage inducing statement in the paragraph above :roll_eyes: )

Would anyone be willing to run the ANOVA on average elim scores by district? I have a hunch that not a whole lot is significant. Nvm, I did it, not a whole lot in terms of significance here. But we do have some very small samples in here…
(alpha = 0.05)

> dstStrWk4<-read.csv("DistStr_wk4_2019.csv")
> aov(formula = Elims ~ Dist, data = dstStrWk4)
Call:
   aov(formula = Elims ~ Dist, data = dstStrWk4)

Terms:
                     Dist Residuals
Sum of Squares   837.8824 1387.8381
Deg. of Freedom        10        60

Residual standard error: 4.809432
Estimated effects may be unbalanced
> pairwise.t.test(x = dstStrWk4$Elims, g = dstStrWk4$Dist, p.adjust.method = "bonferroni")

	Pairwise comparisons using t tests with pooled SD 

data:  dstStrWk4$Elims and dstStrWk4$Dist 

    CHS   FIM   FIT   FMA   FNC   IN    ISR   NE    ON    PCH  
FIM 1.000 -     -     -     -     -     -     -     -     -    
FIT 1.000 0.212 -     -     -     -     -     -     -     -    
FMA 1.000 1.000 1.000 -     -     -     -     -     -     -    
FNC 1.000 1.000 1.000 1.000 -     -     -     -     -     -    
IN  1.000 1.000 0.392 1.000 0.744 -     -     -     -     -    
ISR 0.495 0.130 1.000 0.751 1.000 0.165 -     -     -     -    
NE  1.000 1.000 0.670 1.000 1.000 1.000 0.295 -     -     -    
ON  1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 -     -    
PCH 0.192 0.037 1.000 0.290 1.000 0.075 1.000 0.100 1.000 -    
PNW 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000

P value adjustment method: bonferroni

… and for those curious about quals…

> aov(formula = Quals ~ Dist, data = dstStrWk4)
Call:
   aov(formula = Quals ~ Dist, data = dstStrWk4)

Terms:
                     Dist Residuals
Sum of Squares   723.1389 2225.0262
Deg. of Freedom        10        60

Residual standard error: 6.089645
Estimated effects may be unbalanced
> pairwise.t.test(x = dstStrWk4$Quals, g = dstStrWk4$Dist, p.adjust.method = "bonferroni")

	Pairwise comparisons using t tests with pooled SD 

data:  dstStrWk4$Quals and dstStrWk4$Dist 

    CHS  FIM  FIT  FMA  FNC  IN   ISR  NE   ON   PCH 
FIM 1.00 -    -    -    -    -    -    -    -    -   
FIT 1.00 1.00 -    -    -    -    -    -    -    -   
FMA 1.00 1.00 0.40 -    -    -    -    -    -    -   
FNC 1.00 1.00 1.00 1.00 -    -    -    -    -    -   
IN  1.00 1.00 0.54 1.00 1.00 -    -    -    -    -   
ISR 1.00 1.00 1.00 1.00 1.00 1.00 -    -    -    -   
NE  1.00 1.00 0.74 1.00 1.00 1.00 1.00 -    -    -   
ON  1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 -    -   
PCH 1.00 1.00 1.00 1.00 1.00 0.97 1.00 1.00 1.00 -   
PNW 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00

P value adjustment method: bonferroni

Input data:

|Dist|Event|Quals|Elims|
|---|---|---|---|
|CHS|VAHAY|41.46|59.67|
|CHS|MDBET|37.87|60.97|
|CHS|MDOWI|50.9|69.11|
|CHS|VAPOR|47.43|64.37|
|CHS|MDOXO|52.25|65.25|
|FIM|MIGIB|45.03|64.73|
|FIM|MIKET|40.99|62.15|
|FIM|MISOU|39.66|59.72|
|FIM|MIBEL|45.54|63.91|
|FIM|MIKE2|48.27|61.5|
|FIM|MILAK|41.76|59.38|
|FIM|MIMIL|45.96|65.03|
|FIM|MISJO|42.41|55.83|
|FIM|MICEN|46.06|66.83|
|FIM|MIDET|43.12|57.56|
|FIM|MIGUL|47.15|64.25|
|FIM|MIMUS|41.1|55.97|
|FIM|MIKNG|37.45|60.21|
|FIM|MIALP|44.94|64.12|
|FIM|MIJAC|51.23|68.88|
|FIM|MILIN|58.24|77.53|
|FIM|MIMID|48.22|68.76|
|FIM|MIWMI|49.34|68.47|
|FIT|TXAUS|37.6|56.29|
|FIT|TXELP|34.1|52.57|
|FIT|TXAMA|39.67|55.17|
|FIT|TXSAN|29.77|48.91|
|FIT|TXCHA|39.28|56.34|
|FIT|TXPLA|40.61|59.63|
|FIT|TXGRE|52.81|69.66|
|FIT|TXDEL|47.19|61.09|
|ISR|ISDE1|38.17|50.97|
|ISR|ISDE2|45.37|51.24|
|ISR|ISDE3|49.96|58.36|
|ISR|ISDE4|55.51|60.08|
|FMA|PAHAT|44.91|62.89|
|FMA|NJFLA|42.05|60.1|
|FMA|PAWCH|45.2|59.75|
|FMA|NJBRI|48.43|60.03|
|FMA|PAPHI|59.23|69.18|
|FMA|NJTAB|55.79|66.36|
|FNC|NCWAK|33.43|50.61|
|FNC|NCGUI|37.28|58.71|
|FNC|NCASH|51.3|61.31|
|IN|INMIS|47.29|69.6|
|IN|INWLA|58.63|66.5|
|NE|NHGRS|40.22|57.37|
|NE|CTWAT|45.73|67.53|
|NE|MABRI|45.93|66.2|
|NE|MAREA|45.75|59.84|
|NE|NHSNH|41.16|61.25|
|NE|MABOS|50.8|61.43|
|NE|MAWNE|55.12|69.65|
|NE|RISMI|58.31|66.12|
|ON|ONOSH|46.31|59.69|
|ON|ONTO3|46.66|59.3|
|ON|ONTO1|48.99|63.79|
|ON|ONBAR|50.32|59.25|
|ON|ONWAT|48.38|68.64|
|ON|ONNYO|45.72|57.44|
|PNW|WAMOU|40.05|57.78|
|PNW|ORWIL|42.72|56.77|
|PNW|WAAMV|40.33|53.83|
|PNW|ORORE|47.37|59.75|
|PNW|WAYAK|49.61|60.53|
|PNW|WASPO|50.58|62.38|
|PNW|WASNO|60.12|66.33|
|PCH|GAGAI|35.4|57.67|
|PCH|GADAL|37.48|50.12|
|PCH|GAALB|40.46|51.5|
|PCH|GACOL|47.04|56.96|

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.