Qualche tempo fa ho costruito un programma di test per arrotondamenti successivi, perché in pratica si tratta di uno stress test nel caso peggiore per un algoritmo di arrotondamento.
Per ogni numero compreso tra 0 e 9.999 si passa prima al 10 più vicino, quindi al 100 più vicino, quindi al 1000 più vicino. (Si potrebbe anche pensare che 10.000 punti in [0,1) siano arrotondati a 3 posti, quindi a 2, quindi a 1.) Questo insieme di numeri ha un valore medio di 4999,5.
Se tutti e tre gli arrotondamenti sono fatti usando il metodo "round half up", i risultati sono i seguenti (prima colonna è il risultato dell'arrotondamento, la seconda colonna è come molti numeri arrotondati a tale risultato - cioè è un istogramma).
0 445
1000 1000
2000 1000
3000 1000
4000 1000
5000 1000
6000 1000
7000 1000
8000 1000
9000 1000
10000 555
Il risultato differisce da un singolo "mezzo round" al migliaio più vicino a 550 volte su 10.000 e il valore arrotondato medio è 5055 (superiore alla media originale di 55,5).
Se tutti e tre gli arrotondamenti sono fatti da "round half down", i risultati sono:
0 556
1000 1000
2000 1000
3000 1000
4000 1000
5000 1000
6000 1000
7000 1000
8000 1000
9000 1000
10000 444
Il risultato differisce da un singolo "semirotondo" al migliaio più vicino a 550 volte su 10.000 e il valore medio arrotondato è 4944 (troppo basso di 55,5).
Se tutti e tre gli arrotondamenti sono fatti usando "round half odd", il risultato è:
0 445
1000 1111
2000 889
3000 1111
4000 889
5000 1111
6000 889
7000 1111
8000 889
9000 1111
10000 444
Il risultato differisce da un singolo "mezzo giro dispari" al migliaio più vicino a 550 volte su 10.000 e il valore arrotondato medio è 4999,5 (corretto).
Infine, se tutti e tre gli arrotondamenti sono fatti usando "round half even", i risultati sono:
0 546
1000 909
2000 1091
3000 909
4000 1091
5000 909
6000 1091
7000 909
8000 1091
9000 909
10000 1091
Il risultato differisce da un singolo "round half even" al migliaio più vicino 450 volte su 10.000 e il valore arrotondato medio è 4999.5 (corretto).
Penso che sia ovvio che arrotondare i valori arrotondati a metà e in basso a metà riducono i valori arrotondati, in modo che la media dei valori arrotondati non abbia più la stessa aspettativa della media dei valori originali e che "arrotondare metà pari" e " round half odd "rimuovi il pregiudizio trattando 5 in un modo metà tempo e l'altro modo nell'altra metà. L'arrotondamento successivo moltiplica il bias.
Round half even e round half odd introducono il proprio tipo di pregiudizio per la distribuzione: un pregiudizio verso cifre pari e dispari, rispettivamente. In entrambi i casi, ancora una volta, questa distorsione viene moltiplicata per arrotondamenti successivi, ma è peggio per la metà del giro dispari. Penso che la spiegazione in questo caso sia semplice: 5 è un numero dispari, quindi round half odd ha più risultati che terminano in 5 rispetto a metà round pari - e quindi, più risultati che dovranno essere gestiti specialmente dal successivo arrotondamento.
Ad ogni modo, delle quattro scelte, solo due sono imparziali, e delle due scelte imparziali, la metà rotonda fornisce anche la distribuzione migliore quando soggetti a arrotondamenti ripetuti.