Impariamo a interpretare e calcolare il coefficiente di Spearman

coefficiente di spearman

Il coefficiente di Spearman è un indice statistico utilizzato per misurare il grado di relazione tra due variabili. Si tratta dunque di un indice bivariato: calcolerò ad esempio il coefficiente di Spearman per la coppia di variabili altezza-peso oppure reddito-grado d’istruzione, in modo da valutare la presenza di relazioni tra i dati delle coppie di variabili. In questo articolo studieremo la formula per calcolare questo coefficiente, la sua interpretazione e come implementarla con Excel, SQL e Python.

Casi d’uso

Abbiamo già discusso in un altro articolo del coefficiente di correlazione di Pearson per calcolare il grado di relazione tra due variabili. Rispetto ad esso, il coefficiente di Spearman ha due importanti vantaggi:

  • oltre che a variabili quantitative, può essere applicato anche a variabili qualitative ordinabili (clicca qui per ripassare le varie tipologie di variabili)
  • riesce a interpretare correttamente anche la presenza di relazioni di tipo non lineare

Per chiarire quest’ultimo punto osserviamo i due grafici in basso:

Confronto tra coefficiente di Spearman e coefficiente di Pearson in caso di relazioni lineari o esponenziali

Nel grafico a sinistra le due variabili sono legate da una relazione lineare, infatti la nube di punti è ben approssimata da una retta e i due coefficienti restituiscono valori simili. In quello di destra la relazione è di tipo esponenziale, e solo il coefficiente di Spearman riesce a catturare a pieno la presenza di questa relazione.

Formula del coefficiente di Spearman

Per calcolare il coefficiente ci basta seguire questi due passi:

  • calcolare per ogni variabile il rango dei valori. Chiariamo cosa intendiamo con rango tramite un semplice esempio: se la variabile assume i valori 170, 173 e 168 allora i ranghi associati saranno rispettivamente 2,1 e 3 perché l’1 (inteso come prima posizione) sarà relativo al valore più grande 173, il 2 (inteso come seconda posizione) sarà relativo al valore intermedio 170, mentre il 3 al valore più piccolo 168.
  • una volta calcolate le due colonne con i ranghi, il coefficiente di Spearman sarà uguale al coefficiente di Pearson di queste due nuove colonne.

Vediamo un esempio pratico. Supponiamo di voler calcolare il coefficiente di Spearman per le due colonne a sinistra “Variabile A” e “Variabile B”. Per prima cosa calcoliamo i rispettivi ranghi.

Variabile AVariabile BRango ARango B
205331
354224
805212
101055
134443

A questo punto il coefficiente di Spearman tra la Variabile A e la Variabile B è uguale al coefficiente di Pearson tra Rango A e Rango B, in questo caso 0.5.

Il calcolo dei ranghi si complica un po’ dal punto di vista tecnico se nella stessa colonna ci sono più righe con lo stesso valore. In questo caso si considera solitamente la media dei ranghi comuni. Ad esempio, per la terna di valori 15,10 e 10 il rango medio sarà rispettivamente 3, 1.5 e 1.5 in quanto per i due valori 10 devo considerare la media dei ranghi 1 e 2.

Coefficiente di Spearman con Excel

Possiamo svolgere facilmente il calcolo su Excel implementando i due passaggi descritti nella formula del paragrafo precedente:

  • il rango può essere calcolato tramite la funzione RANGO.MEDIA passandogli come argomento la cella di cui calcolare il rango e la relativa colonna. Ecco come apparirebbero le formule della tabella precedente su Excel.
  • a questo punto potremo semplicemente utilizzare la funzione PEARSON applicata alle celle delle colonne C e D, ad esempio in questo modo =PEARSON(C2:C6;D2:D6)

Coefficiente di Spearman con SQL

Vediamo ora l’implementazione con il linguaggio SQL sul database SQL Server. Il codice è un po’ macchinoso in quanto, per gestire la casistica dei pari merito, occorre far ricorso all’utilizzo delle window function. Inoltre per il coefficiente di Pearson dovremo implementare manualmente la formula che coinvolge covarianza e deviazione standard.

CREATE TABLE #Test (
	VariabileA DECIMAL(18,2) NOT NULL,
	VariabileB DECIMAL(18,2) NOT NULL);
INSERT INTO #Test
VALUES (20,53),(35,42),(80,52),(10,10),(13,44);
WITH CalcoloRanghi_step1 AS (
	SELECT 
		VariabileA,
		VariabileB,
		ROW_NUMBER() OVER (ORDER BY VariabileA DESC) AS RowNumberA,
		ROW_NUMBER() OVER (ORDER BY VariabileB DESC) AS RowNumberB
	FROM  #Test),
       CalcoloRanghi_step2 AS (
	SELECT 
		VariabileA,
		VariabileB,
                AVG(CAST(RowNumberA AS DECIMAL(18,2))) OVER (PARTITION BY VariabileA) AS RangoA,
		AVG(CAST(RowNumberB AS DECIMAL(18,2))) OVER(PARTITION BY VariabileB) AS RangoB
        FROM  CalcoloRanghi_step1 )
SELECT (AVG(RangoA*RangoB)-AVG(RangoA)*AVG(RangoB) )
                                     /
	   (STDEVP(RangoA)*STDEVP(RangoB))  AS CoefficienteSpearman
FROM   CalcoloRanghi_step2 ;

Coefficiente di Spearman con Python

Su Python l’implementazione è molto più semplice in quanto possiamo utilizzare librerie specifiche di analisi dei dati come Pandas. Tramite il metodo corr e in particolare il suo argomento method da valorizzare con “spearman”, possiamo ottenere con una sola riga di codice la matrice delle correlazioni calcolata utilizzando questo coefficiente.

import pandas as pd
df = pd.Dataframe(data=[[20, 53],[35,42],[80,52],[10,10],[13,44]],
                                columns = ["VariabileA","VariabileB"] )
df.corr(method="spearman")

Interpretazione del coefficiente

Dalle formule viste nei paragrafi precedente deduciamo che il valore del coefficiente di Spearman può variare tra -1 e 1. In particolare assume i valori estremi quando c’è una relazione perfetta di monotonia tra i dati raccolti per le due variabili: se crescono i primi, allora crescono sempre anche i secondi (in questo caso vale +1) oppure se crescono i primi decrescono sempre i secondi (in questo caso vale -1). Il valore 0 invece rappresenta che i dati non hanno rilevato nessuna forma di tendenza comune.

Continua a imparare

Scroll to Top
Torna su