Esistono due vettori booleani, che contengono solo 0 e 1. Se calcolo la correlazione di Pearson o Spearman, sono significativi o ragionevoli?
Esistono due vettori booleani, che contengono solo 0 e 1. Se calcolo la correlazione di Pearson o Spearman, sono significativi o ragionevoli?
Risposte:
La correlazione Pearson e Spearman sono definiti finchè avete alcune s e alcuni s per entrambi due variabili binarie, dire ed . È facile avere una buona idea qualitativa di cosa significano pensando a un diagramma a dispersione delle due variabili. Chiaramente, ci sono solo quattro possibilità (in modo che il jitter di scuotere punti identici a parte per la visualizzazione sia una buona idea). Ad esempio, in qualsiasi situazione in cui i due vettori sono identici, soggetti ad avere alcuni 0 e alcuni 1 in ciascuno, quindi per definizione e la correlazione è necessariamente . Allo stesso modo, è possibile che e quindi la correlazione sia .
Esistono metriche di somiglianza specializzate per i vettori binari, come:
eccetera.
Per i dettagli, vedere qui .
Non consiglierei di usare il coefficiente di correlazione di Pearson per i dati binari, vedere il seguente contro esempio:
set.seed(10)
a = rbinom(n=100, size=1, prob=0.9)
b = rbinom(n=100, size=1, prob=0.9)
nella maggior parte dei casi entrambi danno un 1
table(a,b)
> table(a,b)
b
a 0 1
0 0 3
1 9 88
ma la correlazione non mostra questo
cor(a, b, method="pearson")
> cor(a, b, method="pearson")
[1] -0.05530639
Una misura di somiglianza binaria come l' indice di Jaccard mostra tuttavia un'associazione molto più elevata:
install.packages("clusteval")
library('clusteval')
cluster_similarity(a,b, similarity="jaccard", method="independence")
> cluster_similarity(a,b, similarity="jaccard", method="independence")
[1] 0.7854966
Perchè è questo? Vedi qui la semplice regressione bivariata
plot(jitter(a, factor = .25), jitter(b, factor = .25), xlab="a", ylab="b", pch=15, col="blue", ylim=c(-0.05,1.05), xlim=c(-0.05,1.05))
abline(lm(a~b), lwd=2, col="blue")
text(.5,.9,expression(paste(rho, " = -0.055")))
trama sotto (piccolo rumore aggiunto per rendere più chiaro il numero di punti)