r - 为什么 Pearson 相关输出为 NaN?

标签 r statistics pearson

我正在尝试获取 R 中变量之间的 PIL 逊相关系数。这是变量的散点图:

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 的原因。有人可以提供有关这里可能发生的情况的任何线索吗?

感谢您的宝贵时间!

最佳答案

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

any(!is.finite(results_summary$D_in))

any(!is.finite(results_summary$D_ex))

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

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

关于r - 为什么 Pearson 相关输出为 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31854426/

相关文章:

r - 在不分离分组变量的情况下均匀拆分数据框

R:沿时间线计算每个单元格中的 Pearson 相关系数

python - 来自 “Programming Collective Intelligence” 的 PIL 逊算法有什么问题?

r - 如何在 R 中生成我的 data.frame 的相关图?

python - 如何使用逆 CDF 在 Python 中随机抽样对数正态数据并指定目标百分位数?

authentication - Sitecore:sitecore 域用户统计信息

R:有效地在每一列选择不同的行

dplyr 中带条件的递归函数

r - 从 X12 获取 TS 的频率和 XTS

R : How to find data only within 1 standard deviation