Guida al Coefficiente di Spearman: Calcolo, Esempi Pratici e Python

Cerca:

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Come calcolare e interpretare il coefficiente di correlazione di Spearman

Spesso ci troviamo davanti a due serie di dati e ci chiediamo istintivamente: “se una sale, sale anche l’altra?”.

Magari stiamo confrontando le ore di studio con i voti ottenuti, il budget investito in pubblicità con i nuovi clienti acquisiti o il numero di ticket aperti con il rischio che un cliente abbandoni un servizio.

Quando queste relazioni sono chiare, costanti e lineari, la statistica ci offre strumenti molto noti, come la correlazione di Pearson. La realtà, però, è raramente così ordinata. I dati possono contenere valori anomali, pareggi, classifiche, giudizi qualitativi o relazioni che seguono una tendenza evidente senza disegnare una retta perfetta.

Come possiamo misurare la forza di una relazione quando i dati sono “sporchi”? E come fanno i Data Scientist a individuare rapidamente le variabili più importanti in dataset composti da migliaia o milioni di osservazioni?

In queste situazioni entra in gioco il coefficiente di correlazione per ranghi di Spearman ([math]\rho[/math]). Invece di concentrarsi sui valori assoluti, Spearman osserva il loro ordine, rendendolo uno strumento estremamente robusto quando i dati reali mettono in crisi gli approcci tradizionali.

In questa guida partiremo dai concetti fondamentali, risolveremo esercizi di difficoltà crescente, impareremo a gestire i pareggi e a verificare la significatività statistica dei risultati.

Infine faremo un salto nel mondo della Data Science ( esercizio 7), dove vedremo come un semplice coefficiente di correlazione possa aiutare un’azienda a individuare in anticipo i clienti a rischio di abbandono e a trasformare un’analisi statistica in una decisione di business.

Pubblicità

Introduzione Teorica

Il coefficiente di Spearman ([math]\rho[/math]) è una misura non parametrica della correlazione.

Valuta se esiste una relazione monotònica (crescente o decrescente) tra due variabili, basandosi sui ranghi (posizioni in classifica) invece che sui valori grezzi.

Formula base (senza pareggi):

[math]\displaystyle \rho = 1 – \frac{6 \sum d_i^2}{n(n^2 – 1)}[/math]

dove [math]d_i[/math] è la differenza tra i ranghi delle due variabili per ogni osservazione.


Esercizio 1: Il Giardiniere e le Piante (Facile)

Testo: Un giardiniere vuole verificare se esiste una relazione tra l’altezza di 5 piante (in cm) e il numero di foglie presenti. Misura i seguenti dati:

  • Pianta A: Altezza 10, Foglie 5
  • Pianta B: Altezza 15, Foglie 7
  • Pianta C: Altezza 20, Foglie 9
  • Pianta D: Altezza 25, Foglie 11
  • Pianta E: Altezza 30, Foglie 13

Calcola il coefficiente di correlazione di rango di Spearman.

Soluzione passo-passo:

  1. Assegnazione dei Ranghi: Poiché i dati sono già ordinati in modo crescente perfetto, i ranghi coincidono con l’ordine delle piante (1,2,3,4,5) per entrambe le variabili.
  2. Calcolo delle differenze ([math]d[/math]): [math]d = \text{Rango Altezza} – \text{Rango Foglie}[/math].
    Tutte le differenze sono 0.
  3. Calcolo di [math]\sum d_i^2[/math]: [math]0^2 + 0^2 + 0^2 + 0^2 + 0^2 = 0[/math].
  4. Applicazione della formula:
    [math]\displaystyle \rho = 1 – \frac{6 \cdot 0}{5 \cdot (25 – 1)} = 1 – 0 = 1[/math]

💡 Osservazione: Il valore [math]\rho = 1[/math] indica una correlazione perfetta e positiva. Quando i ranghi sono identici, la somma dei quadrati delle differenze è zero.

Domanda di riflessione: Cosa significherebbe per il giardiniere trovare [math]\rho = -1[/math]?


Esercizio 2: La Classifica del Torneo (Facile/Medio)

Testo: In un torneo di scacchi amatoriale, 6 giocatori vengono classificati dalla giuria (Classifica A) e dal pubblico tramite voto online (Classifica B). Ecco le due classifiche (1 = Migliore):

  • Giocatore 1: A=1, B=3
  • Giocatore 2: A=2, B=1
  • Giocatore 3: A=3, B=2
  • Giocatore 4: A=4, B=5
  • Giocatore 5: A=5, B=4
  • Giocatore 6: A=6, B=6

