Toon posts:

Incorrecte berekening moderatiescores

Pagina: 1
Acties:

  • mrmrmr
  • Registratie: April 2007
  • Niet online
Zie mrmrmr in "Het kleine-mismoderatietopic deel XXX"

Een frontpage reactie bericht had 1 maal een 0 score. Toen ik daar +1 bijzette bleef het op nul. Maakte ik er +2 van dan werd het +2. Dat is niet correct en ik vermoed een bug in het score systeem (server zijde) en/of in de weergave (client zijde).

Foutbeschrijving:
De mediaan van 0 en 1 is 0,5 en dat rond af naar 1. Uitkomst is 0 (incorrect).

De mediaan van 0 en 2 is 1. Uitkomst is 2 (incorrect).

De mediaan dient in dit geval gelijk te zijn aan het gemiddelde, dus beide uitkomsten zijn fout. Het moet 1 zijn. Wat is een mediaan?

Het lijkt erop dat er niet een mediaan wordt gebruikt of dat daarbij een fout wordt gemaakt met fracties. Bijvoorbeeld door een integer (fout) te gebruiken in plaats van een float (correct)? Een float kan overigens ook incorrect afronden (0,5 kan ergens in de berekening ten onrechte als 0,4999999 zijn opgenomen). Als de rekenlibrary onnauwkeurig is zijn er methoden om dat te corrigeren, bijvoorbeeld met een vermenigvuldigingsfactor op integers vroeg in de berekening.

Hoe het zou moeten zijn:
Rekenkundig correcte [edit: statistische] mediaan berekenen, zowel server als clientzijde.

Edit: dit bericht bevat mijn voorstel om het geconstateerde probleem op te lossen:
mrmrmr in "Incorrecte berekening moderatiescores"

[Voor 5% gewijzigd door mrmrmr op 17-03-2022 21:04]

Ophouden met stoken? Uitstekend plan! 23% van fijnstof is afkomstig van houtstook en er gaan veel mensen vroegtijdig dood. Het Luchtfonds zegt dit.


  • fopjurist
  • Registratie: Mei 2021
  • Niet online

fopjurist

mr.drs. fopjurist

mrmrmr schreef op donderdag 17 maart 2022 @ 19:16:
De mediaan dient in dit geval gelijk te zijn aan het gemiddelde, dus beide uitkomsten zijn fout. Het moet 1 zijn. Wat is een mediaan?
Volgens de formele definitie zijn de getoonde medianen juist. Ik weet niet of er een bewuste keuze is gemaakt welke mediaan er wordt getoond, maar afronden naar een even getal is een standaardmethode in IEEE 754.

beschermheer van het consumentenrecht


Acties:
  • 0Henk 'm!
  • Pinned

  • mrmrmr
  • Registratie: April 2007
  • Niet online
fopjurist schreef op donderdag 17 maart 2022 @ 20:12:
{0,1}: elk getal in het interval [0,1] is een mediaan. 0 is bijvoorbeeld een geldige mediaan omdat ten hoogste de helft van de getallen in de verzameling kleiner is dan 0 en ten hoogste de helft van de getallen in de verzameling groter is dan 0.
{0,2}: elk getal in het interval [0,2] is een mediaan.
Duidelijk, maar deze formele mediaan berekening is niet handig voor de toepassing van moderaties.

De statistische mediaan berekening is voorspelbaar en het geeft een betere weergave van de gemiddelde mening. De mediaan is immers gekozen om uitschieters uit te sluiten. De extremen vallen weg, maar niet als er maar 2 moderaties zijn, dan treedt willekeur op die niet gunstig uitpakt voor de beoordeling. Die is dan namelijk te laag of te hoog.

Volgens de statistische mediaanberekening is het zo:
0 + 1 = mediaan: 0,5 afgerond: 1
0 + 2 = mediaan: 1

Ik stel voor deze statistische mediaan aan te houden zodat er geen uitschieters ontstaan.

[Voor 71% gewijzigd door mrmrmr op 17-03-2022 21:03]

