Saya mencoba menghitung indeks Gini pada distribusi reputasi SO menggunakan SO Data Explorer. Persamaan yang saya coba terapkan adalah ini: Di mana: = jumlah pengguna di situs; = nomor seri pengguna (1 - 1.225.000); = reputasi pengguna .niyii
Inilah cara saya mengimplementasikannya (disalin dari sini ):
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
Hasil saya (saat ini) -0,53, tetapi tidak masuk akal: Saya tidak yakin bagaimana itu bisa menjadi negatif, dan bahkan dalam nilai abs, saya akan mengharapkan ketidaksetaraan lebih dekat ke 1, mengingat bagaimana reputasi tumbuh semakin Anda memilikinya.
Apakah saya tanpa sadar mengabaikan beberapa asumsi tentang distribusi reputasi / pengguna?
Apa yang saya lakukan salah?