Calcola il coefficiente [math]\rho[/math] per valutare se giuria e pubblico sono d’accordo.

Soluzione passo-passo:

  1. Dati: Abbiamo già i ranghi (A e B). Non serve riordinare.
  2. Calcolo differenze ([math]d[/math]) e quadrati ([math]d^2[/math]):
    • G1: [math]1 – 3 = -2 \Rightarrow d^2 = 4[/math]
    • G2: [math]2 – 1 = 1 \Rightarrow d^2 = 1[/math]
    • G3: [math]3 – 2 = 1 \Rightarrow d^2 = 1[/math]
    • G4: [math]4 – 5 = -1 \Rightarrow d^2 = 1[/math]
    • G5: [math]5 – 4 = 1 \Rightarrow d^2 = 1[/math]
    • G6: [math]6 – 6 = 0 \Rightarrow d^2 = 0[/math]
  3. Somma dei quadrati: [math]\sum d_i^2 = 4 + 1 + 1 + 1 + 1 + 0 = 8[/math].
  4. Applicazione formula (n = 6):
    [math]\displaystyle \rho = 1 – \frac{6 \cdot 8}{6 \cdot (36 – 1)} = 1 – \frac{48}{210} = 1 – 0.2286 \approx 0.7714[/math]

💡 Osservazione: [math]\rho \approx 0.77[/math] indica una forte concordanza positiva. La giuria e il pubblico tendono ad essere d’accordo, anche se non perfettamente.

Domanda di riflessione: Perché in questo esercizio abbiamo usato direttamente i ranghi invece di calcolarli dai dati grezzi?


Esercizio 3: Il Caso dei Pareggi (Medio)

Testo: Un insegnante valuta 8 studenti in due prove diverse (Matematica e Fisica), ma i voti sono su scale diverse. Per usare Spearman, deve prima trasformare i voti in ranghi. Attenzione: ci sono pareggi nei voti di Matematica!

  • Studente: A, B, C, D, E, F, G, H
  • Voto Matematica: 8, 7, 9, 8, 6, 7, 5, 8
  • Voto Fisica: 7, 8, 6, 9, 5, 7, 8, 6

Calcola [math]\rho[/math].

Soluzione passo-passo (gestione pareggi con rango medio):

  1. Ordinamento e Rango per Matematica:
    Voti: 5 (rango 1), 6 (rango 2), 7 (rango 3 e 4), 8 (rango 5,6,7), 9 (rango 8).
    Assegnazione ranghi medi:

    • Voto 5 -> Rango 1 (Studente G)
    • Voto 6 -> Rango 2 (Studente E)
    • Voto 7 -> Rango (3+4)/2 = 3.5 (Studenti B, F)
    • Voto 8 -> Rango (5+6+7)/3 = 6 (Studenti A, D, H)
    • Voto 9 -> Rango 8 (Studente C)

    Ranghi Matematica: A=6, B=3.5, C=8, D=6, E=2, F=3.5, G=1, H=6.

  2. Ordinamento e Rango per Fisica:
    Voti: 5 (rango 1), 6 (rango 2 e 3), 7 (rango 4 e 5), 8 (rango 6 e 7), 9 (rango 8).
    Assegnazione:

    • Voto 5 -> Rango 1 (E)
    • Voto 6 -> Rango (2+3)/2 = 2.5 (C, H)
    • Voto 7 -> Rango (4+5)/2 = 4.5 (A, F)
    • Voto 8 -> Rango (6+7)/2 = 6.5 (B, G)
    • Voto 9 -> Rango 8 (D)

    Ranghi Fisica: A=4.5, B=6.5, C=2.5, D=8, E=1, F=4.5, G=6.5, H=2.5.

  3. Tabella differenze:
    • A: [math]6 – 4.5 = 1.5 \Rightarrow d^2 = 2.25[/math]
    • B: [math]3.5 – 6.5 = -3 \Rightarrow d^2 = 9[/math]
    • C: [math]8 – 2.5 = 5.5 \Rightarrow d^2 = 30.25[/math]
    • D: [math]6 – 8 = -2 \Rightarrow d^2 = 4[/math]
    • E: [math]2 – 1 = 1 \Rightarrow d^2 = 1[/math]
    • F: [math]3.5 – 4.5 = -1 \Rightarrow d^2 = 1[/math]
    • G: [math]1 – 6.5 = -5.5 \Rightarrow d^2 = 30.25[/math]
    • H: [math]6 – 2.5 = 3.5 \Rightarrow d^2 = 12.25[/math]
  4. Calcolo [math]\sum d^2[/math]: [math]2.25 + 9 + 30.25 + 4 + 1 + 1 + 30.25 + 12.25 = 90[/math].
  5. Formula (n = 8):
    [math]\displaystyle \rho = 1 – \frac{6 \cdot 90}{8 \cdot (64 – 1)} = 1 – \frac{540}{504} = 1 – 1.0714 \approx -0.0714[/math]