Ophouden met stoken? Uitstekend plan! 23% van fijnstof is afkomstig van houtstook en er gaan veel mensen vroegtijdig dood. Het Luchtfonds zegt dit.


  • fopjurist
  • Registratie: Mei 2021
  • Niet online

fopjurist

mr.drs. fopjurist

mrmrmr schreef op donderdag 17 maart 2022 @ 19:45:
[...]


Dat mag je even voorrekenen. Wat is de mediaan hier:
• 0, 1
• 0, 2
{0,1}: elk getal in het interval [0,1] is een mediaan. 0 is bijvoorbeeld een geldige mediaan omdat ten hoogste de helft van de getallen in de verzameling kleiner is dan 0 en ten hoogste de helft van de getallen in de verzameling groter is dan 0.
{0,2}: elk getal in het interval [0,2] is een mediaan.

beschermheer van het consumentenrecht


  • mrmrmr
  • Registratie: April 2007
  • Niet online
Hmm....ik zie nog een stout bugje. ;) Mijn reactie heeft een verkeerde timestamp en zou onder deze moeten staan. Misschien omdat ik eerdere edits heb gecanceld?

[Voor 23% gewijzigd door mrmrmr op 17-03-2022 20:58]

Ophouden met stoken? Uitstekend plan! 23% van fijnstof is afkomstig van houtstook en er gaan veel mensen vroegtijdig dood. Het Luchtfonds zegt dit.


  • Santford
  • Registratie: Juli 2004
  • Nu online

Santford

FP PowerMod
mrmrmr schreef op donderdag 17 maart 2022 @ 20:39:
Hmm....ik zie nog een stout bugje. ;) Mijn reactie heeft een verkeerde timestamp en zou onder deze moeten staan. Misschien omdat ik eerdere edits heb gecanceld?
Zo te zien heb je hebt een oude reactie geëdit in plaats van een nieuwe reactie te plaatsen. Je originele reactie is gequoot door @fopjurist.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:17

crisp

Devver

Pixelated

Ik zal morgen even opzoeken hoe de berekening precies is ;)

Intentionally left blank


  • mrmrmr
  • Registratie: April 2007
  • Niet online
crisp schreef op donderdag 17 maart 2022 @ 21:12:
Ik zal morgen even opzoeken hoe de berekening precies is ;)
Alvast bedankt @crisp. Je mag ook de code hier vermelden/pasten. Graag ook met referentie naar een eventueel gebruikte library.

Dat heb je op Tweakers, iedereen heeft verstand van je werk. :)

Ophouden met stoken? Uitstekend plan! 23% van fijnstof is afkomstig van houtstook en er gaan veel mensen vroegtijdig dood. Het Luchtfonds zegt dit.


Acties:
  • +3Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:17

crisp

Devver

Pixelated

@mrmrmr er zijn hier 2 dingen die meespelen:

- in de eerste plaats heb je naast ratings (moderaties) ook nog een weging per rating. Voor normale gebruikers heeft een rating een gewicht van 1, maar meer ervaren moderators krijgen een weging van 2. Dat laatste geldt ook voor jou.
- zolang een reactie nog niet door iemand met een hogere weging dan 1 is gemodereerd kan deze niet op een -1 of +3 uitkomen

Het gedrag dat je hebt gezien is waarschijnlijk door een van bovenstaande (of beide) veroorzaak. Onder normale omstandigheden en met gelijke weging zouden zowel {0, 1} als {0, 2} uitkomen op een mediaanscore van 1.

Dit is de code die gebruikt wordt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function calculateMedian(array $ratingsByScore): int
{
    $grandTotalWeight  = 0;
    foreach ($ratingsByScore as $ratingData) {
        $grandTotalWeight += $ratingData['TotalWeight'];
    }

    // now find the median
    $medianRating = 0;
    foreach ($ratingsByScore as $ratingData) {
        if ( ! $ratingData['TotalWeight']) {
            continue;
        }

        if ($grandTotalWeight == 0) {
            $medianRating = round(($medianRating + $ratingData['Score']) / 2);
            break;
        }

        $grandTotalWeight -= 2 * $ratingData['TotalWeight'];
        $medianRating      = $ratingData['Score'];

        if ($grandTotalWeight < 0) {
            break;
        }
    }

    return $medianRating;
}


