Archivio tag: Correlazione tetracorica

Correlazione tetracorica e numerosità campionaria

In due precedenti articoli, abbiamo visto come utilizzare la correlazione tetracorica per misurare l’associazione tra due variabili dicotomiche ordinali (qui), e abbiamo confrontato questo indice con la correlazione di Pearson (qui). Rispetto all’indice di Pearson, la correlazione tetracorica non sembra essere influenzata dalla “difficoltà degli item”, ovvero dalla probabilità di comparsa delle due modalità che le variabili possono assumere. Infatti, quando le due variabili sotto esame differiscono molto nella probabilità di comparsa delle due categorie, l’indice di Pearson tende a sottostimare gravemente l’entità della correlazione, più di quanto già non accada nel caso in cui tale probabilità sia analoga.

Per studiare la performance della correlazione tetracorica, ne avevo valutato il comportamento impostando uno studio di simulazione. Nelle simulazioni avevo considerato variabili con 500 osservazioni ciascuna: la funzione di R che avevo adottato per stimare coefficiente di correlazione tetracorica si avvale infatti del criterio della massima verosimiglianza, il quale necessita di dimensioni campionarie abbastanza elevate.

La numerosità campionaria utilizzata nella precedente simulazione appare però decisamente irrealistica in molti contesti di ricerca. Ho quindi ripetuto la stessa simulazione alterando la numerosità campionaria, che è stata ridotta a 50 unit&agrave (il codice R utilizzato è riportato alla fine del post).

Fra i vari casi che avevo esaminato precedentemente, ora ne ho considerati solo due: un caso con item di uguale difficoltà, in cui la probabilità di successo è pari a P = 0.50 per entrambe le variabili, e un caso in cui i due item presentano difficoltà diverse, con una probabilità di successo pari a P = 0.75 per la prima e P = 0.25 per la seconda. I risultati sono riportati nella figura sottostante; per i dettagli su come leggere la figura si rimanda al post precedente.

Correlazione tetracorica vs. indice di Pearson

Quando la probabilità di comparsa delle due modalità è omogenea fra le variabili (grafico di sinistra), i risultati sono analoghi alla simulazione descritta nel precedente articolo, in cui la numerosità campionaria era elevata.

Diversamente, quando le due variabili presentano “difficoltà” opposte (grafico di destra), anche la correlazione tetracorica inizia a evidenziare una tendenza a sottostimare le correlazioni più elevate. L’entità della sottostima non è grave come per l’indice di Pearson, ma comunque non è trascurabile. In alcuni casi, la correlazione tetracorica presenta una tendenza a stimare con valori negativi delle correlazioni che in realtà sono pressocchè nulle, e questi valori in alcuni casi si avvicinano anche a -0.5: si tratta di stime anomale la cui origine andrebbe approfondita.

Quindi, quando si lavora con numerosità campionarie contenute, anche con la correlazione tetracorica si può presentare un problema di sottostima dell’entità della relazione tra le variabili; tutto sommato, comunque, quest’indice sembra reggere meglio rispetto all’indice di Pearson.


library(psych)
# Settings
n <- 50 hitProb <- c(0.5,0.5) # c(0.75,0.25) iter <- 1000 # Simulation set.seed(27) z1 <- qnorm(1-hitProb[1]) z2 <- qnorm(1-hitProb[2]) index <- matrix(NA,nrow=iter,ncol=3) colnames(index) <- c("true","pearson","tetra") for(i in 1:iter) { s <- runif(1,0.5,4.5) x1 <- rnorm(n) x2 <- x1+rnorm(n,sd=s) x1z <- (x1-mean(x1))/sd(x1) x2z <- (x2-mean(x2))/sd(x2) x1d <- as.numeric(x1z > z1)
x2d <- as.numeric(x2z > z2)
index[i,1] <- cor(x1z,x2z) index[i,2] <- cor(x1d,x2d) index[i,3] <- tetrachoric(cbind(x1d,x2d))$rho[2,1] } # Graph lim <- c(-0.6,1) col <- c(pearson="#af0000",tetrac="#0c5d87") plot(index[,1],index[,2],xlim=lim,ylim=lim,col=col[1], xlab="True correlation",ylab="Observed correlation") points(index[,1],index[,3], col=col[2]) lines(lowess(index[,1],index[,2]),col=col[1],lwd=2) lines(lowess(index[,1],index[,3]),col=col[2],lwd=2) abline(0,1,lty=2) legend("topleft", c("Pearson (0/1)","Tetrachoric"),col=col,lty=1,lwd=2,bty="n") [/code]

Correlazione tetracorica o indice di Pearson?

