Correlazione: Pearson, Spearman e Kendall (e perché non è causazione)

Chi guarda i dati di un sito lo fa di continuo, spesso senza nemmeno accorgersene: nota che due cose sembrano muoversi insieme. Le pagine che stanno più in alto in SERP prendono più clic; quelle dove gli utenti restano più a lungo convertono di più; gli articoli più lunghi paiono posizionarsi meglio. Sono intuizioni preziose, ma restano vaghe finché non rispondiamo a una domanda precisa: quanto si muovono insieme, queste coppie di numeri? E in che senso? Serve un indice che trasformi l’impressione “vanno di pari passo” in una misura confrontabile. Quell’indice è la correlazione, ed è uno degli strumenti più usati — e più fraintesi — di tutta la statistica applicata.

Diciamo subito cosa la correlazione non è, perché è qui che nascono i guai. La correlazione misura se e quanto due variabili si associano; non dice che una causa l’altra, e non costruisce un modello per prevedere l’una dall’altra. Quel secondo passo — la previsione — è il mestiere della regressione, di cui ci occuperemo a parte. Qui restiamo sul gradino precedente: capire, con un solo numero, se due metriche viaggiano insieme.

Dalla covarianza alla correlazione

L’idea di partenza è semplice. Se due variabili si muovono insieme, quando una sta sopra la propria media anche l’altra tende a stare sopra la sua; quando una scende sotto, l’altra la segue. Possiamo misurare questa tendenza moltiplicando, per ogni osservazione, lo scarto di x dalla sua media per lo scarto di y dalla sua, e facendone la media. È la covarianza:

\( \text{cov}(x, y) = \frac{1}{n} \sum_{i=1}^{n} (x_i – \bar{x})(y_i – \bar{y}) \\ \)

dove e ȳ sono le medie delle due variabili e n il numero di osservazioni. Quando gli scarti hanno lo stesso segno (entrambi sopra o entrambi sotto la media) il prodotto è positivo; quando hanno segni opposti è negativo. Una covarianza positiva segnala dunque che le due variabili tendono a crescere insieme, una negativa che quando l’una sale l’altra scende.

La covarianza, però, ha un difetto che la rende inutilizzabile come metro di confronto: dipende dalle unità di misura. La covarianza tra sessioni e secondi di permanenza è un numero, quella tra sessioni e tasso di conversione un altro, e i due non si possono paragonare perché parlano lingue diverse. Per ottenere una misura pulita la dividiamo per le due deviazioni standard, in modo da spogliarla delle unità e costringerla in un intervallo fisso. Otteniamo così il coefficiente di correlazione di Pearson:

\( r = \frac{\sum_{i=1}^{n} (x_i – \bar{x})(y_i – \bar{y})}{\sqrt{\sum_{i=1}^{n} (x_i – \bar{x})^2} \; \sqrt{\sum_{i=1}^{n} (y_i – \bar{y})^2}} \\ \)

Il numeratore non è altro che la covarianza (a meno del fattore n); il denominatore è il prodotto delle due variabilità, e serve appunto a normalizzare. Il risultato è un numero puro compreso tra −1 e +1: vale +1 quando i punti stanno esattamente su una retta crescente, −1 quando stanno su una retta decrescente, 0 quando non c’è alcuna associazione lineare. Quanto più r si avvicina agli estremi, tanto più stretta è la relazione lineare.

Pearson: l’associazione lineare (e la sua trappola)

Mettiamolo subito al lavoro su un caso che chi fa SEO conosce a memoria: il legame tra la posizione in SERP e il CTR, la percentuale di clic. Sappiamo tutti che più si scende nella pagina dei risultati, meno si viene cliccati. Prendiamo dieci posizioni con i rispettivi CTR osservati e calcoliamo in R il coefficiente di Pearson:

pos <- 1:10
ctr <- c(28.5, 15.7, 11.0, 7.2, 8.0, 5.1, 4.0, 3.2, 2.8, 2.6)  # CTR % per posizione

cor(pos, ctr)
# [1] -0.852

Il coefficiente è −0,852: forte, negativo, esattamente come ci aspettavamo. Eppure c’è qualcosa che non torna. Il legame tra posizione e CTR è ferreo — non capita quasi mai che una posizione più bassa renda più clic — e ci aspetteremmo un valore ancora più vicino a −1. Perché Pearson si ferma a −0,85?

La risposta è il punto più importante di tutto l’articolo. Pearson misura solo l’associazione lineare, cioè quanto bene i punti si dispongono lungo una retta. Ma la curva del CTR non è una retta: crolla a precipizio dalla prima alla terza posizione e poi si appiattisce. La relazione è fortissima, solo che è curva. Pearson, che cerca rette, vede quella curvatura come “imperfezione” e abbassa il voto. Non sta sbagliando: sta rispondendo a una domanda — “quanto è lineare?” — che in questo caso non è quella giusta.

