L’indice di eterogeneità di Gini è un indice statistico che misura la variabilità di una variabile qualitativa e che ci dà dunque l’idea di quanto il campione statistico sia omogeneo o eterogeneo in base a una determinata condizione.
Perché usare l’indice di eterogeneità di Gini
Quando studiamo una variabile quantitativa siamo soliti calcolare un indice statistico di posizione centrale (come la media o la mediana) e un indice statistico di variabilità (come la deviazione standard o la differenza interquartile).
Per trovare questi indici dobbiamo effettuare operazioni matematiche che coinvolgono i valori della variabile, come somme, prodotti o divisioni. Tali operazioni non possono essere applicate a una variabile qualitativa, poiché essa in generale non è descritta da numeri. Ma l’esigenza di sintetizzare le misurazioni con un indice di posizione e di variabilità rimane la stessa, avremo bisogno però di effettuare calcoli differenti. In questo contesto si inserisce allora il calcolo della moda come indice di posizione e dell’indice di eterogeneità di Gini come indice di variabilità.
Calcolo dell’indice di eterogeneità di Gini
Tabella delle frequenze relative
Il primo passo da effettuare è calcolare le frequenze relative di ogni possibile modalità assunta dalla variabile qualitativa oggetto di analisi. Ricordo che le frequenze relative si possono ottenere semplicemente dividendo le frequenze assolute per il numero di unità statistiche totali. Supponiamo ad esempio di aver riportato in una variabile il colore degli occhi dei cinque componenti di un nucleo famigliare: il padre e il figlio maggiore hanno gli occhi neri mentre la madre e i due figli minori hanno gli occhi verdi.
La tabelle delle frequenze relative della variabile “Colore occhi” sarà
Modalità | Frequenze assolute | Frequenze relative |
Neri | 2 | 2/5 = 0,40 |
Verdi | 3 | 3/5 = 0,60 |
Calcolo dell’indice
L’indice di eterogeneità di Gini è pari al risultato della sottrazione tra:
- il numero 1
- la somma di tutte le frequenze relative elevate al quadrato
In questo caso, ad esempio, avremo: 1 – (0,402 + 0,602 ) = 1 – (0,16 + 0,36) = 0,48
In generale la formula dell’indice di eterogeneità di Gini è

dove k è il numero di possibili valori distinti che la variabile qualitativa può assumere (nel nostro esempio due, neri e verdi).
Interpretazione dell’indice
L’indice di Gini può assumere solo valori maggiori o uguali a zero. In particolare, sarà zero solo nel caso in cui tutte le unità statistiche assumono sempre lo stesso valore costante, cioè nel caso di massima omogeneità o, equivalentemente, di minima eterogeneità. Infatti, quando è presente un solo valore ripetuto per tutti i casi, avremo un’unica frequenza relativa pari a 1 e quindi, applicando la formula precedente, otterremo 1 – 12 = 0.
Il valore massimo dell’eterogeneità non è fisso per tutte le variabili, ma dipende dal numero di valori distinti che essa può assumere. Si può dimostrare che se indichiamo con la lettera k questo numero, allora l’indice di Gini può valore al massimo (k-1)/k.
Indice di eterogeneità di Gini normalizzato

Per poter confrontare l’eterogeneità di variabili diverse, possiamo calcolare dunque l’indice di Gini normalizzato che assumerà sempre valori compresi tra 0 e 1. Per far ciò ci basterà dividere l’indice di Gini per il suo valore massimo possibile e quindi per (k-1)/k. In formule, avremo:
Calcolo con T SQL
Vediamo come calcolare il coefficiente con il linguaggio SQL ipotizzando che i nostri dati siano all’interno di una tabella di un database SQL Server.
WITH Fr_assolute AS (
SELECT IdFornitore,
COUNT(*) AS FrequenzaAssoluta
FROM Fatture
GROUP BY IdFornitore),
Fr_relative AS (
SELECT IdFornitore,
1.0 * FrequenzaAssoluta /
SUM(FrequenzaAssoluta) OVER()
AS FrequenzaRelativa
FROM Fr_assolute)
SELECT 1 - SUM(POWER(FrequenzaRelativa,2))
AS Indice_di_eterogeneità_di_Gini
FROM Fr_relative;
Per effettuare il calcolo abbiamo utilizzato due CTE:
- la prima per calcolare le frequenze assolute tramite una GROUP BY;
- la seconda per calcolare le frequenze relative tramite una window function.
Infine abbiamo usato la funzione POWER per elevare le frequenze al quadrato e, infine, calcolare l’indice.
Calcolo con Python
Supponiamo ora che i nostri dati siano presenti all’interno di un Dataframe della libreria pandas di Python. Iniziamo creando il dataset e importando le librerie necessarie per il calcolo.
import pandas as pd
import numpy as np
colore_occhi = ["Neri", "Neri", "Verdi", "Verdi", "Verdi"]
df = pd.DataFrame(data = colore_occhi,
columns = ['colore'])
A questo punto possiamo calcolare le frequenze assolute tramite il metodo groupby di pandas:
fr_assolute = df.groupby(by = "colore",
dropna = False) \
.agg(conteggio = ("colore", np.size))
Convertiamo i dati in un array di numpy per poter eseguire più facilmente i calcoli matematici.
array = fr_assolute["conteggio"].values
Possiamo ora calcolare le frequenze relative e l’indice di eterogeneità di Gini
fr_relative = array / sum(array)
Indice_eter_Gini = 1 - sum(fr_relative*fr_relative)
Continua a imparare
- Segui la lezione successiva sulla correlazione statistica
- Torna all’indice delle lezioni
- Visita la pagina del mio corso online di statistica