Gli indici statistici sono dei valori risultanti da calcoli matematici che permettono di riassumere con pochi numeri la distribuzione statistica di una particolare serie di dati. L’indice statistico più utilizzato è senza dubbio la media aritmetica, ma non è assolutamente l’unico! In questo articolo faremo un overview generale sulle principali definizioni e, in alcuni casi, anche sull’implementazione con i linguaggi di programmazione SQL e Python. Nelle lezioni successive entreremo più nel dettaglio dei singoli indici.
Classificazione degli indici statistici
Per prima cosa possiamo classificare i numerosi indici statistici in due grandi categorie:
- indici di statistica univariata che studiano una singola variabile alla volta;
- indici di statistica multivariata che studiano la relazione tra due o più variabili.
Gli indici univariati possono essere ulteriormente classificati in:
- indici di posizione centrale;
- indici di variabilità;
- indici di forma.
Gli indici multivariati si classificano generalmente in base alle tipologie di variabili coinvolte
- indici per confrontare solo variabili qualitative;
- indici per confrontare solo variabili quantitative;
- indici per confrontare variabili qualitative con variabili quantitative.
Indici di posizione centrale
Gli indici di posizione centrale sono particolari indici di statistica univariata che permettono di riassumere l’intera distribuzione dei dati con pochi singoli valori. Non è corretto dire che il valore di questi indici sia “il valore più probabile”, si tratta piuttosto del valore più idoneo rispetto agli altri a riassumere la variabile con un singolo numero.
Media aritmetica
La media aritmetica è sicuramente l’indice di posizione centrale più conosciuto. Può essere calcolata semplicemente sommando tutti i valori della variabile e dividendo il totale ottenuto per il numero di misurazioni. Ad esempio la media aritmetica di questo insieme di cinque valori
8, 7, 2, 9, 7
che rappresentano una serie di voti in una scala da 1 a 10, è 6.6 perché (8 + 7 + 2 + 9 + 7)/5 = 6,6.
Per quanto il calcolo possa sembrare semplice, occorre fare molta attenzione quando utilizziamo il linguaggio SQL perché su alcuni database come Microsoft SQL Server la media di una colonna di valori di tipo INT restituirà sempre un INT. Per questo su SQL Server occorrerà utilizzare la funzione CONVERT e scrivere una query come questa:
SELECT
AVG(CONVERT(DECIMAL(18,2), Punteggio))
FROM Voti;
Su un DataFrame di Pandas scriveremo invece
Voti["Punteggio"].mean()
A questo link trovi un articolo di approfondimento su un particolare tipo di media aritmetica: la media ponderata.
Mediana
La media aritmetica non è comunque l’unico indice statistico di posizione esistente. Se ad esempio sono presenti degli outlier, possiamo ottenere un valore migliore utilizzando la mediana, di cui parleremo in dettaglio nell’articolo sui quartili. In breve, occorrono sostanzialmente due passaggi:
- riscrivere i dati in ordine crescente, ad esempio nel nostro caso passeremo da 8, 7, 2, 9, 7 a 2, 7, 7, 8, 9
- se i dati sono in numero dispari la mediana è il valore in posizione centrale, se i dati sono in numero pari la mediana è la media aritmetica dei due valori centrali. Nel nostro caso la mediana sarà dunque 7, pari al terzo valore tra i dati ordinati.
Per calcolare la mediana con Pandas ci basterà scrivere
Voti["Punteggio"].median()
Mentre su alcuni database relazionali (soprattutto le versioni più datate) non c’è una funzione specifica per il calcolo e occorrerà dunque implementare manualmente l’algoritmo. Dall’edizione SQL Server 2012 potremmo calcolare la mediana di una colonna in questo modo un po’ astruso:
SELECT DISTINCT
PERCENTILE_CONT(0.5)
WITHIN GROUP(ORDER BY Punteggio) OVER()
FROM Voti;
In questo articolo trovate un approfondimento sul calcolo della mediana su SQL Server https://sqlperformance.com/2012/08/t-sql-queries/median.
Moda
L’ultimo indice di posizione che andiamo a studiare è la moda, cioè il valore che ricorre più frequentemente all’interno di una distribuzione. Ad esempio, nel caso precedente la moda dei valori 8, 7, 2, 9, 7 sarà 7 perché è il valore che ricorre il maggior numero di volte. Su Pandas la sintassi è praticamente identica agli altri casi
Voti["Punteggio"].mode()
Su SQL Server invece dobbiamo ricorrere a una window function o alle subquery:
WITH CTE AS
(SELECT
Punteggio,
RANK() OVER(ORDER BY COUNT(*) DESC)
AS Frequenza
FROM Voti
GROUP BY Punteggio)
SELECT Punteggio
FROM CTE
WHERE Frequenza = 1;
Indici di variabilità
Gli indici di posizione centrale non bastano da soli a descrivere la distribuzione dei dati in una variabile. Per iniziare a fare analisi statistica è fondamentale abbinargli un indice di variabilità, per misurare appunto la tendenza dei dati a variare e ad assumere valori anche molto distanti dagli indici di posizione studiati precedentemente.
Range
Il range è l’indice di variabilità più semplice da calcolare, ma anche quello meno preciso. Ci basterà calcolare la differenza tra il valore massimo e il valore minimo della nostra distribuzione. Nel nostro esempio il massimo è 9, il minimo è 2 quindi il range sarà 9 – 2 = 7.
Possiamo eseguire facilmente il calcolo su Pandas
Voti["Punteggio"].max() - Voti["Punteggio"].min()
e su SQL Server
SELECT MAX(Punteggio) - MIN(Punteggio) AS Range
FROM Voti;
Differenza interquartile
La differenza interquartile (o range interquartile) è un indice di variabilità più sofisticato calcolato eseguendo la differenza tra il terzo quartile e il primo quartile. Non ci sono regole universali per calcolare il primo quartile e il terzo quartile. Molto spesso si utilizza uno di questi criteri:
- il primo quartile è il valore che, una volta ordinati i dati, è alla posizione (n-1)/4 + 1 oppure (n+1)/4;
- il terzo quartile è il valore che, una volta ordinati i dati, è alla posizione 3*(n-1)/4 + 1 oppure 3*(n+1)/4.
Su Pandas le posizioni sono individuate con la formula (n-1)/4 + 1 e 3*(n-1)/4 + 1 tramite il metodo quantile (https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.quantile.html)
Voti["Punteggio"].quantile(0.75) - Voti["Punteggio"].quantile(0.25)
Su SQL Server potrò analogamente scrivere la query
SELECT DISTINCT
PERCENTILE_CONT(0.75)
WITHIN GROUP (ORDER BY Punteggio) OVER()
-
PERCENTILE_CONT(0.25)
WITHIN GROUP(ORDER BY Punteggio) OVER()
FROM Voti;
Altri indici di variabilità e di forma
Sono presenti altri indici di variabilità a cui saranno dedicate delle lezioni apposite
- la varianza https://www.yimp.it/varianza/
- la deviazione standard https://www.yimp.it/deviazione-standard/
- l’indice di eterogeneità di Gini https://www.yimp.it/eterogeneita-in-statistica-indice-di-gini/
Gli indici di forma principali sono invece due:
- l’indice di asimmetria di Fisher per misurare appunto quanto sia simmetrica la variabile a sinistra e a destra degli indici di posizione
- l’indice di curtosi per misurare il grado di “appiattimento” della forma
Indici statistici per l’analisi multivariata
Fino ad ora ci siamo concentrati sullo studio di una singola variabile. Tuttavia uno dei grandi obiettivi delle tecniche statistiche e dell’analisi dei dati è misurare il grado di associazione tra due o più variabili. Questa tipologia di analisi è più complicata e spesso richiede anche tecniche di statistica inferenziale per poter generalizzare i risultati ottenuti. Comunque anche in questi casi esistono degli indici statistici che fanno da supporto all’analisi e che vedremo nelle prossime lezioni:
- il coefficiente di correlazione lineare di Pearson per il confronto tra due variabili quantitative;
- il coefficiente di correlazione di Spearman per il confronto tra due variabili quantitative o qualitative ordinabili;
- il coefficiente chi quadrato per il confronto tra due variabili qualitative;
- il coefficiente eta quadro per il confronto tra una variabile qualitativa e una quantitativa;
- più in generale tutte le tecniche legate a calcolare la correlazione tra variabili.
Continua a imparare
- Segui la lezione successiva sulla media ponderata
- Torna all’indice delle lezioni
- Visita la pagina del mio corso online di statistica