Spearman e Kendall: l’associazione monotòna

Per molte relazioni del mondo SEO ci interessa una cosa più debole della linearità: ci basta sapere se, quando una variabile cresce, l’altra cresce sistematicamente (o cala sistematicamente), senza pretendere che lo faccia a passo costante. Una relazione del genere si dice monotòna, e per misurarla esiste il coefficiente di correlazione per ranghi di Spearman, indicato con ρ (rho).

Il trucco di Spearman è elegante: invece di lavorare sui valori, lavora sui loro ranghi. Sostituisce a ogni numero la sua posizione in classifica (il più piccolo diventa 1, il successivo 2, e così via) e poi calcola un normale Pearson su questi ranghi. In questo modo la forma esatta della curva sparisce — conta solo l’ordine — e ciò che resta è quanto fedelmente l’ordine di x riproduce quello di y. Lo calcoliamo sugli stessi dati di prima:

cor(pos, ctr, method = "spearman")
# [1] -0.988

Adesso il coefficiente è −0,988, schiacciato contro −1. È la fotografia corretta della situazione: man mano che la posizione peggiora, il CTR cala quasi senza eccezioni. (Quel “quasi” non è un caso: nei dati ho lasciato una piccola inversione realistica, la posizione 5 che rende più della 4, come capita quando un rich snippet gonfia il CTR di un risultato; è esattamente il genere di increspatura che impedisce a ρ di toccare il −1 esatto.) Dove Pearson vedeva un’associazione “buona ma non ottima”, Spearman riconosce la relazione monotòna quasi perfetta che effettivamente c’è.

Esiste una terza misura che vale la pena conoscere, il tau di Kendall (τ). Anch’essa lavora sull’ordine, ma con una logica diversa: conta, su tutte le coppie di osservazioni, quante sono concordi (se x cresce, cresce anche y) e quante discordi, e ne fa il bilancio. La calcolo in R sempre sugli stessi dati:

cor(pos, ctr, method = "kendall")
# [1] -0.956

Kendall restituisce −0,956, anch’esso vicino agli estremi ma tipicamente un po’ più prudente di Spearman. Nella pratica quotidiana la scelta è meno complicata di quanto sembri: Pearson quando ci interessa una relazione lineare e i dati non hanno code o valori anomali violenti; Spearman quando la relazione è monotòna ma curva, o quando i dati sono già ranghi (posizioni, classifiche), o quando un paio di outlier rischiano di sballare Pearson; Kendall quando le osservazioni sono poche o ci sono molti valori a pari merito, situazione in cui le sue proprietà statistiche reggono meglio.

La matrice di correlazione

Raramente abbiamo solo due metriche da confrontare. Più spesso ne abbiamo una manciata — sessioni, durata media, conversioni, frequenza di rimbalzo — e vorremmo vedere tutte le associazioni a colpo d’occhio. La funzione cor() di R, applicata a un intero data frame, restituisce la matrice di correlazione: il coefficiente di ogni variabile con ogni altra. La costruisco su dodici pagine di esempio:

ga4 <- data.frame(
  sessioni      = c(120, 340, 210, 560, 430, 780, 650, 290, 510, 880, 360, 720),
  durata_media  = c(31,  55,  48,  44,  58,  63,  71,  52,  46,  68,  60,  64),
  conversioni   = c(3,   8,   4,   21,  11,  24,  19,  9,   17,  29,  7,   22),
  freq_rimbalzo = c(70,  61,  66,  44,  57,  41,  46,  59,  52,  38,  63,  45)
)

round(cor(ga4), 2)
#               sessioni durata_media conversioni freq_rimbalzo
# sessioni          1.00         0.73        0.98         -0.97
# durata_media      0.73         1.00        0.58         -0.62
# conversioni       0.98         0.58        1.00         -0.99
# freq_rimbalzo    -0.97        -0.62       -0.99          1.00

Si legge come una tabella a doppia entrata: sulla diagonale ci sono tutti 1 (ogni variabile è perfettamente correlata con sé stessa), e la matrice è simmetrica perché la correlazione di x con y è la stessa di y con x. Come si vede, sessioni e conversioni viaggiano quasi all’unisono (0,98: più traffico, più conversioni — niente di sorprendente), la frequenza di rimbalzo è correlata negativamente con tutto il resto, mentre la durata media si associa alle conversioni molto meno di quanto l’intuizione suggerirebbe (0,58). Una matrice del genere è una mappa di partenza preziosa per decidere dove guardare. È utile visualizzarla come heatmap (con pacchetti come corrplot), dove l’intensità del colore rende immediato cogliere i legami forti.

