【问题标题】:Correlation Matrix with multiple binary variables具有多个二进制变量的相关矩阵
【发布时间】:2021-12-22 08:06:51
【问题描述】:

我想将一些二分变量(大约 15 个)相互关联。

为了简单起见,我将使用一个类似的、更简单的数据集来描述我的问题。

假设我们有一个包含 5 个变量的数据框

var1 <- c(1,0,0,1,NA,1,0,0,1,NA)
var2 <- c(1,NA,1,1,NA,1,NA,1,1,NA)
var3 <- c(NA,0,0,1,NA,NA,0,0,1,NA)
var4 <- c(0,0,0,NA,1,0,0,0,NA,1)
var5 <- c(1,1,0,1,NA,1,1,0,1,NA)

DF <- data.frame(var1, var2, var3, var4, var5)

由于我只有二元变量,我不能使用 pearson 相关性。

我已经读过,卡方检验或 phi 相关性会适合我的问题,但我只找到了带有 2 个变量的指令。一个 2x2 帧,而不是多个变量。

有没有一种方法可以将多个二进制变量相互关联并使用矩阵来表示它们?

非常感谢您的回答!

【问题讨论】:

    标签: r matrix binary correlation


    【解决方案1】:

    phi的值等于相关性,所以你可以使用cor来获取它。

    cor(var1, var5, "pair")
    ## [1] 0.5773503
    
    library(psych)
    phi(table(var1, var5), 7)
    ## [1] 0.5773503
    
    cor(DF, use = "pair")
    ##           var1 var2 var3 var4      var5
    ## var1 1.0000000   NA  1.0   NA 0.5773503
    ## var2        NA   NA   NA   NA        NA
    ## var3 1.0000000   NA  1.0   NA 0.5000000
    ## var4        NA   NA   NA    1        NA
    ## var5 0.5773503   NA  0.5   NA 1.0000000
    ## Warning message:
    ## In cor(DF, use = "pair") : the standard deviation is zero
    

    【讨论】:

    • 哦,好吧,不知道。这仅适用于我的数据集,因为它的大小,还是一般适用于二进制变量?
    • 这是一个普遍的事实。
    【解决方案2】:

    这里是二元变量之间相似性的两个度量,Jaccard 距离和准确度。

    jaccard <- function(x, y){
      x <- factor(x, levels = 0:1)
      y <- factor(y, levels = 0:1)
      tbl <- table(x, y)
      tbl[2, 2]/(tbl[1, 2] + tbl[2, 1] + tbl[2, 2])
    }
    
    sapply(DF, \(X) sapply(DF, \(Y) jaccard(X, Y)))
    sapply(DF, \(X) sapply(DF, \(Y) mean(X == Y, na.rm = TRUE)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 2018-01-21
      • 1970-01-01
      相关资源
      最近更新 更多