Aan te roepen met bijvoorbeeld:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$ratingsByScore = [
        [
            'Score' => 0,
            'TotalWeight' => 1,
        ],
        [
            'Score' => 1,
            'TotalWeight' => 1,
        ],
];

echo calculateMedian($ratingsByScore);

Intentionally left blank


  • mrmrmr
  • Registratie: April 2007
  • Niet online
Bedankt @crisp. Gisteren bleek dat mijn ratings met factor 1 werkten (was voorheen 2). Vandaag is het weer factor 2 zo te zien. Ik zag gisteren +1 staan in de lijst toen ik +1 uitdeelde. Ik zou +2 moeten zien als de factor 2 was geworden.

Uit de beschrijving van de scoringsinterventie (2e punt) zou het zo kunnen uitpakken dat 0 wordt weergegeven wanneer 1 persoon een -1 heeft gegeven. Met mijn +1 zou dat inderdaad rekenkundig op 0 uitkomen.

Helaas kan ik niet terug in de tijd om het nog eens te bestuderen en zo te bevestigen. Het is sowieso moeilijk als je niet beheerst wat er verder elders gebeurt.

Ik zal nog in calculateMedian() duiken. Zo te zien rekent de code met integers, dat zijn hele getallen. Zodra je gaat delen zou dat moeten worden omgezet in float in de PHP taal.

Wat een rol kan spelen is dat de data tijdens de berekening verandert (race condition). Om het goed te doen zou je de data willen bevriezen totdat de berekeningen zijn uitgevoerd. Als de functie bij aanroep een kopie van de data ontvangt is daaraan voldaan.

@fopjurist Je bent de eerste wiskundig onderlegde jurist die ik tegenkom. :)
Gelukkig is hier niet de formele mediaan gebruikt.

Ophouden met stoken? Uitstekend plan! 23% van fijnstof is afkomstig van houtstook en er gaan veel mensen vroegtijdig dood. Het Luchtfonds zegt dit.


Acties:
  • +1Henk 'm!

  • fopjurist
  • Registratie: Mei 2021
  • Niet online

fopjurist

mr.drs. fopjurist

mrmrmr schreef op vrijdag 18 maart 2022 @ 13:35:
@fopjurist Je bent de eerste wiskundig onderlegde jurist die ik tegenkom. :)
Gelukkig is hier niet de formele mediaan gebruikt.
Alles om inhoudelijk de discussie met een collega aan te gaan 8) De score die door de code van crisp wordt berekend is trouwens wel een formele mediaan, en komt altijd op hetzelfde antwoord als de methode die jij beschrijft (de round-functie rondt standaard af naar boven). De functie ontvangt een kopie van de data dus is er geen race condition in de berekening.

beschermheer van het consumentenrecht


  • AlphaRomeo
  • Registratie: Maart 2007
  • Laatst online: 20:39

AlphaRomeo

FP PowerMod
mrmrmr schreef op vrijdag 18 maart 2022 @ 13:35:
Ik zal nog in calculateMedian() duiken. Zo te zien rekent de code met integers, dat zijn hele getallen. Zodra je gaat delen zou dat moeten worden omgezet in float in de PHP taal.

Wat een rol kan spelen is dat de data tijdens de berekening verandert (race condition). Om het goed te doen zou je de data willen bevriezen totdat de berekeningen zijn uitgevoerd. Als de functie bij aanroep een kopie van de data ontvangt is daaraan voldaan.
Het is PHP, die zal automatisch naar floats converteren.

Wat betreft race condities denk ik dat die afgevangen zijn. Het array komt inderdaad waarschijnlijk als kopie uit de store nav een database query. En anders zou er nog niet zo'n probleem zijn behalve dat je de laatste scores mist omdat je niet het hele array doorloopt. Een page refresh geeft je dan de nieuwste mediaan.

  • mrmrmr
  • Registratie: April 2007
  • Niet online
Ik heb nog een paar keer getest en ik zie onverwachte resultaten. Soms wordt in de weergave niet aangegeven dat ik een (unieke) moderatie heb gegeven in de lijst.

