如何使用biserial计算连续变量和分类变量之间的相关性?

时间:2015-03-05 18:46:37

标签: r correlation continuous categorical-data

我正在尝试计算R中x(连续变量)和y(分类变量)之间的相关性。

biserial包中的函数psych用于计算此值。请参阅here

但是当我实际使用它时,我收到了一条警告信息和NA作为相关性:

Warning message:
In biserialc(x[, j], y[, i], j, i) : For x = 1 y = 1 y is not dichotomous

有没有人真正使用此功能并获得正确的结果?

更新:

以下是可重现的代码:

 library(psych)
x=c(5,3,4,8,7,7,4,9,6,8,11,5,1,4,4,9,5,9,10,2,9,3,6,9,3,9,7,14,7,6,8,10,6,10,2,8,6,4,12,11,1,8,7,7,12,6,5,6,8,9)
y=c(2,3,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,2,3,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,3,1,1,1,1,1)
 biserial(x,y)

输出

 Biserial |                                                                                                            |   0%
       [,1]
 [1,]   NA
 Warning message:
In biserialc(x[, j], y[, i], j, i) : For x = 1 y = 1 y is not dichotomous

谢谢!

1 个答案:

答案 0 :(得分:1)

由于y不是二分法,因此使用biserial()没有意义。来自文档:

  

双列相关是在一个连续的y变量和一个二分的x变量之间,假设它是由一个二分的正常变量产生的。

而是使用polyserial(),它允许超过2个级别。

polyserial()需要矩阵作为输入,因此请按以下方式构造命令:

> polyserial(as.matrix(x), as.matrix(y))
          [,1]
[1,] 0.2672098