Die Methode dient zur Berechnung des Gini-Maßes, welches zur Bestimmung von Ungleichverteilungen verwendet wird.
Als Übergabeparameter schleust man einfach einen Array mit double-Werten ein und bekommt in Folge eine Zahl zwischen 0 und 1, wobei angenommen wird:
0-0.33 schwache Konzentration
0.33-0.66 mittlere Konzentration
0.66-1 starke Konzentration
Beispiel
Gini gini = new Gini();
gini.Einzeldaten(new double[] { 30059.346, 2.357079, 170.06502, 36958.47, 876.0965 }));
// Ergebnis
// 0.762502545741056
using System;
using System.Linq;
namespace Project
{
class Gini
{
public double Einzeldaten(double[] values)
{
Array.Sort(values);
double sum = values.Sum();
int cnt = values.Length;
if (cnt == 1)
return 1;
double[] g = new double[cnt];
double[] G = new double[cnt];
double f = 1 / cnt;
double valuesWithoutLastTriangle = 0.0;
for (int i = 0; i < cnt; i++)
{
g[i] = values[i] / sum;
if (i == 0)
G[i] = g[i];
else
G[i] = G[i - 1] + g[i];
if (i < (cnt - 1))
valuesWithoutLastTriangle += G[i];
}
return (1.0 - (2 * valuesWithoutLastTriangle / (cnt - 1)));
}
}
}
Kommentare zum Snippet