Soms is het wel te zien in de score weergave (de pagina zelf, en niet de lijst). Caching? Vertraging? Verschillende servers? Afhankelijkheid van cookie data? Browser is FF ESR met Ublock filtering.

@fopjurist Om verwarring te voorkomen: met formele mediaan bedoel ik dat meerdere uitkomsten zouden kloppen volgens de formele mediaan. Hier wordt gerekend, voor de verzameling {0,2} is 1 is geen formele mediaan, 0 en 2 wel (ieder is 50% van de verzameling en voldoet aan de beschrijving). Dat is geen handige manier van rekenen bij moderaties met een bereik van -1 tot 3 vanwege de onnauwkeurigheid.

Ophouden met stoken? Uitstekend plan! 23% van fijnstof is afkomstig van houtstook en er gaan veel mensen vroegtijdig dood. Het Luchtfonds zegt dit.


  • mrmrmr
  • Registratie: April 2007
  • Niet online
Ik heb nogmaals getest op een nachtelijk tijdstip. De observaties zijn de volgende:

• Bij het kiezen van een moderatie wordt op de hoofdpagina direct de uitkomst aangepast. Als er +1 gekozen wordt, wordt +1 getoond, evenzo voor alle andere mogelijkheden.
• Na het kiezen van een moderatie wordt de "Jouw moderatie" window automatisch gesloten. De gekozen (resulterende) moderatie op de hoofdpagina blijft hetzelfde.
• Wordt opnieuw de moderatiewindow geopend en daarna scorekaart opengeklapt, dan is de gemaakte keuze niet zichtbaar in de scorekaart.
• Als er geen eerdere zichtbare moderaties (behalve die van mij) zijn worden helemaal geen moderaties aangegeven in de scorekaart.

Een manier om een update van de scorekaart te forceren is het openen van het moderatiewindow bij een ander bericht. Als daarna het voorgaande bericht met de eerdere moderatie wordt geopend en de scorekaart opgeklapt, dan is de score wel zichtbaar.

Een reload (F5) van de pagina heeft ook het effect dat de scorekaart de gedane moderatie weergeeft.

In F12 is zichtbaar dat er ongeveer om de minuut HTTP POST verkeer is vanuit een js script https://tweakers.net/xmlh...son&nocache=1647918370607. Het getal achteraan is een unix timestamp + 3 extra cijfers (milliseconden?). Dit heeft geen invloed op het scorekaart-gedrag na 2 van deze updates.