💡 Osservazione: Un valore vicino allo 0 suggerisce che non c’è una relazione monotònica tra i voti di Matematica e Fisica in questo gruppo. L’uso del rango medio è fondamentale in presenza di pareggi per non distorcere il calcolo.

Domanda di riflessione: Se non avessimo usato il rango medio e avessimo assegnato ranghi arbitrari in caso di pareggio, il risultato sarebbe cambiato? Perché?


Esercizio 4: Marketing e Vendite (Medio/Difficile – Dati Reali)

Testo: Un’azienda vuole sapere se esiste correlazione tra il budget pubblicitario (in migliaia di €) e il numero di nuovi clienti acquisiti in 7 mesi. I dati sono:

  • Mese: 1, 2, 3, 4, 5, 6, 7
  • Budget: 10, 12, 15, 15, 18, 25, 30
  • Clienti: 50, 60, 70, 65, 90, 110, 120

Calcola Spearman.

Soluzione passo-passo:

  1. Ranghi per Budget:
    10(1), 12(2), 15(3,4), 18(5), 25(6), 30(7).
    Ranghi: 1, 2, 3.5, 3.5, 5, 6, 7.
  2. Ranghi per Clienti (nessun pareggio):
    50(1), 60(2), 65(3), 70(4), 90(5), 110(6), 120(7).
    Ranghi: 1, 2, 4, 3, 5, 6, 7.
  3. Tabella differenze:
    [math]d[/math]: 0, 0, -0.5, 0.5, 0, 0, 0.
    [math]d^2[/math]: 0, 0, 0.25, 0.25, 0, 0, 0.
    Somma: [math]\sum d^2 = 0.5[/math].
  4. Formula (n = 7):
    [math]\displaystyle \rho = 1 – \frac{6 \cdot 0.5}{7 \cdot (49 – 1)} = 1 – \frac{3}{336} = 1 – 0.00893 \approx 0.9911[/math]

💡 Osservazione: [math]\rho \approx 0.99[/math] indica una correlazione positiva quasi perfetta. Nonostante il piccolo “scarto” a Mese 4 (dove il budget è più alto ma i clienti leggermente inferiori al previsto), la tendenza generale è fortemente crescente.

Domanda di riflessione: Se i dati fossero stati misurati su scala diversa (es. budget in euro invece che migliaia), il valore di [math]\rho[/math] sarebbe cambiato?


Esercizio 5: Il Test d’Ingresso (Difficile – Significatività)

Testo: Un’università somministra un test d’ingresso (punteggio 0-100) a 10 studenti e confronta i risultati con la media dei voti del primo semestre. Calcola [math]\rho[/math] e stabilisci se la correlazione è significativa al 5% sapendo che il valore critico di Spearman per n=10 a [math]\alpha = 0.05[/math] è circa 0.648 (due code).

Dati (Test, Media): (85, 28), (78, 26), (90, 30), (70, 24), (88, 27), (65, 22), (82, 25), (75, 23), (95, 29), (60, 21).