In un recente post abbiamo visto come misurare l’associazione tra due variabili dicotomiche utilizzando la correlazione tetracorica. Nonostante questo indice sia stato appositamente creato per verificare l’associazione tra due variabili dicotomiche, talvolta capita di vedere analisi statistiche che anche in questi casi fanno uso dell’indice di Pearson, la cui applicazione naturale è però su variabili continue. Si tratta forse di un errore? Non esattamente.

In realtà, utilizzare l’indice di Pearson su variabili dicotomiche non è poi così sbagliato. Difatti, l’indice di Pearson calcolato su variabili dicotomiche corrisponde al coefficiente di correlazione Phi, che, come la correlazione tetracorica, valuta l’associazione tra due variabili dicotomiche. La differenza tra l’indice Phi e la correlazione tetracorica è che Phi non assume che la dicotomia dei valori derivi dalla discretizzazione di una variabile che per natura sarebbe continua. Praticamente, a differenza della correlazione tetracorica, l’indice Phi tratta le variabili come dicotomiche “vere” e non come surrogato di una variabile continua.

La differenza tra indice di Pearson calcolato su variabili dicotomiche e correlazione tetracorica potrebbe sembrare un affare più speculativo che di sostanza, ma in realtà non è così: la performance nella stima della correlazione dei due indici è effettivamente diversa. Per capire meglio la differenza tra i due tipi di correlazione, ho impostato uno studio di simulazione prendendo spunto da una discussione apparsa qualche anno fa su Cross-Validated, ampliando un po’ il discorso.

Per confrontare la performance dei due indici ho utilizzato R per generare 1000 campioni di dati, sfruttando le funzioni per la generazione di numeri pseudocasuali. Per 1000 volte ho chiesto a R di generare due variabili casuali distribuite normalmente, x1 e x2, con 500 osservazioni ciascuna. Quindi, x1 e x2 sono state trasformate in punti z e dicotomizzate (come visto in questo post). Per ognuna delle 1000 iterazioni, ho calcolato:

  • L’indice di Pearson tra x1 e x2, che è la reale correlazione tra le due variabili.
  • L’indice di Pearson e la correlazione tetracorica tra le due variabili dicotomizzate; questi due indici costituiscono delle stime della reale correlazione tra x1 e x2.

Al termine della simulazione, ho creato un grafico dove ho posto in ascissa le 1000 correlazioni reali e in ordinata le rispettive stime della correlazione, contrassegnando con dei colori diversi le correlazioni di Pearson e quelle tetracoriche. La diagonale del grafico rappresenta la stima perfetta del valore di correlazione, e idealmente i valori dovrebbero disporsi su questa retta.

Ipotizzando che le due variabili siano degli item di un test psicometrico, ho impostato due possibili condizioni simulative. Nel primo caso, ho fatto in modo che il processo di dicotomizzazione portasse a due item di uguale difficoltà, facendo in modo che la probabilità di comparsa della categoria 1 fosse uguale per entrambe le variabili. Diversamente, nel secondo caso ho creato due item di difficoltà diversa, facendo in modo che la probabilità di comparsa dei valore 1 fosse diversa fra le due variabili.

Una nota: in questo piccolo studio di simulazione non sono state considerate correlazioni negative ma solo positive; si suppone comunque che i risultati possano essere estesi anche al caso di correlazioni negative, anche se per completezza il lavoro dovrebbe essere esteso.

Per quanto riguarda la condizione con item di pari difficoltà, in una simulazione ho utilizzato variabili con categorie equiprobabili (P(x=1) = 0.50), mentre in un’altra simulazione ho utilizzato variabili che rappresentavano degli item “difficili”, dove cioè è più probabile rispondere con 0 invece che con 1 (P(x=1) = 0.25). I risultati sono visualizzati nelle due figure sottostanti: a sinistra è riportato il grafico per il caso in cui gli item presentano categorie equiprobabili, mentre a destra è riportato il grafico per il caso con item “difficili”. I puntini rossi identificano le stime della correlazione effettuate con l’indice di Pearson, mentre i puntini azzurri le stime effettuate utilizzando la correlazione tetracorica. I punti sono stati interpolati tramite una funzione di lisciamento.

Correlazione tetracorica vs correlazione di Pearson)

In entrambi i casi, la stima effettuata dalla correlazione tetracorica appare decisamente più affidabile rispetto alla correlazione di Pearson, infattti queste stime si posizionano nei pressi della diagonale, che costituisce lo standard ideale. Diversamente, l’indice di Pearson tende a sottostimare l’entità della correlazione, e questa sottostima si accentua al crescere della correlazione: più è forte l’associazione tra le due variabili, più tale associazione viene sottostimata. I due grafici appaiono molto simili: apparentemente non c’è una grossa differenza tra le due condizioni.

