Estoy tratando de calcular el índice de Gini en la distribución de reputación SO usando SO Data Explorer. La ecuación que intento implementar es la siguiente: Donde: = número de usuarios en el sitio; = ID de serie del usuario (1 - 1,225,000); = reputación del usuario .n
Así es como lo implementé (copiado de aquí ):
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
Mi resultado es (actualmente) -0.53, pero no tiene sentido: ni siquiera estoy seguro de cómo podría haberse vuelto negativo, e incluso en valor abs, hubiera esperado que la desigualdad estuviera mucho más cerca de 1, dada la reputación crece cuanto más lo tienes.
¿Estoy ignorando sin saberlo alguna suposición sobre la distribución de la reputación / usuarios?
¿Qué hago mal?