有两个布尔向量,仅包含0和1。如果我计算皮尔森或斯皮尔曼相关性,它们是有意义的还是合理的?
有两个布尔向量,仅包含0和1。如果我计算皮尔森或斯皮尔曼相关性,它们是有意义的还是合理的?
Answers:
只要两个二进制变量y和x分别为 s和 s,就可以定义Pearson和Spearman相关性。通过考虑两个变量的散点图,很容易就它们的含义获得很好的定性认识。显然,只有四种可能性(0 ,0 ),(0 ,1 ),(1 ,0 ),(1 ,1 )(因此,抖动以将相同的点分开以进行可视化是一个好主意)。例如,在两个向量相同的任何情况下,每个向量都具有一些0和1,则根据定义且相关性必然为。类似地,可能的是,,然后将相关性。
对于此设置,非线性的单调关系没有范围。当按照通常的中间等级约定采用 s和 s的等级时,等级只是原始 s和 s 的线性变换,并且Spearman相关性必然与Pearson相关性相同。因此,没有理由在这里或根本没有考虑Spearman相关性。
对于涉及 s和 s的某些问题,例如在时间或空间二元过程的研究中,相关性自然会出现。总体而言,将有更好的方法来考虑此类数据,这在很大程度上取决于此类研究的主要动机。例如,相关性很有意义的事实并不意味着线性回归是模拟二进制响应的好方法。如果二进制变量之一是响应,那么大多数统计人员将从考虑logit模型开始。
我不建议将Pearson相关系数用于二进制数据,请参见以下反示例:
set.seed(10)
a = rbinom(n=100, size=1, prob=0.9)
b = rbinom(n=100, size=1, prob=0.9)
在大多数情况下,两者都给出1
table(a,b)
> table(a,b)
b
a 0 1
0 0 3
1 9 88
但是相关性没有显示
cor(a, b, method="pearson")
> cor(a, b, method="pearson")
[1] -0.05530639
但是,二进制相似性度量(例如Jaccard索引)显示出更高的关联性:
install.packages("clusteval")
library('clusteval')
cluster_similarity(a,b, similarity="jaccard", method="independence")
> cluster_similarity(a,b, similarity="jaccard", method="independence")
[1] 0.7854966
为什么是这样?看到这里简单的二元回归
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")))