【问题标题】:R: Tetrachoric correlation for multiple variables at one go?R:一次性对多个变量进行四阶相关性?
【发布时间】:2022-04-26 00:25:36
【问题描述】:

当我什至无法使用虚拟数据集重现我的问题时,您可以看到我是初学者......无论如何,这里是:我想计算一个分组变量和多个其他变量之间的四色相关性.像这样:

library(psych)

set.seed(42)
n <- 16
dat <- data.frame(id=1:n,
                  group=c(rep("a", times=5), rep("b", times=3)),
                  x=sample(1:2, n, replace=TRUE),
                  y=sample(1:2, n, replace=TRUE),
                  z=sample(1:2, n, replace=TRUE))

dat

  id group x y z
1  1     a 1 1 2
2  2     a 1 2 2
3  3     a 1 1 2
4  4     a 1 2 2
5  5     a 2 1 1
6  6     b 2 2 1
7  7     b 2 1 1
8  8     b 2 1 1

tetrachoric(as.matrix(dat[,c("group","y")]))

现在有了这个例子(不是我的实际数据集)我得到一个我无法解决的错误:

应用错误(x, 2, function(x) min(x, na.rm = TRUE)) : dim(X) 的长度必须为正 另外:警告信息: 1:在 var(if (is.vector(x) || is.factor(x)) x else as.double(x), na.rm = na.rm) 中: 强制引入的 NA 2:在 tetrachoric(as.matrix(dat[, c("group", "y")])) 中: Item = group 没有差异,被删除了

我的问题仍然是用一段代码获得所有相关性的最佳解决方案是什么?谢谢你的帮助!

【问题讨论】:

    标签: r


    【解决方案1】:

    tetrachoric 的帮助文件说“四色相关性是从 2 x 2 表中推断出的 Pearson 相关性,假设为二元正态性”,因此您可能需要将其传递给 2x2 表。您可以编写一个小函数,将tetrachoric 交给相应的表并收集结果:

    myfun <- function(x,y, ...){
      tabs <- lapply(seq_along(y), function(i)table(x,y[,i]))
      l <- lapply(tabs, function(x)tetrachoric(x, ...))
      rho <- sapply(l, function(x)x$rho)
      tau <- sapply(l, function(x)x$tau)
      colnames(tau) <- colnames(y)
      names(rho) <- colnames(y)
      ret <- list(rho = rho , 
                  tau = tau)
      ret
      
    }
    
    myfun(dat$group, dat[,c("x", "y", "z")])
    # $rho
    #         x          y          z 
    # 0.5397901 -0.2605839  0.6200705 
    # 
    # $tau
    #           x         y          z
    # a 0.3186394 0.3186394  0.2690661
    # 1 0.1573107 0.1573107 -0.6045853
    
    

    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 1970-01-01
      • 2016-04-22
      • 2019-02-27
      • 2017-08-20
      • 2016-12-14
      • 1970-01-01
      • 2011-12-06
      • 2021-10-30
      相关资源
      最近更新 更多