为什么Pearson相关输出是NaN?

Gep*_*ada 5 statistics r 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"))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如您所见,变量之间的相关性很好,因此我期望相关系数很高。但是,当我尝试获得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
Run Code Online (Sandbox Code Playgroud)

我检查了我的数据是否包含任何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
Run Code Online (Sandbox Code Playgroud)

但是似乎这不是产生NaN的原因。有人可以提供任何有关这里可能发生的情况的线索吗?

谢谢你的时间!

小智 4

这看起来很奇怪。我的猜测是输入数据存在一些问题(您提到的检查没有揭示这一问题)。我建议你运行:

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

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

您还可以尝试手动计算皮尔逊相关性,以尝试了解问题所在(在分子和/或分母中?):

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))