Er is soms een foutmelding zichtbaar:
03:27:49.037 Uncaught (in promise) ChunkLoadError: Loading chunk 133 failed.
(error: https://tweakers.net/x/build/133.a9acc6c0.js)
    j https://tweakers.net/x/build/runtime.b0f91219.js:1
    e https://tweakers.net/x/build/runtime.b0f91219.js:1
    e https://tweakers.net/x/build/runtime.b0f91219.js:1
    1293 https://tweakers.net/x/build/frontpage.fdc55bc8.js:1
    l https://tweakers.net/x/build/runtime.b0f91219.js:1
    <anonymous> https://tweakers.net/x/build/frontpage.fdc55bc8.js:1
    O https://tweakers.net/x/build/runtime.b0f91219.js:1
    <anonymous> https://tweakers.net/x/build/frontpage.fdc55bc8.js:1
    t https://tweakers.net/x/build/runtime.b0f91219.js:1
    <anonymous> https://tweakers.net/x/build/frontpage.fdc55bc8.js:1
runtime.b0f91219.js:1:3204


De response headers van een moderatie bevat de "pragma: no-cache" header. De request header bevat dezelfde header en de "Cache-Control: no-cache" header.

Conclusies:
Er lijkt een asynchroniteit te zijn in de weergave van moderaties. Misschien wordt dit veroorzaakt door resource blocking op de server. Bijvoorbeeld als er een database dump wordt gemaakt. In dat geval komt dit gedrag vooral voor tijdens de uren dat er een backup actief is.

Mijn FF ESR browser is uitgerust met een filtermechanisme (Ublock), maar er is geen aanwijzing dat dit invloed heeft. Er is geen cookiebeperking, de cookie wordt meegezonden in de POST request en de response geeft meerdere cookies updates terug.

De chunk error geeft aan dat er oude data wordt gebruikt, maar er is geen link te leggen met het scorekaart gedrag, het gebeurt op een ander tijdstip en ook niet altijd bij het laden van een pagina.

Waarschijnlijk werd ik misleid door de aanwezigheid van alleen enkelvoudige moderaties van anderen in de scorekaart. Daardoor dacht ik dat mijn moderatie enkelvoudig telde. Dat blijkt bij deze nieuwe tests niet het geval, mijn moderaties tellen effectief dubbel. Ze worden niet meteen weergegeven zoals wenselijk is.

Ik kan als gebruiker niet zien wat er op de server gebeurt, mede door het scorekaart weergaveprobleem.

Is het mogelijk de update van de scorekaart op dezelfde manier af te wikkelen als de wel werkende updates? Zoals de frontpage eindscore en bovenzijde moderatie window.

Ophouden met stoken? Uitstekend plan! 23% van fijnstof is afkomstig van houtstook en er gaan veel mensen vroegtijdig dood. Het Luchtfonds zegt dit.


Acties:
  • +1Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:17

crisp

Devver

Pixelated

De regelmatige ajax requests zijn voor de notificaties, er wordt niet automatisch gepold voor moderaties en scores; die worden pas opgehaald voor een reactie bij het openen van de moderatiepopup.

Het klopt dat de inhoud van de popup niet meteen gerefreshed wordt na het doen van een moderatie, en pas geforceerd wordt als je eerst de popup opent voor een andere reactie. Je bent eigenlijk pas de eerste die dat opgevallen is :p

Intentionally left blank


Acties:
  • +2Henk 'm!

  • Dirk
  • Registratie: November 2004
  • Laatst online: 23:08

Dirk

Coördinator Frontpagemoderatie
crisp schreef op dinsdag 22 maart 2022 @ 07:57:
Het klopt dat de inhoud van de popup niet meteen gerefreshed wordt na het doen van een moderatie, en pas geforceerd wordt als je eerst de popup opent voor een andere reactie. Je bent eigenlijk pas de eerste die dat opgevallen is :p
De eerste die het meld misschien. Ik wist het al jaren, maar had nooit zin daar moeite voor te (laten) doen. :P

Overigens updaten die popups al beter dan vroeger, toen was de enige optie F5.

All statements are true in some sense, false in some sense, meaningless in some sense, true and false in some sense, true and meaningless in some sense, false and meaningless in some sense, and true and false and meaningless in some sense.


Acties:
  • +2Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:17

crisp

Devver

Pixelated

Dirk schreef op dinsdag 22 maart 2022 @ 12:16:
[...]

De eerste die het meld misschien. Ik wist het al jaren, maar had nooit zin daar moeite voor te (laten) doen. :P

Overigens updaten die popups al beter dan vroeger, toen was de enige optie F5.
Ik heb er vanochtend dan ook een fix voor gereleased ;)

Intentionally left blank


Acties:
  • +1Henk 'm!

  • Dirk
  • Registratie: November 2004
  • Laatst online: 23:08

Dirk

Coördinator Frontpagemoderatie
Ah, dat verklaard waarom ik zojuist niet het gedrag kreeg wat ik verwachtte. :P

All statements are true in some sense, false in some sense, meaningless in some sense, true and false in some sense, true and meaningless in some sense, false and meaningless in some sense, and true and false and meaningless in some sense.


  • mrmrmr
  • Registratie: April 2007
  • Niet online
@crisp Bedankt, de fix werkt zo te zien voor het tonen van de moderatie in realtime.

De mediaanberekening heeft nog wel een (voor mij) onverwacht resultaat onder nul door afronding naar beneden. Boven nul is de afronding zoals verwacht naar boven.

Start: 0, mijn moderatie: -1
{-1, -1, 0, 0}
0 Off-topic / Irrelevant 2
-1 Ongewenst 2
Mediaan -0,5
Effectief -1
Verwacht: 0 (mediaan -0,5)

-0,5 rondt hier af omlaag.

