我在cor()
上使用所有数值运行data.frame
,我得到了这个结果:
price exprice...
price 1 NA
exprice NA 1
...
因此,对于结果表中的每个值,它都是1
或NA
。为什么NA
出现而不是有效的相关性?
答案 0 :(得分:38)
告诉相关性忽略具有use
参数的NA,例如:
cor(data$price, data$exprice, use = "complete.obs")
答案 1 :(得分:30)
1
是因为一切与自身完全相关,NA
是因为变量中有NA
个。
当缺少值时,您必须指定R如何计算相关性,因为默认情况下只计算具有完整信息的系数。
您可以使用use
参数cor
更改此行为,有关详细信息,请参阅?cor
。
答案 2 :(得分:12)
如果存在零方差的属性(所有元素相等),也会出现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
答案 3 :(得分:4)
非常简单和正确的答案
告诉相关性忽略带有use参数的NA,例如:
cor(data$price, data$exprice, use = "complete.obs")
答案 4 :(得分:2)
NA实际上可能是由于两个原因造成的。一个是你的数据中有一个NA。另一个是由于其中一个值是不变的。这导致标准偏差等于零,因此cor函数返回NA。
答案 5 :(得分:1)
就我而言,我使用了两个以上的变量,这对我来说更好:
cor(x = as.matrix(tbl), method = "pearson", use = "pairwise.complete.obs")
但是:
如果use的值为“ pairwise.complete.obs”,则使用对这些变量的所有完整观测对来计算每对变量之间的相关性或协方差。如果没有一对变量的完整对,则可能导致协方差或相关矩阵不是正半定的,以及NA条目。