2017-08-02 85 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