Ich versuche, den Gini-Index für die SO-Reputationsverteilung mit SO Data Explorer zu berechnen. Die Gleichung, die ich zu implementieren versuche, lautet: Wobei:n= Anzahl der Benutzer auf der Site; i= Benutzer-Seriennummer (1 - 1.225.000); yi= Ruf des Benutzersi.
So habe ich es implementiert (von hier kopiert ):
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
Mein Ergebnis ist (derzeit) -0,53, aber es macht keinen Sinn: Ich bin mir nicht sicher, wie es negativ geworden sein könnte, und selbst im abs-Wert hätte ich erwartet, dass die Ungleichung angesichts des guten Rufs viel näher bei 1 liegt wächst, je mehr du es hast.
Ignoriere ich unwissentlich eine Annahme über die Verteilung des Rufs / der Benutzer?
Was mache ich falsch?