我有data.frame df
,其中包含三个变量,其值为" 1"或" 0"并且没有带有多个变量的行与#34; 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
当我查看相关性时(我使用&#34; spearman&#34;参数,因为数据是&#34; 1&#34; s和&#34; 0&#34; s),输出是令人困惑,因为存在非零的相关性:
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
不应该将所有三个变量之间的相关性设为0,因为没有行中多个变量的值为&#34; 1&#34;?我是否误解了相关性如何以某种深刻的方式发挥作用?或者我错误地使用这些功能?
答案 0 :(得分:1)
您对行总和小于1的观察实际上意味着变量之间存在一些负相关,因为负相关的含义是一个变量更大(在您的情况下为1),一个变量更小(在您的案例0),这与您的结果一致。
由于两个变量中的任何一个的内积为零,可能会出现混淆,但内积为零并不意味着没有相关性(它只表示只有当每个变量都是标准化为平均零,你的情况肯定不是。)