Я пытаюсь вычислить индекс Джини для распределения репутации SO с помощью SO Data Explorer. Уравнение, которое я пытаюсь реализовать, таково: Где: = количество пользователей на сайте; = серийный идентификатор пользователя (1 - 1 225 000); = репутация пользователя .niyii
Вот как я это реализовал (скопировано отсюда ):
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
Мой результат (в настоящее время) -0,53, но это не имеет смысла: я не уверен даже, как это могло бы стать отрицательным, и даже в значении абс, я бы ожидал, что неравенство будет намного ближе к 1, учитывая, как репутация растет, чем больше у вас есть.
Я неосознанно игнорирую некоторые предположения о распределении репутации / пользователей?
Что я делаю не так?