Verified Commit 296a9839 authored by Markus Shepherd's avatar Markus Shepherd 🙊
Browse files

added conclusion

parent e3d2ac62
......@@ -10,6 +10,8 @@ tags:
- ranking
---
<!-- TODO TL;DR: Geek score calculated by adding 1500-1600 ratings of 5.5; alternative ratings with different choices. -->
I often describe [BoardGameGeek (BGG)](https://boardgamegeek.com/) as "the [Internet Movie Database (IMDb)](https://www.imdb.com/) for games". Much like its cinematic counterpart, the biggest board game database not only collects all sorts of information obsessively, but also allows users to rate games on a scale from \\(1\\) (*awful - defies game description*) to \\(10\\) (*outstanding - will always enjoy playing*). These ratings are then used to rank games, with {{% game 174430 %}}Gloomhaven{{% /game %}} occupying the top spot since December 2017.
While BGG founder Scott Alden admitted in a recent interview on the excellent [Five Games For Doomsday](https://fivegamesfordoomsday.com/2020/07/06/scott-alden/) podcast that he doesn't care all that much about the rankings, gamers around the world certainly do. They would discuss heatedly any movement in the rankings, question why games X is up there while game Y is missing, and generally criticise the selection for either having *too many* or *not enough* recent releases.
......@@ -86,6 +88,23 @@ Unsuprisingly, we get almost the same result as above: the best possible correla
But since we made it this far, let's take it one step further. So far, we tried to optimise the correlation in order to recreate BGG's ranking. However, we can also try to recreate the actual *geek scores*. That is, we can look for the number of dummy ratings that will yield the closest to the actual geek score with our calculations. What exactly we mean by "closest" is up to us to define. A common metric is the *mean squared error*.[^root] It's not worth getting into the maths here either, but the general idea is that we want to punish outliers in our estimates more (qudratically so) the further away they lie from the actual datapoint. Long story short, this yields a minimum for around **\\(1630\\) dummy ratings**.
Let's take one last swing and see what happens if we don't fix the dummy value at \\(5.5\\) but allow that to be variable as well. This is no problem for the optimisation algorithm and yields the following results:
* the best correlation with **\\(1888\\) dummy ratings of \\(5.552\\)**, and
* the least squared error with **\\(1611\\) dummy ratings of \\(5.494\\)**.
Either of those improvements are hardly noticable (in fact insible after rounding), but they do confirm nicely a dummy value of \\(5.5\\).
# Conclusion
All things consider, we can be confident that BoardGameGeek calculates their rankings by adding around **\\(1500\\) to \\(1600\\) dummy ratings of \\(5.5\\)** to the regular users' ratings. What exactly constitutes a regular user, and what ratings might be discarded due to shilling, remains a well guarded secret though. Note that the number of dummies is pegged to the overall number of ratings, so this is a moving target, and the calculations would change as time passes.
Now I must applaud anybody who actually made it all the way through this pretty dry and technical article. The real reason why I dwelled so much on the ratings, and how they are compressed into the BGG rankings, is to get a feeling of what's going on behind the scenes, what the can express, and what they cannot or even *do not try to* express. Another major take-away is that any of these decisions are choices that need to be made and that come with certain tradeoffs – like them or not.
In this particular case, I have the feeling that both the Cult of the New™ and connoisseurs of classic games are equally unhappy about the BGG top 100, which one should probably consider a compliment.
<!-- TODO alternative rankings with different choices for those values -->
# External resources
* https://www.peterjezik.com/bgg/
......
......@@ -32,10 +32,10 @@ z
<defs>
<path d="M 0 0
L 0 3.5
" id="m77f4fe6811" style="stroke:#000000;stroke-width:0.8;"/>
" id="mdbd2b7c087" style="stroke:#000000;stroke-width:0.8;"/>
</defs>
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="69.218182" xlink:href="#m77f4fe6811" y="252"/>
<use style="stroke:#000000;stroke-width:0.8;" x="69.218182" xlink:href="#mdbd2b7c087" y="252"/>
</g>
</g>
<g id="text_1">
......@@ -87,7 +87,7 @@ z
<g id="xtick_2">
<g id="line2d_2">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="109.8" xlink:href="#m77f4fe6811" y="252"/>
<use style="stroke:#000000;stroke-width:0.8;" x="109.8" xlink:href="#mdbd2b7c087" y="252"/>
</g>
</g>
<g id="text_2">
......@@ -129,7 +129,7 @@ z
<g id="xtick_3">
<g id="line2d_3">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="150.381818" xlink:href="#m77f4fe6811" y="252"/>
<use style="stroke:#000000;stroke-width:0.8;" x="150.381818" xlink:href="#mdbd2b7c087" y="252"/>
</g>
</g>
<g id="text_3">
......@@ -164,7 +164,7 @@ z
<g id="xtick_4">
<g id="line2d_4">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="190.963636" xlink:href="#m77f4fe6811" y="252"/>
<use style="stroke:#000000;stroke-width:0.8;" x="190.963636" xlink:href="#mdbd2b7c087" y="252"/>
</g>
</g>
<g id="text_4">
......@@ -212,7 +212,7 @@ z
<g id="xtick_5">
<g id="line2d_5">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="231.545455" xlink:href="#m77f4fe6811" y="252"/>
<use style="stroke:#000000;stroke-width:0.8;" x="231.545455" xlink:href="#mdbd2b7c087" y="252"/>
</g>
</g>
<g id="text_5">
......@@ -269,7 +269,7 @@ z
<g id="xtick_6">
<g id="line2d_6">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="272.127273" xlink:href="#m77f4fe6811" y="252"/>
<use style="stroke:#000000;stroke-width:0.8;" x="272.127273" xlink:href="#mdbd2b7c087" y="252"/>
</g>
</g>
<g id="text_6">
......@@ -285,7 +285,7 @@ z
<g id="xtick_7">
<g id="line2d_7">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="312.709091" xlink:href="#m77f4fe6811" y="252"/>
<use style="stroke:#000000;stroke-width:0.8;" x="312.709091" xlink:href="#mdbd2b7c087" y="252"/>
</g>
</g>
<g id="text_7">
......@@ -301,7 +301,7 @@ z
<g id="xtick_8">
<g id="line2d_8">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="353.290909" xlink:href="#m77f4fe6811" y="252"/>
<use style="stroke:#000000;stroke-width:0.8;" x="353.290909" xlink:href="#mdbd2b7c087" y="252"/>
</g>
</g>
<g id="text_8">
......@@ -321,10 +321,10 @@ z
<defs>
<path d="M 0 0
L -3.5 0
" id="mcf9366d2ae" style="stroke:#000000;stroke-width:0.8;"/>
" id="m712d9ff00b" style="stroke:#000000;stroke-width:0.8;"/>
</defs>
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="54" xlink:href="#mcf9366d2ae" y="228.166299"/>
<use style="stroke:#000000;stroke-width:0.8;" x="54" xlink:href="#m712d9ff00b" y="228.166299"/>
</g>
</g>
<g id="text_9">
......@@ -404,7 +404,7 @@ z
<g id="ytick_2">
<g id="line2d_10">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="54" xlink:href="#mcf9366d2ae" y="194.934153"/>
<use style="stroke:#000000;stroke-width:0.8;" x="54" xlink:href="#m712d9ff00b" y="194.934153"/>
</g>
</g>
<g id="text_10">
......@@ -422,7 +422,7 @@ z
<g id="ytick_3">
<g id="line2d_11">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="54" xlink:href="#mcf9366d2ae" y="161.702007"/>
<use style="stroke:#000000;stroke-width:0.8;" x="54" xlink:href="#m712d9ff00b" y="161.702007"/>
</g>
</g>
<g id="text_11">
......@@ -451,7 +451,7 @@ z
<g id="ytick_4">
<g id="line2d_12">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="54" xlink:href="#mcf9366d2ae" y="128.469861"/>
<use style="stroke:#000000;stroke-width:0.8;" x="54" xlink:href="#m712d9ff00b" y="128.469861"/>
</g>
</g>
<g id="text_12">
......@@ -469,7 +469,7 @@ z
<g id="ytick_5">
<g id="line2d_13">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="54" xlink:href="#mcf9366d2ae" y="95.237715"/>
<use style="stroke:#000000;stroke-width:0.8;" x="54" xlink:href="#m712d9ff00b" y="95.237715"/>
</g>
</g>
<g id="text_13">
......@@ -487,7 +487,7 @@ z
<g id="ytick_6">
<g id="line2d_14">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="54" xlink:href="#mcf9366d2ae" y="62.005569"/>
<use style="stroke:#000000;stroke-width:0.8;" x="54" xlink:href="#m712d9ff00b" y="62.005569"/>
</g>
</g>
<g id="text_14">
......@@ -504,7 +504,7 @@ z
</g>
</g>
<g id="line2d_15">
<path clip-path="url(#p837225bdf6)" d="M 69.218182 240.679539
<path clip-path="url(#p25591d078c)" d="M 69.218182 240.679539
L 75.914182 206.691243
L 80.378182 186.004291
L 80.986909 183.507391
......@@ -786,7 +786,7 @@ L 388.8 34.56
</g>
</g>
<defs>
<clipPath id="p837225bdf6">
<clipPath id="p25591d078c">
<rect height="217.44" width="334.8" x="54" y="34.56"/>
</clipPath>
</defs>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment