2010-09-26 68 views
18

我与所有数值的data.frame运行cor()和我得到这个作为结果:cor只显示NA或1的相关性 - 为什么?

 price exprice... 
price  1  NA 
exprice NA  1 
... 

所以它要么1NA在结果表中的每个值。为什么NA显示出来而不是有效的相关性?

回答

21

1这是因为一切都与自己完全相关,而NA是因为变量中有NA s。

您将不得不指定R如何在缺少值时计算相关性,因为缺省值仅计算具有完整信息的系数。

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

11

如果存在具有零方差的属性(所有元素相等),则也会出现NA。例如参见:

cor(cbind(a=runif(10),b=rep(1,10))) 

返回:

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 
+0

我得到了这个问题。这在数学上似乎是可以理解的,即相关性是从方差计算的,因此NA是零方差。但逻辑上,即使方差为零,这两个元素仍然相关。没有?例如,我试图查看每天的销售量与温度的相关性,并且对于某些项目有单个销售。因此零差异。但NA似乎在逻辑上是错误的。 – urwaCFC 2017-10-20 14:03:19

24

告诉相关忽略来港与use参数,如:

cor(data$price, data$exprice, use = "complete.obs") 
1

由于NA居然能有2个原因。一个是你的数据中有一个NA。另一个原因是其中一个值是不变的。这导致标准偏差等于零,因此cor函数返回NA。

1

很简单,正确的答案

告诉相关性与使用的说法忽略港定居,例如:

cor(data$price, data$exprice, use = "complete.obs")