Soluzione passo-passo:

  1. Assegnazione Ranghi (nessun pareggio):
    Rango Test (dal più basso al più alto): 60(1), 65(2), 70(3), 75(4), 78(5), 82(6), 85(7), 88(8), 90(9), 95(10).
    Rango Medie (dal più basso al più alto): 21(1), 22(2), 23(3), 24(4), 25(5), 26(6), 27(7), 28(8), 29(9), 30(10).
  2. Calcolo [math]d[/math] e [math]d^2[/math]: (Coppie ordinate)
    • Studente Test 85 (Rango 7), Media 28 (Rango 8) -> [math]d = -1 \Rightarrow 1[/math]
    • 78 (5) vs 26 (6) -> [math]d = -1 \Rightarrow 1[/math]
    • 90 (9) vs 30 (10) -> [math]d = -1 \Rightarrow 1[/math]
    • 70 (3) vs 24 (4) -> [math]d = -1 \Rightarrow 1[/math]
    • 88 (8) vs 27 (7) -> [math]d = 1 \Rightarrow 1[/math]
    • 65 (2) vs 22 (2) -> [math]d = 0 \Rightarrow 0[/math]
    • 82 (6) vs 25 (5) -> [math]d = 1 \Rightarrow 1[/math]
    • 75 (4) vs 23 (3) -> [math]d = 1 \Rightarrow 1[/math]
    • 95 (10) vs 29 (9) -> [math]d = 1 \Rightarrow 1[/math]
    • 60 (1) vs 21 (1) -> [math]d = 0 \Rightarrow 0[/math]
  3. Somma: [math]\sum d^2 = 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 = 8[/math].
  4. Formula (n = 10):
    [math]\displaystyle \rho = 1 – \frac{6 \cdot 8}{10 \cdot (100 – 1)} = 1 – \frac{48}{990} = 1 – 0.04848 \approx 0.9515[/math]
  5. Test di Significatività: [math]\rho_{calcolato} = 0.9515[/math]. Il valore critico è 0.648.
    Poiché [math]0.9515 > 0.648[/math], rifiutiamo l’ipotesi nulla (correlazione assente). La correlazione positiva è statisticamente significativa (il test d’ingresso è un buon predittore del rendimento).

💡 Osservazione: In una verifica, non basta calcolare il coefficiente; bisogna spesso confrontarlo con i valori critici di Spearman per capire se il risultato è dovuto al caso.

Domanda di riflessione: Qual è l’ipotesi nulla in un test di significatività per il coefficiente di Spearman?


Esercizio 6: Spearman vs Pearson, un’Analisi Comparativa (Avanzato)

Testo:

Immaginiamo un ricercatore che studia la relazione tra il numero di ore di sonno (X) e il livello di stress percepito (Y) su una scala da 1 a 10, monitorando 8 soggetti. Osservando i dati, si accorge che chi dorme di più è costantemente meno stressato, ma la discesa non è perfettamente regolare (il beneficio delle prime ore di sonno sembra maggiore rispetto alle ultime).

Per dimostrare questa peculiarità, decide di calcolare e confrontare sia il coefficiente di correlazione lineare di Pearson ([math]r[/math]), sia quello per ranghi di Spearman ([math]\rho[/math]).

Dati rilevati (Ore di sonno, Livello di stress): (4, 9), (5, 8), (6, 6), (7, 5), (8, 4), (9, 3), (10, 2), (11, 1).

Soluzione passo-passo

1. Analisi visiva e teorica

Se provassimo a mettere questi dati su un grafico, vedremmo una curva che scende sempre, ma che non forma una linea retta perfetta (ad esempio, passando da 5 a 6 ore di sonno, lo stress crolla di due punti, da 8 a 6, mentre in altri casi scende solo di un punto). Ricordiamo la regola d’oro: Pearson valuta quanto i dati formino una retta, Spearman valuta quanto i dati seguano un ordine coerente.

2. Calcolo del Coefficiente di Spearman ([math]\rho[/math])

Poiché la relazione è costantemente decrescente, l’ordine in classifica dei dati si inverte perfettamente tra le due variabili.

Ranghi X (dal più basso al più alto): 1, 2, 3, 4, 5, 6, 7, 8

Ranghi Y (dal più basso al più alto): 8, 7, 6, 5, 4, 3, 2, 1

Calcoliamo le differenze ([math]d[/math]) tra i ranghi per ciascuna coppia e i loro quadrati ([math]d^2[/math]):

  • [math]1 – 8 = -7 \Rightarrow d^2 = 49[/math]
  • [math]2 – 7 = -5 \Rightarrow d^2 = 25[/math]
  • [math]3 – 6 = -3 \Rightarrow d^2 = 9[/math]
  • [math]4 – 5 = -1 \Rightarrow d^2 = 1[/math]
  • [math]5 – 4 = 1 \Rightarrow d^2 = 1[/math]
  • [math]6 – 3 = 3 \Rightarrow d^2 = 9[/math]
  • [math]7 – 2 = 5 \Rightarrow d^2 = 25[/math]
  • [math]8 – 1 = 7 \Rightarrow d^2 = 49[/math]

