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 得到纠正,问题也就解决了。
希望这里有人能帮助我,因为我似乎无法破解问题所在。
我有两个数据系列,我正在尝试使用 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 得到纠正,问题也就解决了。