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中(,与您的结果一致。
由于两个变量的内在产物为零,您的混乱可能会引起,但是内部乘积为零并不意味着没有相关性(仅意味着仅当每个变量都是时都没有线性相关性标准化为平均零,您的情况肯定不是(。