Sommiamo i quadrati: [math]\sum d_i^2 = 168[/math]

Applichiamo la formula di Spearman per [math]n = 8[/math]:

[math]\displaystyle \rho = 1 – \frac{6 \cdot 168}{8 \cdot (64 – 1)} = 1 – \frac{1008}{504} = 1 – 2 = -1[/math]

Risultato Spearman: [math]\rho = -1[/math]. La correlazione monotònica negativa è perfetta. Ogni volta che le ore di sonno aumentano, lo stress scende, senza alcuna eccezione.

3. Calcolo del Coefficiente di Pearson ([math]r[/math])

Per calcolare Pearson, dobbiamo usare i valori reali (non i ranghi), partendo dalle medie matematiche:

Media di X ([math]\bar{X}[/math]) = 7.5

Media di Y ([math]\bar{Y}[/math]) = 4.75

Calcoliamo la devianza delle due variabili e il prodotto dei loro scarti. Omettendo i passaggi aritmetici intermedi, otteniamo:

  • Somma dei prodotti degli scarti (Covarianza numeratore): [math]\sum (X – \bar{X})(Y – \bar{Y}) = -48[/math]
  • Devianza di X: [math]\sum (X – \bar{X})^2 = 42[/math]
  • Devianza di Y: [math]\sum (Y – \bar{Y})^2 = 55.5[/math]

Applichiamo la formula di Pearson:

[math]\displaystyle r = \frac{-48}{\sqrt{42 \cdot 55.5}} = \frac{-48}{\sqrt{2331}} \approx \frac{-48}{48.28} \approx -0.994[/math]

Risultato Pearson: [math]r \approx -0.994[/math]. La correlazione lineare negativa è fortissima, ma non perfetta.

4. Interpretazione Comparativa

La differenza tra [math]\rho = -1[/math] e [math]r \approx -0.994[/math] è sottile ma concettualmente cruciale:

  • Spearman ([math]\rho = -1[/math]): indica che esiste una perfetta relazione monotònica. La classifica delle variabili è perfettamente invertita: al crescere di X, Y decresce sempre e in modo coerente.
  • Pearson ([math]r \approx -0.994[/math]): indica che la relazione è fortemente lineare, ma non perfetta. La leggera differenza da -1 segnala che i punti non giacciono esattamente su una retta.

In questo caso, la non-linearità è data dal fatto che il beneficio delle prime ore di sonno è maggiore: i primi incrementi di X producono una diminuzione più marcata di Y rispetto agli ultimi. Questa “curvatura” fa sì che i dati si discostino dalla retta perfetta, penalizzando leggermente il coefficiente di Pearson.

💡 Lezione chiave: Quando si sospetta una relazione monotònica ma non lineare (esponenziale, logaritmica, o con effetto “tetto”), il coefficiente di Spearman è più affidabile di quello di Pearson per catturare la forza della relazione.

Questo è forse l’esempio più importante dell’intero articolo perché mette in luce la vera natura e il vantaggio di Spearman.

Spearman ci restituisce esattamente -1, certificando che l’ordine delle due variabili è inversamente proporzionale al 100%. Pearson si ferma a -0.994. È un valore altissimo, ma perché non arriva al -1 perfetto? Perché Pearson è “ossessionato” dalla linea retta. Vede che il calo dello stress da 8 a 6 (passando da 5 a 6 ore di sonno) è un “salto” geometricamente diverso dagli altri, e lo penalizza interpretandolo come una piccola imperfezione lineare.

Spearman nelle situazioni reali

Nel mondo reale, pochissimi fenomeni seguono linee rette perfette. Immagina la crescita batterica (esponenziale), i rendimenti degli investimenti (logaritmici), o l’efficacia di un farmaco all’aumentare della dose (con un effetto tetto).

Se usi Pearson su dati curvi, rischi di sottostimare fortemente la relazione tra due fenomeni solo perché non disegnano una retta perfetta. Spearman, invece, è robusto rispetto alle curve: se i dati salgono (o scendono) insieme, lui lo riconosce sempre e te lo segnala con precisione, ignorando i capricci geometrici della loro traiettoria.

Domanda di riflessione: In quali situazioni reali è più appropriato usare Spearman invece di Pearson?

Risposte alle Domande di Riflessione

Esercizio 1

Cosa significherebbe per il giardiniere trovare [math]\rho = -1[/math]?

