cor只显示NA或1的相关性 - 为什么?

Dav*_*ave 32 r correlation

我正在使用所有数值运行cor(),data.frame我得到这个结果:

       price exprice...
price      1      NA
exprice   NA       1
...
Run Code Online (Sandbox Code Playgroud)

所以它是1或者NA为结果表中的每个值.为什么NAs出现而不是有效的相关性?

dmt*_*dmt 41

告诉相关性忽略具有use参数的NA ,例如:

cor(data$price, data$exprice, use = "complete.obs")
Run Code Online (Sandbox Code Playgroud)


Foj*_*sek 30

1是因为一切都与自身完全相关,而NAs是因为NA你的变量中有s.

当缺少值时,您必须指定R希望如何计算相关性,因为默认情况下只计算具有完整信息的系数.

您可以使用use参数to 更改此行为cor,?cor有关详细信息,请参阅.


mbq*_*mbq 13

如果存在零方差的属性(所有元素相等),也会出现NA; 比如看:

cor(cbind(a=runif(10),b=rep(1,10)))
Run Code Online (Sandbox Code Playgroud)

返回:

   a  b
a  1 NA
b NA  1
Warning message:
In cor(cbind(a = runif(10), b = rep(1, 10))) :
  the standard deviation is zero
Run Code Online (Sandbox Code Playgroud)


小智 6

非常简单正确的答案

使用use参数告诉相关性忽略NA,例如:

cor(data$price, data$exprice, use = "complete.obs")
Run Code Online (Sandbox Code Playgroud)


Raf*_*afs 6

就我而言,我使用了两个以上的变量,这对我来说效果更好:

cor(x = as.matrix(tbl), method = "pearson", use = "pairwise.complete.obs")
Run Code Online (Sandbox Code Playgroud)

然而:

如果 use 的值为“pairwise.complete.obs”,则使用这些变量的所有完整观察对来计算每对变量之间的相关性或协方差。这可能会导致协方差或相关矩阵不是半正定的,如果该变量对没有完整的对,也会导致 NA 条目。