在R中cor和cor.test有什么区别

在R中cor和cor.test有什么区别,r,correlation,R,Correlation,我有一个数据框,它的列是一个实验的不同样本。我想找出这些样本之间的相关性。所以样本v2和v3之间的相关性,样本v2和v4之间的相关性。。。。 这是数据帧: > head(t1) V2 V3 V4 V5 V6 1 0.12725011 0.051021886 0.106049328 0.09378767 0.17799444 2 0.86096784 1.263327211 3.073650624 0.75607

我有一个数据框,它的列是一个实验的不同样本。我想找出这些样本之间的相关性。所以样本v2和v3之间的相关性,样本v2和v4之间的相关性。。。。 这是数据帧:

> head(t1)
      V2          V3          V4         V5         V6
1 0.12725011 0.051021886 0.106049328 0.09378767 0.17799444
2 0.86096784 1.263327211 3.073650624 0.75607466 0.92244361
3 0.45791031 0.520207274 1.526476608 0.67499102 0.49817761
4 0.00000000 0.001139721 0.003158557 0.00000000 0.00000000
5 0.13383965 0.098943019 0.099922146 0.13871867 0.09750611
6 0.01016334 0.010187671 0.025410170 0.00000000 0.02369374
> nrow(t1)
[1] 23367
如果我运行此数据帧的cor函数以获得样本(列)之间的相关性,我将获得所有样本的NA:

> cor(t1, method= "spearman")
V2 V3 V4 V5 V6
V2  1 NA NA NA NA
V3 NA  1 NA NA NA
V4 NA NA  1 NA NA
V5 NA NA NA  1 NA
V6 NA NA NA NA  1
但如果我运行这个:

> cor.test(t1[,1],t1[,2], method="spearman")$estimate
rho 
0.92394 
这是不同的。为什么会这样?获取这些样本之间相关性的正确方法是什么?
提前感谢。

您的数据包含
NA

?cor

如果使用是“一切”,NAs将在概念上传播,即 只要有一个贡献值,结果值将为NA 观察结果是不正确的

?cor.test

na.action一个函数,指示当数据 包含NAs。默认为getOption(“na.action”)

在我的系统上:

getOption("na.action")
[1] "na.omit"

使用
which(!is.finite(t1))
搜索有问题的值,使用
which(is.na(t1))
搜索
na
值<如果数据中有
Inf
值,则code>cor返回
NaN

如何检查数据框是否包含NA?我认为它还包括很多Inf值。这也会影响吗?另一个问题是,我认为cor.test是针对成对相关的,它需要两个参数来计算。我认为我应该使用cor not cor.test,但我仍然不确定它是否是查找数据帧样本(列)之间相关性的正确函数。@hora请参阅我对答案的编辑并阅读帮助页。您可以使用
*apply
函数与
cor.test
进行成对比较。谢谢@Roland。现在我检查我的数据框,实际上只有一行有NA,我认为只有与该行相关的值应该是NA,但不是所有的。我还替换了Inf值,但结果仍然是NA。实际上,我的问题是,为什么我使用cor.test对同一数据集只比较两个样本,结果不是NA。但当我对整个数据帧使用这个“cor”时,我得到了NA(@hora我们可以整天对此进行猜测。向我们展示数据,或者用一个简单的可复制的示例重现您的问题。@hora您不是在关联行,而是在关联列。请尝试理解我写的内容,并仔细阅读帮助页。