Significherebbe che esiste una correlazione perfetta e negativa. Quando una pianta è più alta (rango alto), ha poche foglie (rango basso) e viceversa. Le due variabili si muovono in direzioni esattamente opposte. Il giardiniere dovrebbe dedurre che in questo specifico campione, l’altezza è inversamente proporzionale al numero di foglie.

Esercizio 2

Perché in questo esercizio abbiamo usato direttamente i ranghi invece di calcolarli dai dati grezzi?

Perché i dati di partenza erano già delle classifiche. La variabile “Classifica A” e “Classifica B” rappresentano di per sé l’ordine di preferenza (es. 1°, 2°, 3°). In Spearman, noi calcoliamo i ranghi partendo dai dati grezzi; se i dati grezzi sono già ranghi, possiamo saltare il primo passaggio e applicare direttamente la formula.

Esercizio 3

Se non avessimo usato il rango medio e avessimo assegnato ranghi arbitrari in caso di pareggio, il risultato sarebbe cambiato? Perché?

Sì, il risultato cambierebbe. Assegnare ranghi arbitrari (es. invece di dare 3.5 a due voti 7, dare 3 e 4 a caso) introduce una distorsione artificiale. Modifica la distanza ([math]d[/math]) tra i ranghi delle due variabili per quegli individui, influenzando [math]\sum d^2[/math] e quindi il valore di [math]\rho[/math]. Il rango medio è l’unico modo oggettivo per trattare i pareggi.

Esercizio 4

Se i dati fossero stati misurati su scala diversa (es. budget in euro invece che migliaia), il valore di [math]\rho[/math] sarebbe cambiato?

Assolutamente no. Spearman si basa sui ranghi, non sui valori assoluti. Moltiplicare tutti i valori del budget per 1000 non cambia l’ordine di grandezza relativo (il più piccolo rimane il più piccolo, il più grande il più grande). I ranghi rimangono identici, quindi [math]\rho[/math] rimane [math]0.9911[/math]. Questa è una delle grandi proprietà dei coefficienti di rango.

Esercizio 5

Qual è l’ipotesi nulla in un test di significatività per il coefficiente di Spearman?

L’ipotesi nulla ([math]H_0[/math]) afferma che non c’è correlazione monotònica tra le due variabili nella popolazione, ovvero [math]\rho = 0[/math]. L’ipotesi alternativa ([math]H_1[/math]) afferma che c’è correlazione ([math]\rho \neq 0[/math] per un test bidirezionale, o [math]\rho > 0[/math] o [math]\rho < 0[/math] per test unidirezionali). Noi rifiutiamo [math]H_0[/math] se il nostro [math]\rho[/math] calcolato supera il valore critico tabulato.

Esercizio 6

In quali situazioni reali è più appropriato usare Spearman invece di Pearson?

Spearman è più appropriato quando:

  • I dati non sono normali (distribuzione non gaussiana).
  • La relazione tra le variabili è monotònica ma non lineare (es. curva logaritmica, esponenziale, o a “scalino”).
  • Ci sono valori anomali (outlier) molto forti che distorcerebbero la media e la correlazione lineare di Pearson.
  • I dati sono ordinali (es. “primo”, “secondo”, “terzo”) piuttosto che intervalli continui.

Un esempio classico è la relazione tra l’età e la soddisfazione della vita: spesso diminuisce con l’età ma non in modo lineare, oppure lo stress aumenta con il numero di impegni, ma con un effetto “tetto” (non lineare).

Implementazione “Production-Ready” in Python

Ecco un piccolo script Python che implementa il calcolo di Spearman con la correzione per i pareggi, seguendo le best practice per un ambiente di produzione (gestione input, calcolo vettorizzato, test di significatività).

import numpy as np
import pandas as pd
from scipy import stats
from typing import List, Tuple

def calcola_spearman(x: List[float], y: List[float]) -> Tuple[float, float]:
    """
    Calcola il coefficiente di correlazione di rango di Spearman e il p-value.

    Args:
        x: Lista di valori per la prima variabile.
        y: Lista di valori per la seconda variabile.

    Returns:
        Una tupla contenente (coefficiente rho, p-value a due code).

    Raises:
        ValueError: Se le liste non hanno la stessa lunghezza o sono vuote.
    """
    if len(x) != len(y):
        raise ValueError("Le due liste devono avere la stessa lunghezza.")
    if len(x) < 2:
        raise ValueError("Servono almeno 2 osservazioni per calcolare la correlazione.")

    # Utilizzo della funzione ottimizzata di SciPy (gestisce automaticamente i pareggi)
    # 'alternative='two-sided' è il default per il test di significatività.
    rho, p_value = stats.spearmanr(x, y)

    # Arrotondamento per leggibilità nei report
    return round(rho, 4), round(p_value, 6)

