De BreinScore: hoe wij meten en waarom zo
De BreinScore rekent elke spelprestatie om via een vaste ankercurve per spel, waarop 50 een doorsnee prestatie is. Die curve is onze aanname, gecontroleerd op 4000 gesimuleerde spelers met een mediaan van 49,7 en een standaarddeviatie van 22,1.
Door de redactie van Skillido. Bijgewerkt op .
De meeste tests op internet vertellen je het getal en niet hoe het getal gemaakt is. Wij doen het omgekeerd, want de BreinScore is een spelscore en daar zit een reeks keuzes onder die je mag nakijken. Dit artikel zet die keuzes op een rij, met de ankerpunten erbij zoals ze in de code staan.
Wie liever de korte versie leest, kan terecht op Hoe de BreinScore werkt. Hieronder staat de lange versie, inclusief het deel dat tegen ons in werkt.
Waarom ligt er een vaste curve onder de score en geen gemeten verdeling?
De eerlijke reden is dat we nog geen verdeling hebben om tegen te meten. Skillido is nieuw en heeft geen spelerspoule. Wie bij de eerste tientallen deelnemers zegt dat jij op de mediaan zit, verkoopt een verzonnen getal met een cijfermatig jasje eromheen.
Bij drie spelers is de eerste speler per definitie het midden. Bij dertig spelers hangt het midden af van wie er die week toevallig langskwam via welke advertentie. Zo'n referentiepunt beweegt elke dag, en dan betekent dezelfde score in juni iets anders dan in september.
Daarom gebruiken we een vaste referentiecurve per spel. Voor elk spel hebben wij vastgelegd welke prestatie bij welke score hoort, en die ankerpunten veranderen niet terwijl er spelers bijkomen. Dat maakt de schaal stabiel en spelers onderling vergelijkbaar, en het is meteen de zwakke plek: die punten zijn door ons gekozen.
Hoe wordt één spelresultaat een getal tussen 0 en 100?
Elk spel levert een ruwe uitkomst op in zijn eigen eenheid. Het Geheugen-grid geeft een reeks vakjes, Snelklik geeft milliseconden, de Rekensprint geeft een aantal goede sommen. Die getallen zijn onderling onvergelijkbaar, dus zetten we ze om.
De omzetting is lineaire interpolatie tussen zes ankerpunten. Ligt je ruwe uitkomst precies op een anker, dan krijg je de bijbehorende score. Ligt hij ertussenin, dan schuift de score evenredig mee. Ligt hij buiten het hoogste of laagste anker, dan vlakt de curve af op 100 respectievelijk op de bodemwaarde, zodat een uitschieter de schaal niet openbreekt.
Een voorbeeld. Bij Geheugen-grid ligt anker 5 vakjes op score 50 en anker 7 vakjes op score 80. Haal je 6 vakjes, dan zit je op de helft van dat stuk en wordt je score 50 plus de helft van 30, dus 65. Er zit geen weging tussen en geen verborgen bonus.
De BreinScore zelf is daarna het ongewogen gemiddelde van de vijf domeinscores. Alle vijf de spellen tellen even zwaar mee, ook het spel dat je niet ligt.
Welke prestatie hoort bij welke score, per spel?
Hieronder staan de drie ankers die het meest zeggen: de prestatie die op 20 uitkomt, die op 50 uitkomt en die op 80 uitkomt. Ze komen rechtstreeks uit de tabel in de code, dus als de code verandert verandert deze tabel mee.
| Spel | Wat we meten | Score 20 | Score 50 | Score 80 |
|---|---|---|---|---|
| Geheugen-grid | Hoogst gehaalde reeks vakjes | 3 | 5 | 7 |
| Snelklik | Mediane reactietijd in milliseconden | 700 | 520 | 400 |
| Patroonreeks | Goed opgeloste reeksen in 45 seconden | 2 | 4 | 7 |
| Spreekwoordenrace | Afgemaakte spreekwoorden in 45 seconden | 5 | 8 | 12 |
| Rekensprint | Goede sommen in 45 seconden | 5 | 9 | 14 |
Bij Snelklik loopt de as omgekeerd: daar is een lagere waarde beter, want het zijn milliseconden. 520 milliseconden mediane reactietijd komt uit op 50, en 400 milliseconden op 80.
De Spreekwoordenrace heeft een hoger beginanker dan de rest, en dat is opzet. Het spel werkt met vier antwoordopties, dus wie alleen maar gokt heeft een verwachting van één op vier goed. Bij ongeveer twintig opgaven levert puur gokken al vijf goede antwoorden op. Zou het onderste anker daar op 3 liggen zoals bij de andere spellen, dan kreeg een gokker een nette score voor niets.
Waarom loopt de curve aan de bovenkant zo vlak?
De ankers liggen niet op gelijke afstand. Onderin de curve levert één extra eenheid veel scorepunten op, bovenin bijna niets. Bij Geheugen-grid is één extra vakje tussen 3 en 7 steeds 15 punten waard, tussen 7 en 9 nog 7,5 punt, en tussen 9 en 11 nog 2,5 punt.
Dat is geen toeval en ook geen bescheidenheid. Aan de bovenkant van elk spel wordt de ruwe uitkomst grilliger: wie negen vakjes haalt, haalt de volgende ronde net zo goed acht of tien. Een curve die daar even steil doorloopt zou die ruis vertalen naar tien punten verschil op je uitslag.
Onderin gebeurt het omgekeerde. Daar liggen de prestaties dicht op elkaar en scheelt één vakje wel degelijk iets, dus daar mag de curve steil zijn. Het effect is dat het midden van de schaal het meeste onderscheid maakt, en dat is precies waar de meeste spelers zitten.
Hoe controleer je een schaal als er nog geen spelers zijn?
Met gesimuleerde spelers. In score.test.ts staat een simulatie van 4000 spelers die bij elke wijziging aan de score-engine automatisch meedraait. Elke gesimuleerde speler krijgt een vaardigheidsniveau uit een normale verdeling, en dat niveau wordt per spel vertaald naar een ruwe uitkomst met eigen ruis erbij.
Het punt van die opzet is dat de simulatie de curve niet napraat. De ruwe uitkomsten worden opgebouwd uit wat in dat spel plausibel is, bijvoorbeeld een geheugenspan van gemiddeld 5 vakjes met ongeveer 1,5 vakje verschil per standaarddeviatie. Pas daarna gaan ze door de curve heen. Was de simulatie afgeleid van de ankers zelf, dan zou de test alleen bewijzen dat rekenen werkt.
De trekkingen komen uit mulberry32 met een vaste seed, niet uit de willekeurige generator van de browser. Daardoor geeft dezelfde seed altijd hetzelfde resultaat. Een test die af en toe faalt zonder dat er iets kapot is, wordt vroeg of laat uitgezet, en dan bewaakt hij niets meer.
Wat kwam er uit die 4000 gesimuleerde spelers?
Een verdeling die het midden van de schaal vult en aan beide kanten uitloopt. De mediaan ligt op 49,7 en de standaarddeviatie op 22,1. Onder de 5 kwam niemand uit, en boven de 95 kwam ongeveer een half procent uit.
| Grens | BreinScore |
|---|---|
| Laagste 10 procent scoort onder | 17,7 |
| Laagste 25 procent scoort onder | 32,4 |
| Mediaan | 49,7 |
| Hoogste 25 procent scoort boven | 66,2 |
| Hoogste 10 procent scoort boven | 78,8 |
Let op wat hier staat en wat niet. Dit zijn gesimuleerde spelers, geen mensen. De tabel laat zien dat de schaal onderscheid kan maken bij een geloofwaardige spreiding aan vaardigheid. Hij zegt niets over hoe Nederland scoort, en zodra iemand hem zo leest is het een percentiel geworden dat we niet hebben.
Waarom is een test waarin bijna iedereen hoog scoort waardeloos?
Omdat een score die iedereen deelt geen informatie bevat. Dit is geen theoretisch bezwaar: bij een eerder project van ons, beroepstest.nl, kwam vrijwel iedere deelnemer op een matchscore van 90 of hoger uit. Dat voelde plezierig en het maakte het cijfer volstrekt leeg.
Twee dingen gingen daar tegelijk stuk. De uitslag kon niemand meer iets vertellen wat hij niet al wist, want iedereen kreeg hetzelfde. En de betaalde vervolgstap had geen grond meer, want als je toch al 92 scoort valt er weinig uit te zoeken.
De les die we eruit meenamen is dat de eis niet is dat de engine een getal produceert, maar dat het getal onderscheid maakt. Daarom staan de drempels in de test hard opgeschreven: de standaarddeviatie van de BreinScore moet boven de 10 punten liggen, het gemiddelde moet tussen 40 en 60 liggen, en minder dan 5 procent mag tegen het plafond of de vloer aan plakken. Zakt een van die waarden weg door een wijziging, dan valt de test om voordat de wijziging live gaat.
De gemeten 22,1 ligt ruim boven die ondergrens van 10. Dat is bewust ruim: we willen niet dat een kleine aanpassing aan één anker de hele schaal net over de rand duwt.
Houdt die spreiding ook stand per spel afzonderlijk?
Dat is een aparte controle, want een net gemiddelde kan ontstaan uit vijf spellen die allemaal hetzelfde platte cijfer geven. De tabel hieronder toont per spel de standaarddeviatie in de simulatie, plus hoe vaak dat spel als sterkste onderdeel uit de bus komt.
| Spel | Standaarddeviatie | Vaakst sterkste |
|---|---|---|
| Geheugen-grid | 22,8 | 19,8 procent |
| Snelklik | 20,1 | 35,5 procent |
| Patroonreeks | 26,0 | 13,6 procent |
| Spreekwoordenrace | 25,9 | 15,0 procent |
| Rekensprint | 25,5 | 16,2 procent |
Alle vijf de spellen zitten boven de ondergrens van 10, dus geen enkel spel is een dood getal. De rechterkolom is het interessantst en tegelijk het minst vleiend. Zou elk spel even makkelijk zijn, dan kwam elk spel bij ongeveer 20 procent van de spelers als sterkste uit de bus.
Snelklik zit op 35,5 procent en is daarmee oververtegenwoordigd. Dat komt doordat de reactietijdcurve minder ver uitwaaiert dan de andere vier, waardoor spelers daar vaker in de bovenste helft belanden. De test staat dit toe tot 45 procent, dus het valt binnen de grens die we onszelf gesteld hebben, maar het is wel de eerste plek waar we naar kijken zodra er echte data is.
Zolang dat zo is, betekent "jouw sterkste onderdeel is Snelklik" iets minder dan "jouw sterkste onderdeel is Patroonreeks". Dat vinden we vervelend genoeg om het op te schrijven en niet erg genoeg om de test uit te stellen.
Waarom zegt de uitslag soms dat er niets uitspringt?
Omdat er dan niets uitspringt. De uitslag noemt alleen een sterkste of afwijkend onderdeel als het verschil tussen je hoogste en je laagste domein minstens 10 punten is. Blijft het verschil daaronder, dan zeggen we dat je vijf onderdelen dicht bij elkaar liggen.
Neem een speler met 6 vakjes, 480 milliseconden, 5 reeksen, 9 spreekwoorden en 11 sommen. Dat wordt 65, 60, 60, 57,5 en 62, dus een BreinScore van 60,9 met een spreiding van 7,5 punten. De code wijst hier geen sterkste onderdeel aan, want 7,5 is minder dan 10.
Die drempel zit er na een echte fout. In een vroege testrun kreeg iemand die op alle vijf de onderdelen de bodem raakte vijf keer dezelfde score, waarna de code toch een winnaar aanwees omdat het gelijkspel op volgorde beslecht werd. De pagina meldde vervolgens dat er één onderdeel uitsprong. Dat is een verzonnen bewering op het moment dat iemand moet beslissen of hij betaalt.
Tien punten is gekozen tegen de achtergrond van een spreiding van ruwweg 22. Het is een verschil dat je kunt uitleggen zonder statistiek erbij te halen. In de simulatie haalt ongeveer 95 procent van de spelers die drempel, dus voor de meeste mensen valt er wel degelijk iets aan te wijzen.
Wanneer stappen we over op de werkelijke verdeling?
Bij 500 afgeronde testsessies. Dat aantal staat in de code vastgelegd en is vooraf gekozen, zodat we het moment niet naar voren kunnen halen als het uitkomt of eindeloos kunnen uitstellen als de uitkomst tegenvalt.
Waarom 500 en niet 50 of 5000? Onder de honderd sessies beweegt de mediaan nog per dag mee met wie er toevallig langskwam. Boven de duizend zitten we lang met een schaal die we allang hadden kunnen vervangen. Bij vijfhonderd sessies is het midden van de verdeling redelijk stabiel, terwijl de staarten dat nog niet zijn.
Als we overstappen, zetten we erbij dat het gebeurd is. Een schaal die stilletjes van betekenis verandert is erger dan een schaal die openlijk een aanname is, want dan vergelijk je je score van vandaag met die van vorige maand zonder te weten dat de meetlat verschoven is.
Vergelijken binnen leeftijdsgroep komt daar nog een stap na, en om dezelfde reden: dat kan pas als elke groep afzonderlijk genoeg spelers heeft. Een percentiel op een handvol mensen is geen percentiel.
Waar zit de aanname in dit alles?
In de ankerpunten. Wij hebben besloten dat 5 vakjes in het Geheugen-grid een 50 waard is en 520 milliseconden bij Snelklik ook. Die keuze is gemaakt op wat in dat spel te halen valt en op wat we bij het testen zagen, niet op een gemeten steekproef. Verschuiven we dat anker met één vakje, dan verschuift ieders score mee.
Wat de simulatie wel aantoont, is dat de schaal onderscheid maakt: bij een aannemelijke spreiding aan vaardigheid komen er verschillende uitslagen uit, en niet vijf keer hetzelfde cijfer. Wat de simulatie niet aantoont, is dat 50 werkelijk het midden van de Nederlandse bevolking is. Dat weten we niet en dat beweren we nergens.
Blijft over wat de score wél is: een momentopname van hoe je die dag deze vijf spellen speelde, op een meetlat die we erbij hebben gelegd en die we hier open op tafel leggen. Het is geen intelligentietest en geen diagnose. Maak je je zorgen over je geheugen of je concentratie, bespreek dat met je huisarts.
Vragen over deze methode gaan naar hallo@skillido.com en worden door een mens beantwoord. Ook de vervelende vragen, want die leveren doorgaans de beste correcties op.
Geschreven door de redactie van Skillido. Laatst bijgewerkt op .