Pandas rolling.corr只返回错误的值



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

我有两个系列的数据,我正在尝试使用pandas[滚动相关性]计算具有两行窗口的滚动相关性https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.window.rolling.Rolling.corr.html功能,如下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

作为回报,我收到一个充满错误结果的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

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

当然,这可以通过玩标准相关功能correlation=series1.corr(series2)来确认。

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

我正在运行此:Windows 10Jupyter笔记本从Conda安装Python 3.8从Conda 安装Pandas 1.0.5

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

一旦窗口被纠正,问题也就出现了。

相关内容

  • 没有找到相关文章

最新更新