Start: 0, mijn moderatie: +1
{0, 0, 1, 1}
+1 On-topic 2
0 Off-topic / Irrelevant 2
Mediaan 0,5
Effectief +1
Verwacht: 1

Start: 0, mijn moderatie: +2
{0, 0, 2, 2}
+2 Informatief 2
0 Off-topic / Irrelevant 2
Mediaan 1
Effectief +1
Verwacht: 1

Start: 0, mijn moderatie: +3
{0, 0, 3, 3}
+3 Spotlight 2
0 Off-topic / Irrelevant 2
Mediaan 1,5
Effectief +2
Verwacht: 2

Boven 0 rondt het omhoog af.


Als ik toevallig de situatie tegenkom uit de topicstart zal ik het nog een keer testen.

[Voor 141% gewijzigd door mrmrmr op 25-03-2022 04:06]

Ophouden met stoken? Uitstekend plan! 23% van fijnstof is afkomstig van houtstook en er gaan veel mensen vroegtijdig dood. Het Luchtfonds zegt dit.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:17

crisp

Devver

Pixelated

Standaard gedrag van de normale round() functie (iig in php) is half-up afronding waarbij afgerond wordt 'weg van 0'. 0.5 wordt dus 1 en -0.5 wordt -1.

Er zijn alternatieve manieren om af te ronden, maar de meeste zijn sowieso symmetrisch tov 0 (tenzij je expliciet kiest voor afronding naar boven of beneden).

Intentionally left blank


  • DirtyBird
  • Registratie: Juni 2005
  • Laatst online: 28-03 19:57

DirtyBird

Praktiserend denker

mrmrmr schreef op vrijdag 18 maart 2022 @ 13:35:
Bedankt @crisp. Gisteren bleek dat mijn ratings met factor 1 werkten (was voorheen 2). Vandaag is het weer factor 2 zo te zien. Ik zag gisteren +1 staan in de lijst toen ik +1 uitdeelde. Ik zou +2 moeten zien als de factor 2 was geworden.
Dat klopt denk ik niet. Een weging van 2 betekent dat jouw moderatie telt alsof twee mensen +1 geven.
Je kunt immers ook geen +6 krijgen als je met factor 2 een +3 score uitdeelt :p

Panasonic Lumix G9 ~ Leica DG 12-60mm f/2.8-4.0 ~Lumix 35-100mm f/2.8 II ~ Lumix 20mm f/1.7 ~ M.Zuiko 60mm f/2.8 Macro ~ Leica DG 50-200mm f/2.8-4.0 ~Leica DG 200mm f/2.8


  • mrmrmr
  • Registratie: April 2007
  • Niet online
@crisp

Ja, ik ken het gedrag van de implementaties op computers en in dat opzicht is het wel te verwachten.

Maar ik denk dat het voor deze toepassing niet verstandig is omlaag af te ronden omdat negatieve moderatie zodoende een extra ondersteuning krijgt terwijl er juist bij -1 vaak sprake is van meningmoderatie. Daar kom je dan niet uit met een tweede moderatie van bijvoorbeeld 0.

Ophouden met stoken? Uitstekend plan! 23% van fijnstof is afkomstig van houtstook en er gaan veel mensen vroegtijdig dood. Het Luchtfonds zegt dit.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:17

crisp

Devver

Pixelated

mrmrmr schreef op vrijdag 25 maart 2022 @ 08:14:
@crisp

Ja, ik ken het gedrag van de implementaties op computers en in dat opzicht is het wel te verwachten.

Maar ik denk dat het voor deze toepassing niet verstandig is omlaag af te ronden omdat negatieve moderatie zodoende een extra ondersteuning krijgt terwijl er juist bij -1 vaak sprake is van meningmoderatie. Daar kom je dan niet uit met een tweede moderatie van bijvoorbeeld 0.
Hetzelfde argument maar dan contra kan je natuurlijk geven voor +3 ;)

Tbh zie ik weinig reden om hier een aanpassing voor te maken; het is ten slotte een edge-case wanneer je precies ergens in het midden valt bij de bepaling van de mediaan. Zeker met meerdere moderaties wordt de kans daarop steeds kleiner.

