Корреляционный анализ для бинарных переменных в R

dat <- as.data.frame(replicate(100,sample(c(0,1),100,replace=TRUE)))

Я хочу создать матрицу 100 на 100 с коэффициентами корреляции между этими двоичными переменными в качестве записей.

Если бы переменные были непрерывными, то я бы использовал cor() создать матрицу. Я не уверен, если cor() с Пирсоном в качестве метода разумного. Если нет, скажем, я мог бы найти функцию fn() рассчитать корреляцию между парой двоичных векторов. Как эффективно построить матрицу 100 на 100?

1 ответ

Не уверен, что это ответ переполнения стека. Вы спрашиваете о корреляции между двоичными векторами. Это называется коэффициентом Фи, который был открыт Пирсоном.

Аппроксимирует корреляцию Пирсона для малых значений. Вы можете попробовать

sqrt(chisq.test(table(dat[,1],dat[,2]), correct=FALSE)$statistic/length(dat[,1]))

и обратите внимание, что это дает то же значение 0.08006408 как

cor(dat[1], dat[2]) 

Это потому, что аппроксимация достаточно хороша для достаточно больших значений, скажем, больше 40.

Итак, я бы посоветовал сэкономить время и просто использовать cor(dat) как решение.

Другие вопросы по тегам