Anche per il caso di item con difficoltà diverse, sono state considerate due possibili condizioni. In una prima simulazione ho ipotizzato una differenza di difficoltà fra i due item relativamente bassa, con una probabilità di successo per x1 pari a 0.50 e per x2 pari a 0.25. In un secondo caso ho esasperato tale differenza, portando la probabilità di successo per x1 a 0.75 e tenendo costante a 0.25 tale probabilità per x2. I risultati sono visualizzati nelle figure sottostanti.

Correlazione tetracorica vs correlazione di Pearson)

In entrambi i casi, si osserva che la correlazione tetracorica appare affidabile anche nel caso in cui gli item presentano difficoltà diverse, mentre l’indice di Pearson tende a sottostimare clamorosamente la correlazione, più di quanto già non succedeva con item di uguale difficoltà. Non solo: all’aumentare della distanza tra le difficoltà degli item (grafico di destra), la stima effettuata dall’indice di Pearson peggiora. Si tenga conto che correlazioni dallo 0.4 in su vengono sistematicamente sottostimate.

In conclusione, possiamo dire che l’indice di Pearson tende a sottostimare la reale entità della correlazione, problema che invece non si presenta se si utilizza la correlazione tetracorica. Questo è vero soprattutto se una delle due variabili presenta un livello di difficoltà diverso rispetto all’altra. La criticità della correlazione di Pearson calcolata su variabili dicotomiche si manifesta in maniera molto marcata se i due item presentano difficoltà diametralmente opposte, ovvero se le categorie di risposta delle due variabili hanno probabilità di occorrenza molto diverse l’una dall’altra.

L’uso della correlazione di Pearson su variabili dicotomiche resta comunque valida per dati che rappresentano una reale dicotomia tra due categorie e non una semplice discretizzazione di variabili continue.

Questi risultati hanno una ricaduta importante anche su tutte le tecniche di analisi dei dati che si basano sull’uso di matrici di correlazione, come l’analisi in componenti principali o l’analisi fattoriale. Tali tecniche vengono applicate con lo scopo di raggruppare delle variabili, spesso item di un questionario, sulla base della loro correlazione. Dato un gruppo di item dicotomici, che si ipotizza derivino dalla discretizzazione di variabili in realtà continue, utilizzando l’indice di Pearson si rischierebbe di sottostimare l’importanza di certe relazioni. La correlazione tra due item magari molto legati, ma di difficoltà molto diversa, sarebbe misconosciuta.

Intervistato sull’argomento, il prof. William Revelle – noto docente di psicometria nonché autore della libraria per R psych – spiega che l’uso inopportuno della correlazione di Pearson potrebbe addirittura condurre alla paradossale situazione in cui un’analisi fattoriale individua delle dimensioni che raggruppano gli item non sulla base di reali correlazioni, ma sulla base della loro difficoltà. Ovvero, se il sottostante processo che ha generato i dati è unidimensionale, ma la sua discretizzazione produce due categorie che differiscono molto nella loro frequenza di comparsa, allora i risultati di un’analisi fattoriale condotta sulla matrice di correlazioni di Pearson suggeriranno che gli item più facili costituiscono un fattore e quelli più difficili un altro fattore, e questi fattori saranno correlati. Diversamente, rispetto all’indice di Pearson, la correlazione tetracorica non è influenzata dalla difficoltà degli item. È quindi necessario riflettere molto attentamente sulla natura delle variabili in gioco facendo in modo che siano fondate riflessioni teoriche a guidare l’analisi.

Di seguito è riportato il codice R utilizzato per realizzare le simulazioni. Per manipolare i parametri della simulazione bisogna modificare n (la numerosità campionaria), hitProb (la probabilità di successo rispettivamente di x1 e x2) e iter (il numero di iterazioni).


