我对熊猫很陌生,所以我想我做错了-
我有一个数据框:
a b
0 0.5 0.75
1 0.5 0.75
2 0.5 0.75
3 0.5 0.75
4 0.5 0.75
df.corr()
给我:
a b
a NaN NaN
b NaN NaN
但是np.correlate(df["a"], df["b"])
给出了:1.875
为什么?
我想得到数据帧的相关矩阵,并认为corr()
可以做到这一点(至少根据文档)。为什么它返回NaN
?
正确的计算方法是什么?
非常感谢!
Tags:
np.correlate计算两个一维序列之间的(未格式化的)cross-correlation:
而df.corr(默认情况下)计算Pearson correlation coefficient。
相关系数(如果存在的话)总是介于-1和1之间。 互相关不是有界的。
这些公式有些相关,但请注意,在互相关公式(如上)中,没有减去平均数,也没有除以皮尔逊相关系数公式中的标准差。
df['a']
和df['b']
的标准差为零,这就是导致df.corr
处处为NaN的原因。从下面的注释中,听起来您正在寻找Beta。它与皮尔逊相关系数有关,但不是除以标准差的乘积:
除以方差:
您可以使用np.cov计算
Beta
mu
的比值为2,而beta
的比值为~2.1。你也可以用
df.corr
来计算它,虽然这是一种更全面的方法(但是很高兴看到它是一致的):相关问题 更多 >
编程相关推荐