Feedback

C# - Gini-Koeffizient für Einzeldaten

Veröffentlicht von am 11/14/2015
(0 Bewertungen)
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)));
        }
    }
}
Abgelegt unter Mathe, Statistik.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!