Numpy 当我通过scipy使用pearsonr函数时,为什么接收nan作为变量的输出?
我在一个数据帧中有两个变量,叫做相关性 雷普雷克斯: 这是我的自变量(X) 这是我的因变量或YNumpy 当我通过scipy使用pearsonr函数时,为什么接收nan作为变量的输出?,numpy,scipy,correlation,pearson-correlation,Numpy,Scipy,Correlation,Pearson Correlation,我在一个数据帧中有两个变量,叫做相关性 雷普雷克斯: 这是我的自变量(X) 这是我的因变量或Y correlation["Y"] Out[36]: 0 333.65 1 0.00 2 1846.80 3 0.00 4 0.00 5 0.00 6 0.00 7 0.00 8 191.56 9
correlation["Y"]
Out[36]:
0 333.65
1 0.00
2 1846.80
3 0.00
4 0.00
5 0.00
6 0.00
7 0.00
8 191.56
9 0.00
10 0.00
from numpy.random import randn
from scipy.stats import pearsonr
from numpy import corrcoef
from scipy.stats import spearmanr
data1 = correlation["X"]
data2 = correlation["Y"]
# calculate Pearson's correlation
corr, _ = pearsonr(data1, data2)
print('Pearsons correlation: %.3f' % corr)
但是,当我打印我的函数时,我的输出是:
print('Pearsons correlation: %.3f' % corr)
Pearsons correlation: **nan**
为什么会发生这种情况 好的,我承认我对SciPy一无所知,但我希望数组应该有相同数量的元素。从我看到的X有35个,Y有36个,也许这是个问题(至少在一些版本中,正如沃伦在上面评论的那样,它对他有效)。在SciPy 1.3.1中,pearsonr返回r=-0.0042432278454233和p=0.9901210843335179。您使用的是哪个版本的SciPy?您可以使用
import-scipy进行检查;打印(打印版本)
print('Pearsons correlation: %.3f' % corr)
Pearsons correlation: **nan**