Un avvertimento, però, va messo qui in grassetto perché è il cuore della questione: una matrice di correlazione non è una mappa causale. Ci dice quali numeri si muovono insieme, non quale muove quale, né se a muoverli sia un terzo fattore che non abbiamo nemmeno in tabella.

Correlazione non è causazione

È la frase più ripetuta della statistica, e la più disattesa nei fatti. Vale la pena vedere dove inciampa, perché in SEO l’inciampo è quotidiano. Prendiamo l’osservazione classica: gli articoli più lunghi si posizionano meglio. Misuriamo l’associazione tra lunghezza del contenuto e un punteggio di ranking (più alto = meglio piazzato):

lung       <- c(620, 850, 1100, 1300, 1500, 1800, 2100, 2400, 2800, 3200)
rank_score <- c(3,   8,   6,    11,   9,    7,    14,   10,   16,   15)

cor(lung, rank_score)
# [1] 0.842

Un bel 0,842: la correlazione c’è, ed è robusta. La tentazione di concludere “allungo gli articoli e salgo in classifica” è fortissima — e quasi sempre sbagliata. Davanti a una correlazione, prima di parlare di causa, dobbiamo metterci sul tavolo almeno tre spiegazioni alternative. Potrebbe essere una causa diretta (la lunghezza aiuta davvero il ranking). Potrebbe essere una causa inversa (le pagine che già rankano bene ricevono più cure e vengono ampliate nel tempo). Oppure — il caso più frequente e più insidioso — potrebbe esserci un fattore confondente che muove entrambe: l’autorevolezza del sito. Un dominio autorevole tende sia a produrre contenuti più approfonditi (quindi più lunghi) sia a posizionarsi meglio (per ragioni che con la lunghezza non c’entrano). La lunghezza e il ranking salgono insieme non perché l’una causi l’altro, ma perché un terzo elemento li traina entrambi.

Questo terzo elemento nascosto è la radice di alcuni degli errori più spettacolari nell’analisi dei dati: arriva persino a invertire il segno di una relazione quando i dati vengono aggregati nel modo sbagliato, il fenomeno che va sotto il nome di paradosso di Simpson. Stabilire un nesso causale è un mestiere a sé, che richiede esperimenti controllati o tecniche dedicate; la correlazione, da sola, non ci arriverà mai. Il suo compito è un altro, ed è prezioso: segnalarci le coppie di metriche che vale la pena indagare più a fondo.

Prova tu

Per fissare il meccanismo, ecco un esercizio con dati verosimili. Abbiamo, per dieci pagine, il numero di domini referral che le linkano e il loro traffico organico mensile, e vogliamo capire quanto i due si associno:

bl  <- c(5, 12, 8, 25, 18, 40, 33, 60, 52, 95)        # domini referral
org <- c(180, 240, 420, 510, 760, 690, 1250, 1100, 1900, 1650)  # sessioni organiche/mese

Il compito: calcolare sia il coefficiente di Pearson con cor(bl, org), sia quello di Spearman con cor(bl, org, method = "spearman"), e ragionare sul perché differiscono.

Per controllare i conti: Pearson vale 0,815 e Spearman 0,855. Sono entrambi alti e raccontano la stessa storia di fondo — più domini referral, più traffico — ma il fatto che Spearman sia un po’ più alto di Pearson ci dice qualcosa: la relazione è più monotòna che lineare, segno che oltre una certa soglia ogni link aggiuntivo porta meno traffico marginale di quanto la retta vorrebbe. E, naturalmente, nessuno dei due numeri ci autorizza a dire che comprare backlink farà salire il traffico: anche qui l’autorevolezza del sito potrebbe star muovendo le due cose insieme.


Con la correlazione abbiamo imparato a rispondere alla domanda se, e quanto, due metriche si associano — scegliendo di volta in volta Pearson, Spearman o Kendall a seconda della forma del legame. È il gradino indispensabile prima della domanda successiva, quella che chiunque analizzi dei dati finisce per porsi: data un’associazione, posso usare una variabile per prevedere l’altra, e tracciare la retta che le lega? Da qui in poi non misuriamo più soltanto la forza di un legame, ma lo modelliamo: è il territorio della regressione lineare, dove quel coefficiente r che abbiamo appena conosciuto torna protagonista, questa volta al servizio della previsione.


Per approfondire

Per i fondamenti di correlazione e regressione spiegati con rigore ma senza inutili tecnicismi, il manuale italiano che tengo più volentieri a portata di mano è Statistica di Newbold, Carlson e Thorne: i capitoli sull’associazione tra variabili coprono Pearson, Spearman e le insidie dell’interpretazione causale con la chiarezza che serve a chi parte dalle applicazioni.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *