Есть два булевых вектора, которые содержат только 0 и 1. Если я вычислю корреляцию Пирсона или Спирмена, они значимы или разумны?
Есть два булевых вектора, которые содержат только 0 и 1. Если я вычислю корреляцию Пирсона или Спирмена, они значимы или разумны?
Ответы:
Соотношение Пирсона и Спирмена определяется при условии, что у вас есть с, а некоторые с для обеих двух двоичных переменных, скажем, и . Легко получить хорошее качественное представление о том, что они имеют в виду, подумав о точечной диаграмме двух переменных. Ясно, что существует только четыре варианта (так что дрожание для встряхивания одинаковых точек для визуализации является хорошей идеей). Например, в любой ситуации, когда два вектора идентичны, при условии, что в каждом есть несколько нулей и несколько единиц, то по определению и корреляция обязательно равна . Аналогично, возможно, что и тогда корреляция равна .
Для этой установки нет места для монотонных отношений, которые не являются линейными. При получении рангов с и с в соответствии с обычным соглашением среднего уровня ранги представляют собой просто линейное преобразование исходных с и с, и корреляция Спирмена обязательно идентична корреляции Пирсона. Следовательно, нет никакой причины рассматривать корреляцию Спирмена отдельно здесь или даже вообще.
Корреляции возникают естественным образом для некоторых задач, связанных с с и с, например, при исследовании бинарных процессов во времени или пространстве. В целом, однако, будут лучшие способы думать о таких данных, в значительной степени зависящих от основного мотива такого исследования. Например, тот факт, что корреляции имеют большое значение, не означает, что линейная регрессия является хорошим способом для моделирования бинарного отклика. Если одна из двоичных переменных является ответом, то большинство статистиков начнут с рассмотрения модели логита.
Существуют специализированные метрики подобия для двоичных векторов, такие как:
и т.п.
Подробности смотрите здесь .
Я бы не советовал использовать коэффициент корреляции Пирсона для двоичных данных, см. Следующий контрпример:
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
Мера двоичного сходства, такая как индекс Жакара, показывает, однако, гораздо более высокую связь:
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")))
график ниже (добавлен небольшой шум, чтобы сделать количество точек более четким)