# --- Esempio di utilizzo (Esercizio 5) ---
if __name__ == "__main__":
    test_scores = [85, 78, 90, 70, 88, 65, 82, 75, 95, 60]
    uni_grades = [28, 26, 30, 24, 27, 22, 25, 23, 29, 21]

    rho, p_val = calcola_spearman(test_scores, uni_grades)

    print(f"🏆 Coefficiente di Spearman: {rho}")
    print(f"📊 P-value associato: {p_val}")

    # Interpretazione automatica (produzione-ready)
    alpha = 0.05
    if p_val < alpha:
        print("✅ Risultato statisticamente significativo (rifiuto H0).")
    else:
        print("❌ Risultato non statisticamente significativo (non rifiuto H0).")
🏆 Coefficiente di Spearman: 0.9515
📊 P-value associato: 2.3e-05
✅ Risultato statisticamente significativo (rifiuto H0).

Finora abbiamo lavorato in un ambiente protetto: giardinieri metodici, tornei ben organizzati e voti scolastici. Ma cosa succede quando usciamo dall’aula ed entriamo in un’azienda dove ogni decisione può valere milioni di euro?

Nel mondo reale dei Big Data, i numeri sono quasi sempre sporchi. I clienti non si comportano come punti ordinati su un grafico: reagiscono in modo improvviso, accumulano comportamenti estremi, cambiano idea senza seguire traiettorie lineari. È un sistema instabile, rumoroso, spesso ingannevole.

Ed è proprio qui che gli strumenti classici iniziano a perdere precisione.

In uno scenario del genere, il coefficiente di Spearman smette di essere un esercizio da libro e diventa uno strumento operativo: non misura la perfezione di una linea, ma la coerenza di un ordine. E questo, nel mondo reale, fa tutta la differenza.

Per capirlo davvero, dobbiamo uscire dalla teoria e entrare in un contesto dove la statistica non serve a “risolvere esercizi”, ma a prevenire perdite economiche concrete.

Immagina di essere un Data Scientist in una grande azienda di telecomunicazioni. Il tuo lavoro non è spiegare i dati: è anticipare un comportamento critico prima che accada.

Il management ti pone una domanda semplice solo in apparenza:

come possiamo prevedere quali clienti stanno per abbandonare il servizio?

È qui che entra in gioco uno dei problemi più realistici della Data Science industriale: il churn dei clienti.

E proprio da questo scenario partiamo.

Esercizio 7: Data Science e Telecom Churn (Il Mondo Reale)

Testo:

Immagina di essere un Data Scientist per un’azienda di telecomunicazioni. Il management ti chiede di capire perché i clienti disdicono l’abbonamento (il cosiddetto Churn).

Durante l’Analisi Esplorativa dei Dati (EDA), estrai un dataset con migliaia di utenti e diverse variabili (Feature): Età del cliente, Numero di ticket di assistenza aperti, Tempo medio di risposta e Spesa mensile.

Vuoi capire quale di queste variabili è il miglior “campanello d’allarme” per prevedere l’abbandono. Prendi un campione di 8 clienti per analizzare il rapporto tra Numero di Ticket aperti (X) e Rischio di Churn (Y) (valutato da un algoritmo precedente su una scala da 1 a 10).

Dati rilevati (Numero Ticket, Rischio Churn):

  • Cliente A: (1, 2)
  • Cliente B: (1, 3)
  • Cliente C: (2, 2)
  • Cliente D: (3, 6)
  • Cliente E: (4, 5)
  • Cliente F: (6, 8)
  • Cliente G: (8, 9)
  • Cliente H: (45, 10) <- Attenzione a questo cliente!

Soluzione

1. Il problema del cliente H (L’Outlier)

Se guardi i dati, i ticket crescono gradualmente da 1 a 8. Poi c’è il Cliente H, un utente furioso che ha aperto ben 45 ticket.

Un outlier può influenzare sensibilmente il coefficiente di Pearson, mentre Spearman, basandosi sui ranghi anziché sui valori assoluti, tende a essere molto più robusto rispetto a questo tipo di osservazioni estreme.

