为什么Pearson相关输出是NaN?

时间:2015-08-06 11:21:04

标签: r statistics pearson

我试图在R中的变量之间得到Pearson相关系数。这是变量的散点图:

ggplot(results_summary, aes(x =D_in, y = D_ex)) + geom_point(col=ifelse(results_summary$FDR < 0.05, ifelse(results_summary$logF>0, "red", "green" ), "black"))

enter image description here

正如您所看到的,变量相关性非常好,所以我期待高相关系数。然而,当我试图获得Pearson相关系数时,我得到了NaN!

> cor(results_summary$D_in, results_summary$D_ex, method="spearman")
[1] 0.868079
> cor(results_summary$D_in, results_summary$D_ex, method="kendall")
[1] 0.6973086
> cor(results_summary$D_in, results_summary$D_ex, method="pearson")
[1] NaN

我检查了我的数据是否包含任何NaN:

> nrow(subset(results_summary, is.nan(results_summary$D_ex)==TRUE)) 
[1] 0
> nrow(subset(results_summary, is.nan(results_summary$D_in)==TRUE)) 
[1] 0
> cor(results_summary$D_in, results_summary$D_ex, method="pearson", use="complete.obs")
[1] NaN

但似乎这不是由此产生的NaN的原因。有人可以提供关于这里会发生什么的线索吗?

谢谢你的时间!

1 个答案:

答案 0 :(得分:3)

这看起来很奇怪。我的猜测是输入数据存在一些问题(你提到的检查没有透露)。我建议你跑步:

  

任何(!is.finite(results_summary $ D_IN))

     

任何(!is.finite(results_summary $ D_ex))

您也可以尝试手动计算Pearson的相关性,以尝试深入了解问题的位置(在分子和/或分母中?):

  

pearson_num = cov(results_summary $ D_in,results_summary $ D_ex,use =“complete.obs”)

     

pearson_den = c(sd(results_summary $ D_in),sd(results_summary $ D_ex))