J'essaie de calculer l'index Gini sur la distribution de réputation SO à l'aide de SO Data Explorer. L'équation que j'essaie de mettre en œuvre est la suivante: Où:n= nombre d'utilisateurs sur le site; i= identifiant de série de l'utilisateur (1 - 1 225 000); yi= réputation de l'utilisateuri.
Voici comment je l'ai implémenté (copié d' ici ):
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
Mon résultat est (actuellement) -0,53, mais cela n'a aucun sens: je ne sais même pas comment il aurait pu devenir négatif, et même en valeur abs, je m'attendais à ce que l'inégalité soit beaucoup plus proche de 1, étant donné la réputation grandit plus vous en avez.
Suis-je inconsciemment en train d'ignorer certaines hypothèses sur la distribution de la réputation / des utilisateurs?
Qu'est-ce que je fais mal?