Intentionally left blank


  • mrmrmr
  • Registratie: April 2007
  • Niet online
crisp schreef op vrijdag 25 maart 2022 @ 08:27:
[...]

Hetzelfde argument maar dan contra kan je natuurlijk geven voor +3 ;)
Afronden naar boven geldt voor moderaties 0,1 en 2. De enige uitzondering is afronding onder nul die omlaag gaat. Hoger dan 3 kan niet, dus dat is een niet bestaand geval. Maar dat wist je al aan die wink te zien.
Tbh zie ik weinig reden om hier een aanpassing voor te maken; het is ten slotte een edge-case wanneer je precies ergens in het midden valt bij de bepaling van de mediaan. Zeker met meerdere moderaties wordt de kans daarop steeds kleiner.
Gelijke behandeling van alle moderaties door gelijke afronding lijkt mij veel beter. Aandikken van negatieve moderaties en wel opwaarts afronden vanaf 0 is niet fair. Het is niet corrigeerbaar met een tegenmoderatie terwijl dat bij andere moderaties wel gebeurt.

Een groot deel van de moderaties is dun met een paar of even aantal stemmen. Een onrechtvaardige behandeling komt daardoor relatief vaak voor. Met name natuurlijk bij -1 en 0. Uiteraard is het geen edge case als er fracties uit een berekening komen. Bij 2 moderaties met reikwijdte 1 komt het in de helft van de gevallen voor.

Het is simpel te implementeren met de ceil() functie.

Ik zie geen technische of inhoudelijke reden om het niet te doen tenzij je (het hele team) na vergadering besluit moedwillig zwaar wilt straffen. In dat geval denk ik dat meer mensen zullen zijn die dan hoger gaan modereren om onrechtvaardige moderaties te herstellen. -1 moderaties zijn typisch emotioneel gemotiveerd.

Een middel is ondergeschikt aan het doel. Het doel is leidend.

Ophouden met stoken? Uitstekend plan! 23% van fijnstof is afkomstig van houtstook en er gaan veel mensen vroegtijdig dood. Het Luchtfonds zegt dit.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:17

crisp

Devver

Pixelated

mrmrmr schreef op vrijdag 25 maart 2022 @ 09:15:
[...]

Het is simpel te implementeren met de ceil() functie.
Nee:
PHP:
1
2
echo ceil(-0.8); // 0
echo ceil(0.000001); // 1


Gecharcheerd wellicht, want we praten hier over situaties waarbij er geen concrete mediaan is, en er dus altijd een midden wordt gekozen tussen 2 integers. Ik ga er eens over nadenken.

[Voor 32% gewijzigd door crisp op 25-03-2022 10:00]

Intentionally left blank


  • Dirk
  • Registratie: November 2004
  • Laatst online: 23:08

Dirk

Coördinator Frontpagemoderatie
Persoonlijk vind ik de huidige manier van afronden wel prima. Als er al een andere keus gemaakt zou worden dan zou wat mij betreft 0,5 altijd naar de 0 toe afgerond moeten worden in plaats van er vanaf. Dat is ook gewoon een standaard optie binnen de php round-functie zie ik.

All statements are true in some sense, false in some sense, meaningless in some sense, true and false in some sense, true and meaningless in some sense, false and meaningless in some sense, and true and false and meaningless in some sense.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:17

crisp

Devver

Pixelated

Dirk schreef op vrijdag 25 maart 2022 @ 10:38:
Persoonlijk vind ik de huidige manier van afronden wel prima. Als er al een andere keus gemaakt zou worden dan zou wat mij betreft 0,5 altijd naar de 0 toe afgerond moeten worden in plaats van er vanaf. Dat is ook gewoon een standaard optie binnen de php round-functie zie ik.
Inderdaad, dan rond je af naar de 0 toe, dus:

{-1, 0} -> 0
{0, 1} -> 0
{2, 3} -> 2

Intentionally left blank


  • mrmrmr
  • Registratie: April 2007
  • Niet online
@crisp
Als alle waarden ofwel een heel getal of een half zijn werkt ceil() altijd, maar het geeft niet altijd een mooi resultaat. Het kan ook -0 weergeven voor ceil(-0.5).

