Pandas rolling.corr returns 只有错误的值

Pandas rolling.corr returns only erroneous values

希望这里有人能帮助我,因为我似乎无法破解问题所在。

我有两个数据系列,我正在尝试使用 pandas [滚动相关]https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.window.rolling.Rolling.corr.html 功能计算与两行 window 的滚动相关性,如下r_corr=series1.rolling(2).corr(series2)

数据示例:

2010-01-08         NaN
2010-01-15    0.070039
2010-01-22   -0.047273
2010-01-29    0.013359
2010-02-05    0.109228
                ...   
2017-11-17    0.034265
2017-11-24    0.024689
2017-12-01    0.009061
2017-12-08    0.041224
2017-12-15    0.000784

在 return 中,我收到一个充满错误结果的 Series 对象:

2010-01-08    NaN
2010-01-15    NaN
2010-01-22    1.0
2010-01-29    1.0
2010-02-05    1.0
             ... 
2017-11-17    1.0
2017-11-24    1.0
2017-12-01    1.0
2017-12-08    1.0
2017-12-15    1.0

虽然由于 window 的大小,NaN 是意料之中的,但这两个系列之间的相关性几乎在任何时候都不可能为 1 或 -1,更不用说所有了。

当然,这可以通过使用标准相关函数来确认 correlation=series1.corr(series2)

我检查了代码,检查了环境,但没有发现任何可以解释函数中这种不当行为的东西。

我是 运行 这个: Windows 10 Jupyter笔记本 Python 从 Conda 安装的 3.8 Pandas 从 Conda 安装的 1.0.5

根据@PaulBrenan 和@piterbag 的建议,问题的解决方案归结为没有为 r_corr=series1.rolling(20).corr(series2) 选择正确的 window。

一旦 window 得到纠正,问题也就解决了。