Корреляционный анализ для бинарных переменных в 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)
как решение.