2017-08-02 83 views
0

我有10个二元变量的数据帧,是这样的:如何计算r中二元变量之间的相关矩阵?

V1 V2 V3... 
0 1 1 
1 1 0 
1 0 1 
0 0 1 

我需要得到相关矩阵,然后我可以做因素分析。
psych::corr.test可以计算出相关矩阵,但只有person,spearman,kendall方法,不用于二进制数据。
那么,如何计算这个数据帧的相关矩阵呢?

+0

实际上,您也可以使用Pearson相关系数来计算二元变量。请参阅https://en.m.wikipedia.org/wiki/Phi_coefficient – sedsiv

+1

而不是计算相关性,我宁愿使用像Jaccard这样的相似性系数/指标。 – Miha

+1

也取决于你的变量代表什么。如果它们可能是潜在的正态分布变量的指标,那么可以使用四分相关。 – user20650

回答

0
# create data 
m <- matrix(sample(x = 0:1,size = 200,replace = T),ncol = 10) 
colnames(m) <- LETTERS[1:10] 
m 
# create cor matrix 
res <- data.frame() 
for(i in seq(ncol(m))){ 
    z <- m[,i] 
    z <- apply(m,2,function(x){sum(x==z)/length(z)}) 
    res <- rbind(res,z) 
} 
colnames(res) <- colnames(m) 
rownames(res) <- colnames(m) 
res <- as.matrix(res) 
res 
+0

那么这个计算的比例是一致的吗? ('all.equal((crossprod(m)+ crossprod(!m))/ nrow(m),res)') – user20650

+0

我更倾向于术语准确性,但我想可以这样调用它 – Edvardoss