Sto cercando di calcolare l'indice Gini sulla distribuzione della reputazione SO utilizzando SO Data Explorer. L'equazione che sto cercando di implementare è questa: Dove: = numero di utenti sul sito; = ID seriale utente (1 - 1.225.000); = reputazione dell'utente .niyii
Ecco come l'ho implementato (copiato da qui ):
DECLARE @numUsers int
SELECT @numUsers = COUNT(*) FROM Users
DECLARE @totalRep float
SELECT @totalRep = SUM(Users.Reputation) FROM Users
DECLARE @giniNominator float
SELECT @giniNominator = SUM( (@numUsers + 1 - CAST(Users.Id as Float)) *
CAST(Users.Reputation as Float)) FROM Users
DECLARE @giniCalc float
SELECT @giniCalc = (@numUsers + 1 - 2*(@giniNominator / @totalRep)) / @numUsers
SELECT @giniCalc
Il mio risultato è (attualmente) -0,53, ma non ha senso: non sono sicuro nemmeno come possa essere diventato negativo, e anche in valore abs, mi sarei aspettato che la disuguaglianza fosse molto più vicina a 1, dato come la reputazione cresce più ce l'hai.
Sto inconsapevolmente ignorando alcune ipotesi sulla distribuzione della reputazione / degli utenti?
Cosa faccio di sbagliato?