希望这里有人能帮我,因为我似乎无法解决问题所在。
我有两个系列的数据,我正在尝试使用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)
选择正确的窗口。
一旦窗口被纠正,问题也就出现了。