我正在尝试使用 SO Data Explorer 计算 SO 声誉分布上的 Gini 指数。我试图实现的等式是这样的:
在哪里:= 网站上的用户数量;= 用户序列号 (1 - 1,225,000);= 用户声誉.
这就是我实现它的方式(从这里复制):
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你拥有的越多。
我是否在不知不觉中忽略了一些关于声誉/用户分布的假设?
我做错了什么?