Spearman, invece, trasforma quel “45” in un semplice rango. Non gli interessa quanto è grande il numero, ma solo che è il “1° classificato” per numero di ticket.

2. Calcolo dei Ranghi e differenze ([math]d[/math])

Ranghi Ticket (X): 1.5 (A e B pari merito), 3, 4, 5, 6, 7, 8

Ranghi Churn (Y): 1.5 (A e C pari merito), 3, 4, 5, 6, 7, 8

Senza fare tutti i passaggi aritmetici dei pareggi (che in produzione faremmo fare a Python, come visto nel paragrafo precedente), se diamo in pasto questi dati all’algoritmo di Spearman, otteniamo un risultato chiarissimo:

Risultato Spearman calcolato:

[math]\rho \approx 0.94[/math] sul nostro micro-campione.

Allargando l’analisi all’intero dataset aziendale di 10.000 clienti, l’algoritmo ci restituisce [math]\rho = 0.72[/math].

È normale che il coefficiente diminuisca quando si passa da un piccolo campione costruito a scopo didattico a un dataset reale con migliaia di clienti, dove il comportamento è molto più eterogeneo.

💡 Osservazione

Un [math]\rho = 0.72[/math] tra il Numero di Ticket e il Churn è una scoperta di enorme valore strategico.

Ma perché abbiamo usato Spearman e non Pearson?

  • Immunità agli Outlier: Come abbiamo visto con il Cliente H, nel mondo reale i dati sono sporchi. Ci sarà sempre il cliente che fa 50 chiamate al call center mentre la media è 2. Spearman disinnesca questi “bombe” statistiche basandosi sulle classifiche.
  • Soglie di rottura non lineari: Spesso la pazienza di un cliente non cala come una linea retta. Passare da 0 a 1 ticket è normale. Passare da 1 a 2 crea fastidio. Ma passare da 2 a 3 ticket fa crollare verticalmente la fiducia (effetto “goccia che fa traboccare il vaso”). Pearson non capta questa rottura improvvisa; Spearman sì, perché riconosce che il trend sta salendo, indipendentemente dalla forma del crollo.

A livello applicativo:

Grazie a questo [math]\rho = 0.72[/math], il Data Scientist non si limita a consegnare un report matematico, ma fornisce una direttiva aziendale:

“I dati ci dicono che il volume dei ticket è fortemente legato alla disdetta. Dobbiamo impostare un alert automatico nel CRM: appena un cliente apre il suo 3° ticket, il sistema deve attivare uno sconto o farlo chiamare da un operatore senior per evitare il Churn”.

Questo è il vero potere della statistica applicata!

La Visione d’Insieme: La Heatmap di Correlazione

Nella realtà, il Data Scientist non si limita a calcolare la correlazione per una sola variabile, ma analizza l’intero dataset simultaneamente. Il risultato viene poi proiettato in una Heatmap di Correlazione (mappa di calore), dove i colori più intensi indicano le relazioni più forti.

Se calcolassimo il coefficiente [math]\rho[/math] di Spearman per tutte le variabili del nostro dataset rispetto al rischio di disdetta (Churn), otterremmo questa classifica:

Feature (Variabile) Correlazione con il Churn ([math]\rho[/math]) Interpretazione Rapida
Numero Ticket [math]0.72[/math] 🚨 Forte correlazione positiva (Vero campanello d’allarme)
Tempo risposta [math]0.61[/math] ⚠️ Correlazione positiva moderata (L’attesa irrita)
Età [math]-0.15[/math] ⚪ Correlazione trascurabile (L’età non incide molto)
Spesa mensile [math]-0.40[/math] 📉 Correlazione negativa moderata (Chi spende di più tende a restare)

Cosa capisce immediatamente il management?

Basta un’occhiata per capire perché il “Numero Ticket” vince su tutti. Il valore [math]0.72[/math] è il più vicino a [math]1[/math]. D’altra parte, vediamo che la “Spesa” ha un [math]\rho[/math] negativo ([math]-0.40[/math]): questo ci dice che all’aumentare della spesa, il rischio di Churn diminuisce (forse i clienti altospendenti hanno contratti premium bloccati o un’assistenza dedicata migliore).

Correlazione di Spearman

Pubblicità
Forse potrebbe interessarti anche:  Distribuzione Gamma: La Guida Pratica per Modellare Tempi e Valori Positivi (con Esempi e Codice Python)