library(psych)
# Settings
n <- 500 hitProb <- c(0.75,0.25) iter <- 1000 # Simulation set.seed(27) z1 <- qnorm(1-hitProb[1]) z2 <- qnorm(1-hitProb[2]) index <- matrix(NA,nrow=iter,ncol=3) colnames(index) <- c("true","pearson","tetra") for(i in 1:iter) { s <- runif(1,0.5,4.5) x1 <- rnorm(n) x2 <- x1+rnorm(n,sd=s) x1z <- (x1-mean(x1))/sd(x1) x2z <- (x2-mean(x2))/sd(x2) x1d <- as.numeric(x1z > z1)
x2d <- as.numeric(x2z > z2)
index[i,1] <- cor(x1z,x2z) index[i,2] <- cor(x1d,x2d) index[i,3] <- tetrachoric(cbind(x1d,x2d))$rho[2,1] } # Graph lim <- c(-0.15,1) col <- c(pearson="#af0000",tetrac="#0c5d87") plot(index[,1],index[,2],xlim=lim,ylim=lim,col=col[1], xlab="True correlation",ylab="Observed correlation") points(index[,1],index[,3], col=col[2]) lines(lowess(index[,1],index[,2]),col=col[1],lwd=2) lines(lowess(index[,1],index[,3]),col=col[2],lwd=2) abline(0,1,lty=2) legend("topleft", c("Pearson (0/1)","Tetrachoric"),col=col,lty=1,lwd=2,bty="n") [/code]

Misurare l’associazione tra variabili dicotomiche

Negli ultimi mesi, in diverse occasioni mi sono trovato a utilizzare la correlazione tetracorica per misurare la relazione lineare tra due variabili dicotomiche. A seguito di alcune interessanti questioni sorte sul forum di Statistica@Ning, ho deciso di approfondire e di scrivere una serie di post sull’argomento, di cui questo è il primo. Un ringraziamento particolare va a Piergiorgio Mossi dell’Università del Salento per avermi messo a disposizione del materiale altrimenti irreperibile, e al prof. William Revelle della Northwestern University per alcune preziosissime indicazioni.

Il coefficiente di correlazione di Pearson misura l’intensità della relazione lineare tra due variabili quantitative, misurate almeno su scala a intervalli equivalenti. Ci sono però casi in cui le due variabili sono misurate su scale diverse da quelle a intervalli o a rapporti; in questo post ci occuperemo del caso in cui entrambe le variabili per le quali si vuole misurare l’intensità della relazione sono dicotomiche ordinali.

Nel caso di variabili ordinali a due categorie, spesso viene utilizzato il coefficiente di correlazione tetracorica. Tale coefficiente stima la correlazione tra le due variabili assumendo che la loro natura dicotomica derivi dalla discretizzazione di un processo in realtà continuo. Ciò significa che il fenomeno sottoposto a misurazione sarebbe per sua natura misurato come una variabile continua, ma per esigenze di misurazione questa è stata ridotta a soli due valori, cioè dicotomizzata.

Questo caso si presenta molto spesso nei questionari psicometrici, dove si va a quantificare un qualche tratto latente non misurabile in maniera diretta, oppure nei questionari per la rilevazione delle opinioni e della soddisfazione dei clienti. Si potrebbe assumere che la soddisfazione sia un fenomeno che varia da uno zero assoluto (insoddisfazione totale) a una massima soddisfazione possibile, e tra questi due estremi del continuum il fenomeno possa assumere un numero infinito di valori. La soddisfazione, tuttavia, potrebbe essere misurata attraverso un quesito che chiede di esprimere una valutazione su due sole categorie come “non sono soddisfatto” e “sono soddisfatto”. Analogo discorso potrebbe essere fatto nella valutazione di una performance, dove si suppone che una certa abilità sia costituita da un continuum che viene discretizzato in due categorie come “sbagliato” e “giusto”.

Un nodo fondamentale del processo che porta alla discretizzazione di una variabile continua è la soglia che determina il “taglio” tra le due categorie, cioè il punto di passaggio tra la categoria inferiore (che indicheremo con 0) e quella superiore (che indicheremo con 1). Per dicotomizzare una variabile, infatti, dovremo scegliere un valore soglia sotto il quale tutti i valori saranno ricondotti alla categoria 0 e sopra il quale tutti i valori saranno ricondotti alla categoria 1.

I due grafici nella figura sottostante rappresentano due possibili esempi di dicotomizzazione di una variabile che segue una distribuzione normale standardizzata; se le aree bianche indicano la parte della curva che sottende i valori che saranno categorizzati come 0, le aree grigie indicano la parte della curva che sottende i valori che saranno categorizzati come 1.

Dicotomizzazione

Scegliendo come soglia il valore z = 0, otterremo un perfetto equilibrio tra le due categorie, perché sia 0 che 1 avranno il 50% di probabilità di presentarsi. È questo il caso del grafico di sinistra. Diversamente, valori soglia inferiori o superiori allo zero porterebbero allo sbilanciamento verso l’una oppure l’altra categoria. Nel grafico di destra si è scelto come soglia il valore z = -0.67: in questo modo, la probabilità di occorrenza della categoria 0 sarà pari al 25%, mentre la probabilità di occorrenza della categoria 1 sarà del 75%.

