Nel primo blocco di codice viene innanzitutto caricato con library(DAAG) il pacchetto che contiene nella tabella ais i dati utilizzati come esempio. Quindi all'oggetto mydata sono assegnate (<-) le variabili numeriche della tabella ais che si vogliono analizzare indicando le colonne che le contengono. Da notare che qui è possibile impiegare la forma ais[c(1:11)] in quanto le colonne sono contigue: in caso contrario è necessario specificare le colonne una per una nella forma ais[c(1,2,3,4,5,6,8,9,10,11)] nella quale, a titolo di esempio, è stata esclusa la colonna 7.
Per importare i vostri dati è sufficiente sostituire ais[c(1:11)] con il nome della vostra tabella e rcc, wcc, hc, hg e così via con i nomi delle variabili contenute nella tabella.
Nel secondo blocco di codice, dopo avere caricato il pacchetto Hmisc, viene eseguita l'analisi statistica sull'oggetto mydata impiegando la funzione rcorr() e specificando l'argomento type="pearson": in questo modo sono calcolati e riportati in forma di tabella i risultati per il coefficiente di correlazione lineare r di Pearson e i relativi valori di probabilità p.
Questi sono i valori di r calcolati
rcc wcc hc hg ferr bmi ssf pcBfat lbm ht wt
rcc 1.00 0.15 0.92 0.89 0.25 0.30 -0.40 -0.49 0.55 0.36 0.40
wcc 0.15 1.00 0.15 0.13 0.13 0.18 0.14 0.11 0.10 0.08 0.16
hc 0.92 0.15 1.00 0.95 0.26 0.32 -0.45 -0.53 0.58 0.37 0.42
hg 0.89 0.13 0.95 1.00 0.31 0.38 -0.44 -0.53 0.61 0.35 0.46
ferr 0.25 0.13 0.26 0.31 1.00 0.30 -0.11 -0.18 0.32 0.12 0.27
bmi 0.30 0.18 0.32 0.38 0.30 1.00 0.32 0.19 0.71 0.34 0.85
ssf -0.40 0.14 -0.45 -0.44 -0.11 0.32 1.00 0.96 -0.21 -0.07 0.15
pcBfat -0.49 0.11 -0.53 -0.53 -0.18 0.19 0.96 1.00 -0.36 -0.19 0.00
lbm 0.55 0.10 0.58 0.61 0.32 0.71 -0.21 -0.36 1.00 0.80 0.93
ht 0.36 0.08 0.37 0.35 0.12 0.34 -0.07 -0.19 0.80 1.00 0.78
wt 0.40 0.16 0.42 0.46 0.27 0.85 0.15 0.00 0.93 0.78 1.00
n= 202
e questi i rispettivi valori di p tabulati (i valori 0.0000 sono da intendere come p < 0.0001) che consentono di stabilirne la significatività. Potete impiegare come valore soglia il classico p = 0.05 ovvero essere un poco più esigenti (e prudenti) e porre la soglia per la significatività di r in corrispondenza del valore p = 0.01.
P
rcc wcc hc hg ferr bmi ssf pcBfat lbm ht wt
rcc 0.0367 0.0000 0.0000 0.0003 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
wcc 0.0367 0.0294 0.0559 0.0610 0.0118 0.0519 0.1262 0.1460 0.2773 0.0270
hc 0.0000 0.0294 0.0000 0.0002 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
hg 0.0000 0.0559 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
ferr 0.0003 0.0610 0.0002 0.0000 0.0000 0.1252 0.0090 0.0000 0.0805 0.0000
bmi 0.0000 0.0118 0.0000 0.0000 0.0000 0.0000 0.0075 0.0000 0.0000 0.0000
ssf 0.0000 0.0519 0.0000 0.0000 0.1252 0.0000 0.0000 0.0030 0.3136 0.0284
pcBfat 0.0000 0.1262 0.0000 0.0000 0.0090 0.0075 0.0000 0.0000 0.0074 0.9978
lbm 0.0000 0.1460 0.0000 0.0000 0.0000 0.0000 0.0030 0.0000 0.0000 0.0000
ht 0.0000 0.2773 0.0000 0.0000 0.0805 0.0000 0.3136 0.0074 0.0000 0.0000
wt 0.0000 0.0270 0.0000 0.0000 0.0000 0.0000 0.0284 0.9978 0.0000 0.0000
Con il terzo blocco di codice, dopo avere caricato il pacchetto car, con la funzione scatterplotMatrix() sono riportati in un'unica figura i grafici xy (grafici di dispersione) che incrociano tutte le variabili: questo consente una valutazione grafica preliminare dei dati, delle loro distribuzioni e delle loro possibili relazioni.
Sulla diagonale sono riportati i kernel density plot che consentono di valutare la distribuzione dei dati. In ciascun grafico xy è riportata a scopo orientativo la retta di regressione, la cui significatività peraltro deve essere valutata con gli altri strumenti che trovate più avanti.
L'argomento ~rcc+wcc+hc+hg+ferr+bmi+ssf+pcBfat+lbm+ht+wt qui specifica tutte le variabili del set di dati ais allo scopo di non perdere nessuna potenziale correlazione. Se avete importato i dati da un vostro file non dimenticate di modificare questo argomento, riportando dopo la tilde (~) l'elenco delle variabili che volete rappresentare e collegando l'una all'altra con il segno +.
Nel quarto blocco di codice, sono realizzati innanzitutto mediante le funzioni del pacchetto corrgram tre correlogrammi che riportano come riferimento in basso a sinistra sotto alla diagonale i grafici xy dei dati (lower.panel=panel.pts).
Il primo correlogramma riporta in alto a destra i grafici a torta (upper.panel=panel.pie) che rappresentano i valori di r (cor.method="pearson") con superficie colorata della torta e intensità del colore proporzionali al valore di r e con le gradazioni di blu e di rosso riferite rispettivamente a valori positivi e a valori negativi di r.
Il secondo correlogramma riporta in alto a destra i valori del coefficiente di correlazione lineare r di Pearson con i limiti di confidenza al 95% (upper.panel=panel.conf). Questi forniscono un test di significatività: il valore di r è significativo se i limiti di confidenza non includono lo 0 (zero), mentre non è significativo se includono lo 0.
Il terzo correlogramma riporta in alto a destra le ellissi (upper.panel=panel.ellipse) i cui assi maggiori delineano la tendenza delle due variabili a variare congiuntamente, con le regressioni loess che aiutano a valutare la linearità della loro relazione. Inoltre riporta sulla diagonale i kernel density plot delle variabili rappresentate (diag.panel=panel.density) già visti nel primo grafico, che ci consentono di evidenziare variabili distribuite in modo spiccatamente asimmetrico, come la variabile ferr, o che hanno una evidente distribuzione bimodale, come la variabile rcc: fatti dei quali si deve tenere conto.
Un quarto e ultimo correlogramma viene quindi realizzato mediante le funzioni del pacchetto gclus. Innanzitutto con la funzione corr() e con l'argomento method="pearson" sono calcolati e salvati (<-) in prs i valori del coefficiente di regressione lineare r di Pearson. Quindi sono predisposti i colori (mydata.cor) per evidenziare le variabili meglio correlate e viene stabilito l'ordine della variabili (mydata.o) in modo che le meglio correlate siano più vicine alla diagonale. Ordine e colore delle variabili sono quindi impiegati nella funzione cpairs() per organizzare i grafici all'interno del correlogramma, con i valori di r più significativi le relazioni lineari più evidenti disposti attorno alla diagonale.
Ai correlogrammi seguono i test di normalità (gaussianità). Viene mostrato il numero dei dati
> print(paste("numero dei dati =", n <- nrow(mydata)), quote=FALSE)
[1] numero dei dati = 202
viene calcolata la deviazione standard sa del coefficiente di asimmetria
> print(paste("deviazione standard del coefficiente di asimmetria (sa) =", sa <- sqrt(6/n)), quote=FALSE)
[1] deviazione standard del coefficiente di asimmetria (sa) = 0.172345496886428
e viene calcolata la deviazione standard sc del coefficiente di curtosi
> print(paste("deviazione standard del coefficiente di curtosi(sc) =", sc <- sqrt(24/n)), quote=FALSE)
[1] deviazione standard del coefficiente di curtosi(sc) = 0.344690993772856
Per ognuna della variabili con la funzione skewness() viene calcolato il coefficiente di asimmetria ca dal quale si ricava il rapporto ca/sa, sempre per ognuna delle variabili con la funzione kurtosis() viene calcolato il coefficiente di curtosi cc dal quale si ricava il rapporto cc/sc. Infine i valori calcolati sono assemblati mediante la funzione data.frame() in una tabella:
ca ca/sa cc cc/sc
rcc 0.4160046 2.41 0.662946166 1.92
wcc 0.8352336 4.85 1.449462762 4.21
hc 0.2752244 1.60 0.891229892 2.59
hg 0.1759351 1.02 0.008064219 0.02
ferr 1.2805839 7.43 1.420173468 4.12
bmi 0.9465155 5.49 2.183474974 6.33
ssf 1.1746685 6.82 1.365135223 3.96
pcBfat 0.7595480 4.41 -0.173299598 0.50
lbm 0.3585088 2.08 -0.240119844 0.70
ht -0.1993028 1.16 0.528116566 1.53
wt 0.2406053 1.40 0.385610737 1.12
Se il rapporto ca/sa è superiore a 2.6 la asimmetria è significativa. Se il rapporto cc/sc è superiore a 2.6 la curtosi è significativa. Questo modo semplificato di effettuare il test di significatività è stato adottato per alleggerire il codice dello script, ma nulla impedisce di approfondire al bisogno lo studio delle variabili cui si è maggiormente interessati con altri test che trovate nei post.
Non ho consigli pratici in merito ai criteri da impiegare per la scelta tra l'uno o l'altro dei due test non parametrici, a parte il fatto che rispetto al ρ di Spearman il coefficiente di correlazione τ di Kendall è più robusto (meno influenzato da valori estremi) ed è più conservativo (a parità di condizioni fornisce valori di p maggiori quindi significatività inferiori).
Lo script per l'analisi della correlazione basata sul coefficiente di correlazione per ranghi ρ (rho) di Spearman ricalca il precedente, copiatelo e incollatelo nella Console di R e premete ↵ Invio: