【发布时间】:2021-04-06 19:31:45
【问题描述】:
我正在使用scipy 来计算相关性。我计算斯皮尔曼相关性的代码如下。
from scipy import stats
sequence_1 = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
sequence_2 = [0, 0.009783728115345005, 0, 0, 0.0019759230121848587, 0.0007535430349118562, 0.0002661781514710257, 0, 0, 0.0007835762419683435]
myspearman = stats.spearmanr(sequence_1,sequence_2)
print(myspearman)
我从代码中得到以下结果。
SpearmanrResult(correlation=nan, pvalue=nan)
尽管本主题中有一些 SO 问题,但它们并没有专门回答我的问题。
我的问题如下。
- 我想以某种方式获得相关性的值。从这个意义上说,什么
是
nan的等效值吗? - 我的另一个问题是;有没有办法避免这种情况并变得实际 python 中的值?
如果需要,我很乐意提供更多详细信息。
【问题讨论】:
-
您确定要 spearman 相关性而不是 pearson 相关性?通常,spearman 相关是对排名数据执行的,因此不太可能出现如此多的联系。
-
@LucasRoberts 我很乐意尝试
pearson相关性,如果它没有给出任何 nans :) -
-
@EmJ,
pearsonr()也将返回Nan。但是,如果您使用的是 SciPy 版本 1.3.X,它将返回一条信息性消息。我相信 Warren 提供了一个补丁来解决这个问题并提供信息丰富的错误消息。这也与您在这种情况下所希望的一样多,尽管您没有收到关于spearmanr的信息性消息。 -
@EmJ,我建议你在 scipy github repo 上提交一个错误报告:github.com/scipy/scipy/issues 或者如果你愿意,我可以代表你打开一个并链接这个帖子。