La probabilità che un individuo risponda a un quesito utilizzando la categoria con rango più elevato, nel nostro caso 1, è comunemente detta probabilità di successo, che nei questionari psicometrici rappresenta la difficoltà dell’item: al diminuire di tale probabilità, diminuisce la probabilità di ottenere 1 piuttosto che 0, per cui l’item diventa più “difficile”. Il processo di dicotomizzazione proposto nel grafico di sinistra produrrà un item più difficile rispetto al processo descritto nel grafico di destra; infatti, se nel primo caso la probabilità di rispondere utilizzando la categoria 1 è del 50%, nel secondo caso tale probabilità è pari al 75%.

Ora vedremo come stimare con R la relazione lineare tra due variabili utilizzando l’indice di correlazione tetracorica. Partendo da due variabili numeriche continue, vedremo come dicotomizzarle e come calcolare la correlazione tetracorica fra le due.

Prendiamo due variabili, x1 e x2:

x1 <- c(11.6,12.7,8.4,12.3,9.1,9.7,9.6,9.1,12.4,10.0,
        6.0,11.3,5.6,9.7,7.3,12.7,5.6,10.5,7.7,11.5,
        8.7,9.9,12.1,11.7,12.6,7.7,7.2,10.1,9.6,8.6)
x2 <- c(11.8,10.5,7.1,8.4,7.3,9.2,11.6,10.1,11.8,12.8,
        7.7,13.6,7.9,8.1,7.4,12.0,4.9,9.0,10.9,8.3,
        8.7,7.8,12.4,11.2,13.7,9.3,7.1,3.9,6.3,6.6)
&#91;/code&#93;
<p style="text-align: justify;">L&rsquo;indice di Pearson, calcolato con la funzione <b>cor</b>, misura una correlazione tra x1 e x2 pari a 0.59. Per dicotomizzare le variabili &egrave; necessario prima di tutto standardizzarle, trasformandole in punti <i>z</i>:</p>
[code language="r"]
z1 <- (x1-mean(x1)) / sd(x1)
z2 <- (x2-mean(x2)) / sd(x2)
&#91;/code&#93;
<p style="text-align: justify;">A questo punto, dobbiamo scegliere la soglia che determina il passaggio da una categoria all&rsquo;altra, ovvero un punto <i>z</i> che costituisca un cut-off sotto il quale tutti i valori saranno convertiti in 0 e sopra il quale tutti i valori saranno convertiti in 1. Nella distribuzione normale standardizzata, il valore <i>z</i> = 0 divide esattamente in due la distribuzione. Scegliamo quindi <i>z</i> = 0 come soglia e convertiamo di conseguenza tutti i punti <i>z</i> in due categorie. Per ogni variabile, tutti i valori che eccedono lo zero saranno trasformati in 1, altrimenti saranno convertiti in 0.</p>
[code language="r"]
d1 <- as.numeric(z1 > 0)
d2 <- as.numeric(z2 > 0)

Utilizzando il comando table possiamo visualizzare le frequenze dei valori 0 e 1 per ogni variabile:

table(d1)
table(d2)

Dato che ogni variabile contiene 30 osservazioni, un perfetto bilanciamento tra le due categorie si rifletterebbe in una frequenza pari a 15 sia per 0 che per 1. Se per d1 le frequenze delle categorie sono molto simili (rispettivamente 16 e 14), per d2 si nota un certo sbilanciamento, con la categoria 0 che presenta una frequenza pari a 17, mentre la categoria 1 presenta una frequenza pari a 13.

In R ci sono diversi pacchetti che permettono di calcolare la correlazione tetracorica. Uno di questi è psych, che fornisce la funzione tetrachoric: a partire da una matrice di variabili, questa funzione calcola la matrice di correlazione tetracorica. I seguenti comandi caricano la libreria psych, costruiscono una nuova matrice le cui colonne sono le due variabili d1 e d2 e, infine, calcolano la correlazione tetracorica:


library(psych)
d <- cbind(d1,d2) tetrachoric(d) [/code]

Come output otterremo la matrice di correlazione; 0.58 è il coefficiente di correlazione tetracorica stimato, effettivamente molto simile all’originario indice di Pearson calcolato sulle originali variabili continue.

Call: tetrachoric(x = d)
tetrachoric correlation 
   d1   d2  
d1 1.00     
d2 0.58 1.00

 with tau of 
   d1    d2 
0.084 0.168

La funzione stima anche le soglie delle due variabili, che noi sappiamo essere zero in entrambi i casi. I valori stimati sono effettivamente molto vicini a zero, soprattutto per d1.