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

How to use biserial to calculate correlation between continuous and categorical variable?

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

psych包中的函数biserial就是用来计算这个的。参见 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

谢谢!

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

The biserial correlation is between a continuous y variable and a dichotmous x variable, which is assumed to have resulted from a dichotomized normal variable.

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

polyserial() 需要矩阵作为输入,因此您的命令结构如下:

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