Archivio tag: Correlazione

Visualizzare la relazione fra due variabili likert

Lavorando nel campo della psicologia, spesso mi trovo ad avere a che fare con variabili che derivano da riposte a questionari fornite utilizzando scale di tipo Likert. Si tratta di variabili che possono assumere un numero molto limitato di modalità, comunemente da tre a cinque. Quando le categorie di riposta sono almeno cinque, spesso queste variabili vengono considerate come se fossero continue e di conseguenza vengono analizzate usando indicatori e modelli statistici pensati appunto per variabili continue.

Con questo post non voglio entrare nel merito della correttezza di queste scelte (condivisibili o meno, a seconda dei casi), ma concentrarmi sul modo di utilizzare al meglio gli strumenti statistici, principalmente i grafici.

Di seguito viene costruito il data frame likert che contiene due variabili: item1 e item2, che riportano le risposte (espresse su scala Likert a cinque punti) di sessanta ipotetiche persone a due ipotetiche domande di un ipotetico questionario.

likert <- data.frame(
    item1 = c(5,3,5,5,4,1,2,3,3,5,5,2,1,3,3,3,4,2,4,1,
              3,4,4,5,3,4,5,2,1,4,3,2,3,2,4,5,5,2,5,3,4,
              4,3,2,1,1,1,5,2,3,1,1,2,2,2,3,4,2,4,3),
    item2 = c(5,2,5,4,4,1,3,3,1,3,3,2,1,3,1,3,1,2,4,1,
              3,4,2,4,4,5,5,2,1,1,1,4,4,2,4,4,5,2,5,4,5,
              3,3,1,2,2,1,5,5,5,3,4,1,1,3,2,4,2,3,2)
)
&#91;/code&#93;

Per studiare la relazione tra due variabili di questo tipo, quello che comunemente viene fatto è calcolare l'indice di correlazione lineare. Possiamo usare l'indice di Pearson oppure l'indice di Spearman, basato sui ranghi.

Attraverso il comando <b>cor</b> di R possiamo calcolare entrambi gli indici; se non viene specificato nulla nell'argomento <i>method</i>, verrà calcolata la correlazione di Pearson:

[code language="R"]
> with(likert, cor(item1, item2))
[1] 0.5901713

Se invece vogliamo calcolare l'indice di Spearman, dobbiamo esplicitare questa richiesta nell'argomento method:

> with(likert, cor(item1, item2, method="spearman"))
[1] 0.5864863

Entrambi gli indici evidenziano un'ottima correlazione fra le due variabili (“ottima” almeno per gli standard in psicologia): si sfiora lo 0.6, che è un valore abbastanza elevato.

Quello che - ahimè - non fa quasi nessuno, è visualizzare la relazione tra le due variabili. I grafici hanno sempre tanto da raccontare e talvolta è proprio dalle visualizzazioni che emergono gli aspetti più interessanti. Proviamo quindi a creare uno scatterplot per visualizzare la relazione fra item1 e item2. Utilizziamo il comando plot, aumentando la dimensione dei punti sfruttando l'argomento cex:

with(likert, plot(item1, item2, cex=2))

Scatter-plot fra item1 e item2

Beh, che ve ne pare? Si tratta di una buona visualizzazione? Secondo me, no.

A vedere questo grafico a me sorgono molte perplessità. Abbiamo appena detto che la relazione lineare tra le due variabili è buona, ma dal grafico proprio non si direbbe: i punti sono sparpagliati un po' ovunque e le due variabili sembrano tutto fuorché correlate.

Il problema di questo grafico è che le variabili possono assumere pochi valori (da 1 a 5), per cui moltissime risposte si sovrappongono. Ognuno di quei pallini in realtà ha una densità, perché su ognuno di essi si sovrappongono le risposte di più individui. Osservando bene l'immagine, infatti, possiamo notare che ci sono pallini il cui contorno è più scuro di altri; ebbene, nelle coordinate più scure si concentrano le risposte di più persone.

Il numero di osservazioni presente in ogni coordinata è un dato fondamentale per comprendere la relazione tra due variabili che assumono un numero ridotto di modalità, ma nell'immagine qui sopra questa informazione non è ben rappresentata.

La “densità” può essere calcolata semplicemente contando il numero di risposte che occorrono per ognuno degli incroci dei valori delle due variabili, ovvero costruendo una tabella di frequenza a doppia entrata:

> tab <- with(likert, table(item1, item2))
> tab
     item2
item1 1 2 3 4 5
    1 5 2 1 1 0
    2 3 6 2 1 1
    3 3 3 5 3 1
    4 2 1 2 5 2
    5 0 0 2 3 6

Osservando la tabella qui sopra possiamo notare come le frequenze maggiori siano collocate sulla diagonale, fenomeno che supporta la presenza di una relazione lineare e che giustifica valori di correlazione così elevati. Ma come fare per considerare questa informazione nel grafico?

Adesso vi proporrò due alternative; entrambe richiedono che la tabella di frequenza che abbiamo appena costruito venga convertita in un oggetto di tipo data.frame:

> tab <- as.data.frame(tab)
> head(tab)
  item1 item2 Freq
1     1     1    5
2     2     1    3
3     3     1    3
4     4     1    2
5     5     1    0
6     1     2    2

Grafico a bolle (bubble chart)


Quello che manca al grafico costruito poco sopra è l'informazione sul numero di osservazioni in ogni coordinata. Il modo più semplice di considerare quella che è a tutti gli effetti una terza variabile è fare in modo che il diametro di ogni punto dipenda dalla frequenza. Verrà creato così un grafico nel quale saranno presenti punti più grandi e punti più piccoli: più grande sarà il punto, maggiore sarà la concentrazione di dati.

Per realizzare questo grafico possiamo usare il comando symbols, specificando nell'argomento inches un'unità di misura per calibrare la dimensione dei punti.

with(tab, symbols(item1, item2, Freq, inches=0.6))

Bubble-plot fra item1 e item2

Il risultato conferma che la densità è maggiore sulla diagonale e va diminuendo con l'allontanarsi da questa. I dati quindi non sono sparpagliati in maniera casuale come poteva sembrare nel primo grafico, ma la relazione fra item1 e item2 segue un andamento ben preciso (nello specifico lineare).

Grafico a mattonelle (tile plot)


Un altro tipo di grafico che ci viene in aiuto è il tile plot. In questo tipo di visualizzazione, i dati sono rappresentati attraverso delle mattonelle che vengono colorate a seconda del valore assunto da una terza variabile. Per costruire il tileplot dobbiamo installare e attivare il pacchetto ggplot2 (del quale abbiamo già parlato).

Allo strato di base costruito con il comando ggplot dobbiamo aggiungere un livello creato con geom_tile e un gradiente di colore con scale_fill_gradient; infine, possiamo specificare un tema (io ho scelto theme_bw):

library(ggplot2)
ggplot(data=tab, aes(x=item1, y=item2, fill=Freq)) +
    geom_tile(colour="white") +
    scale_fill_gradient(low="white", high="red3") +
    theme_bw()

Tile-plot fra item1 e item2

Il grafico a mattonelle è forse quello più accattivante, ma probabilmente anche il più complicato da costruire, visto che richiede l'uso di ggplot2.

E voi, quali soluzioni prediligete in questi casi?

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.