Het afrondingsprobleem speelt bij de uitkomst -0.5. Dat kun je optioneel hardcoden naar waarde 0 met een if.
De overige afrondingen zijn al naar boven.

@Dirk Ik heb mijn argumentatie al gegeven, maar iets wat ik zeker niet zou doen is bepaalde moderaties benadelen en andere niet. Willekeur is niet goed.

Los daarvan, in de praktijk zie ik ook geen reden om dat te doen, er zijn veel -1 en 0 moderaties.

Ophouden met stoken? Uitstekend plan! 23% van fijnstof is afkomstig van houtstook en er gaan veel mensen vroegtijdig dood. Het Luchtfonds zegt dit.


  • Dirk
  • Registratie: November 2004
  • Laatst online: 23:08

Dirk

Coördinator Frontpagemoderatie
Zoals crisp in "Incorrecte berekening moderatiescores" al aangaf, zijn er ook genoeg gevallen waarbij een +2 of +3 net naar boven wordt afgerond en in veel gevallen ben ik het daar ook niet mee eens. De score dichter bij de nul is vaker correct dan de score verder van de nul in mijn observaties. Dus als dit opgepakt wordt, dan wil ik het hebben voor alle extremen.

All statements are true in some sense, false in some sense, meaningless in some sense, true and false in some sense, true and meaningless in some sense, false and meaningless in some sense, and true and false and meaningless in some sense.


  • mrmrmr
  • Registratie: April 2007
  • Niet online
@Dirk Randgevallen zijn er altijd natuurlijk. Je moet nu een 2,5 of 3 scoren voor een +3. Dat is al een grote drempel omdat je niet nog hoger kan waarderen dan +3. Als je dat beperkt tot +3 dan moet inderdaad de meerderheid +3 hebben gegeven. Dat wil zeggen: de helft plus een van de stemmen moet dan +3 zijn. Voorbeeld:
{2,2,2,3,3,3,3} mediaan is 3; wordt +3
{2,2,2,3,3,3} mediaan is 2,5; wordt +2


De mediaan zorgt al voor het vermijden van extremen behalve als het aantal stemmen aan de lage kant is, bijvoorbeeld 1 of 2 stemmen. Er zijn vrij veel van dergelijke moderaties. Er zijn ook vrij veel ongemodereerde reacties.

Het effect van richting 0 toe afronden is dat alle moderaties vlakker worden en boven het maaiveld uitsteken een zeldzaamheid wordt, want dan moet je voor +2 een 2 of 2,5 scoren.
Wat ik nu vaak zie is dat grote aantallen reacties een 0 krijgen. Dat wordt dan nog erger en 0 kan het nieuwe "normaal" worden, wat niet overeenkomt met de beschrijving van de +1 moderatie (on topic).

Je krijgt dan pas een +1 als het +1 of +1,5 is. Dus of bij weinig stemmen of bij relatief hoge stemmen. Zo krijgen lage aantallen (zoals enkelvoudige) stemmen een positievere beoordeling.

Het gelijkheidsbeginsel is een belangrijk principe. Daarom vind ik afwijkend modereren in bepaalde gevallen niet wenselijk. Daarnaast vind ik ruimte voor een afwijkende mening ook belangrijk. Ik heb de indruk dat sterke meningen worden onderdrukt, ook als dat gebaseerd is op feiten en geldige argumenten. De kracht van diversiteit is dat er verschillende zienswijzen kunnen zijn. Daarom ben ik voorstander van een positieve berekening als het op de grens zit (d.w.z. de halven).

Voor de duidelijkheid: mijn voorstel is het naar boven toe afronden bij alle moderaties die op een half eindigen, zoals gebruikelijk bij het geven van punten. Zodoende krijgen reactiegevers het voordeel van eventuele twijfel. Naar boven toe afronden maakt moderaties volgbaar/verklaarbaar en vaker acceptabel.

Ophouden met stoken? Uitstekend plan! 23% van fijnstof is afkomstig van houtstook en er gaan veel mensen vroegtijdig dood. Het Luchtfonds zegt dit.

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee