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?
Respuestas:
Aquí es cómo puede calcularlo con SQL:
La explicación está aquí https://medium.com/@medvedev1088/calculating-gini-coefficient-in-bigquery-3bc162c82168
fuente
No puedo leer el
SQL
código muy fácilmente, pero si me ayuda, si fuera a calcular el coeficiente de Gini, esto es lo que haría (en inglés).Tomé esos pasos del código notablemente directo en la
R
función (en el paquete ineq ) para calcular el coeficiente de Gini. Para el registro, aquí está ese código:Se ve algo similar a su
SQL
código, pero como dije, ¡realmente no puedo leer eso muy fácilmente!fuente
Hay, creo, cuatro formulaciones equivalentes del índice de Gini. Para mí, el más natural es una estadística U: donde es la media de 's. Puede verificar sus cálculos con esta fórmula. Obviamente, el resultado debe ser no negativo. Por lo que sé sobre los índices de Gini, la distribución de reputación en CV debería tener el índice de Gini por encima de 0.9; si 0.98 tiene mucho sentido o no, no puedo decirlo.μx
fuente
Agregando a la respuesta @smillig, basado en la ecuación provista:
Me dio en mi conjunto de prueba:
0.45503253636587840
Que es lo mismo que las bibliotecas ineq de R Gini (x)
fuente