This project is taking data from an annual axe throwing skills tournament I run (FMG) and comparing it with data from the International Axe Throwing Federation’s (IATF) yearly global rankings, which are availible on the IATF’s website: https://axescores.com/players/collins-rating.
For competitive axe throwing, the IATF has two scoring styles: standard and premier. They utilize the same target– three rings for 5, 3, and 1, with a “clutch” worth seven points and only available on the final throw of a five-throw round. In premier throwing, the blade of the axe must be entirely within the ring, not “bleeding out” at all to count for the higher of the points on the three rings. A clutch must cover at least 1.5” of the 2” diameter clutch to count for seven points. Previously, any throw that touched the clutch but didn’t make that 1.5” measure was worth zero points, but effective March of 2024, the IATF released a rule change that made it so that a “standard clutch” (a throw where the blade is touching the circle at all) was worth five points instead.
The tournament that I run is a skills tournament, meaning the throwing style is completely different than the style of regular competitive play. Skills tournaments, since they have no bearing on a player’s global ranking, can be scored however the venue wants. My tournament follows an Olympic-style scoring, where each player competes in a variety of events to earn points, and the player with the most total points wins. There is almost no similarity to the scoring of this tournament and the scoring of regular play. The purpose of comparing these two is to see if players who are good at competitive play tend to do better at this skills tournament, and also to look for trends within the regular competitive play as a whole– do player averages get better over time? Do things like major rule changes have an effect on the entire population of throwers (as opposed to just the top throwers/people who compete in tournaments)?
The original plan of this project assumed that there wasn’t much to do data wrangling-wise, so to make the project more involved, I had planned on web-scraping the data from the IATF website. It ended up being that there was more data wrangling to do than I had thought, so I switched the focus away from web scraping.
The FMG tournament data, since it was set up in a Google Sheet I had made and not run through axescores (the IATF’s scoring app), was in a very different format than the IATF data. The main issue here was that the variables I planned on using as keys, like First, Last, and Username, were different in my tournament data. Players’ nicknames were different year to year, because these sheets didn’t live update in the way that the IATF site updates when a player changes their nickname. There were also smaller differences, like shortening of names (think Jason -> Jay, David -> Dave) that wouldn’t allow for a key match that I needed to fix by hand. I then needed to take everything that was spelled correctly and put it in the same order as the IATF data; in my spreadsheets, the names were formatted as Username (Firstname Lastname), whereas the IATF names were formatted as Firstname (Username) Lastname. This required me to use stringr to extract the different names, and then paste them in the correct order.
The three IATF sheets, since they automatically updated the names to match across all years, didn’t need as much care with the names, but for some reason still gave me some duplicate rows with one value that was wrong across the duplicates. I looked through the league information for the nine players that had two rows and figured out that all but one of them were from the same venue and had thrown in the same season in 2022, so what I think was causing (most of) this issue was that the league admin didn’t properly close out the season or didn’t have everyone finish out their games, so those season averages didn’t factor into the overall average quite right.
Once the various sheets were all joined, I needed to pivot the data a couple times to get it into a structure that would work for the visualizations I wanted to make. When the data is freshly joined it looks like this:
| FirstN | Username | LastN | CRS22 | CRS23 | CRS24 | AVG22 | AVG23 | AVG24 | Rank22 | Rank23 | Rank24 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Philippe | (🌷 𝓛𝓪𝓯𝓵𝓮𝓾𝓻🌷) | Lafleur | 1620 | 1601 | 1714 | 64.988 | 64.813 | 71.979 | NA | NA | NA |
| Justin | (Just-in Time) | Vicari | 1619 | 1729 | 1756 | 64.015 | 65.217 | 73.288 | 2 | NA | 3 |
| Curtis | (Warner) | Baptist | 1616 | 1684 | 1725 | 65.407 | 66.571 | 73.468 | NA | 3 | 1 |
And I needed it to look like this instead:
| FirstN | Username | LastN | year | CRS | AVG | Rank | FullN |
|---|---|---|---|---|---|---|---|
| Blake | (Papa Blake) | Rodgers | 2022 | 1691 | 63.071 | NA | Blake (Papa Blake) Rodgers |
| Blake | (Papa Blake) | Rodgers | 2023 | 1736 | 61.088 | NA | Blake (Papa Blake) Rodgers |
| Blake | (Papa Blake) | Rodgers | 2024 | 1721 | 58.688 | NA | Blake (Papa Blake) Rodgers |
To do this, I pivoted the original joined data longer, so that the columns were the IDs, year, Metric (CRS, AVG or Rank), and Value, then pivoted wider again, this time keeping year as an ID column. There is another way I pivoted this data, to get columns that were the IDs, Metric, 2022, 2023, and 2024, although I didn’t end up using it in this project.
In the sport of axe throwing, there are two types of tournaments: Circuit Tournaments, which follow a standardized rule set and are scored/recorded by the International Axe Throwing Federation (IATF), and Skills Tournaments, which aren’t formally recorded and have no required rules or structure. Circuit tournaments follow the same scoring as League Play, where players get five throws to a round, and have a three ring/two clutch target.
Skills tournament scoring is up to the host venue to decide, and doesn’t factor into any official player stats. The skills tournament I run annually in Boynton Beach follows an Olympic-style scoring and has little to no similarity to League Play scoring. Using data from this skills tournament, as well as the IATF’s own database of player stats, what can we learn about axe throwing scores from the last three years?
The IATF database gives us two measures for player performance: Collins Rating Score (CRS) and Average. CRS is a win-loss ratio that weighs changes in score based on difficulty of a game – if a player with a low CRS wins a game against someone with a higher CRS, they get a larger boost to their score than if they had won to someone with a similar or lower CRS. Average refers to the average 15 throw total of a regular league game, where a perfect score is an 81 (three rounds of four bullseyes plus one clutch: 5-5-5-5-7). Generally, we can consider recreational throwers to average a score below 55, and competitive throwers to average above 55.
These metrics both measure performance, a ‘good’ thrower would have a high CRS and a high average, but they account for different interpretations of what really is a good thrower. If we were to only focus on average, the competitive aspect of the game is lost, and players would only shoot for the highest possible points on each throw, independent of what the opposing player is throwing. CRS is then a better measure in a competition sense, because it rewards players who may have gone for a lower point score that is a better move strategically, but has flaws in that a competitive thrower playing in a recreation league will have a much higher win streak playing amateur throwers.
Let’s look at the comparison for Average vs CRS, for all players 2022-2024:
There is certainly a correlation between the two, and the correlation seems to get stronger as CRS gets higher. If we look at this in terms of high vs. low CRS, we can see that high CRS players have averages mostly over 50, with a huge cluster of the high CRS throwers having averages from 50-65, whereas the majority for low CRS throwers is a much wider scope (around 30-60).
Now, lets look at ranking in a skills tournament, using our performance metrics:
The two graphs look similar in shape, with high CRS throwers making up the majority of the tournament. For the bottom half of the tournament (8th-15th place), the correlation waivers a bit, but the shape is still similar between each metric. The upper half of the tournament (1st-7th place), however, has a more visible line with less variation for both metrics. Even though the tournament scoring is very different than regular play, players who perform well in league play seem to before better in this skills tournament.
Just looking at the scatter plot from before, we can see that the averages recorded for 2024 are above the averages for the previous years, pretty much across the board:
If we look at averages over time, we can see that for the high CRS players, the increase is steeper from 2023 to 2024 than 2022 to 2023, and seems to be steeper than the low CRS players’ improvement:
We can also look at specifically how much the improvement was:
So from 2022 to 2023, the mean change in average score for both high and low CRS throwers was around 0. 2023 to 2024 however, low CRS throwers have a mean of around 4 points higher, and high CRS throwers have a mean of around 8 points higher. For both improvements, the high CRS throwers also seem to be more concentrated around the mean, and the low CRS throwers have more variation.
CRS and Average are similar measures, and are more accurate predictors of each other the higher you go in either metric
The 2024 averages are notably higher across the board, and the difference is greater for high CRS throwers (who we expect to be competitive) than low CRS throwers (who we expect to be recreational).