COR()与R中的二分法数据相关输出混淆

  • 本文关键字:数据 输出 COR 二分 r correlation
  • 更新时间 :
  • 英文 :


i具有data.frame df,带有三个变量,值为" 1"或" 0",而没有一个以上的变量,其中一个具有" 1":

> df <- structure(list(var1 = c(0, 0, 0, 0, 1, 0, 0, 1, 0, 0), var2 = c(1, 
0, 0, 0, 0, 0, 0, 0, 0, 0), var3 = c(0, 1, 0, 1, 0, 1, 0, 0, 
0, 1)), .Names = c("var1", "var2", "var3"), row.names = c(NA, 
-10L), class = c("tbl_df", "tbl", "data.frame"))
> df
   var1 var2 var3
1     0    1    0
2     0    0    1
3     0    0    0
4     0    0    1
5     1    0    0
6     0    0    1
7     0    0    0
8     1    0    0
9     0    0    0
10    0    0    1

所有行的行总和小于1:

> rowSums(df)
 [1] 1 1 0 1 1 1 0 1 0 1

当我查看相关性时(由于数据为" 1" s和" 0" s(,当我使用" spearman"参数时,输出令人困惑,因为存在非零的相关性:

cor(df, method = "spearman")
           var1       var2       var3
var1  1.0000000 -0.1666667 -0.4082483
var2 -0.1666667  1.0000000 -0.2721655
var3 -0.4082483 -0.2721655  1.0000000

我想知道这是否是STATS :: COR((的一些奇怪的副作用,所以我尝试了HMISC :: rcorr((,结果相同:

> Hmisc::rcorr(as.matrix(df), type = "spearman")
      var1  var2  var3
var1  1.00 -0.17 -0.41
var2 -0.17  1.00 -0.27
var3 -0.41 -0.27  1.00

不应该因为没有一个以上的变量的值为" 1",所以所有三个变量之间的相关性不应该为0吗?我是否误解了相关性如何以某种深刻的方式起作用?还是我错误地使用了这些功能?

您对行总和为1的观察实际上意味着变量之间存在一些负相关,因为负相关的含义是一个变量更大(在您的情况1中1(,一个较小的变量(在您的情况0中(,与您的结果一致。

由于两个变量的内在产物为零,您的混乱可能会引起,但是内部乘积为零并不意味着没有相关性(仅意味着仅当每个变量都是时都没有线性相关性标准化为平均零,您的情况肯定不是(。

最新更新