【发布时间】:2020-11-24 09:20:08
【问题描述】:
希望这里有人可以帮助我,因为我似乎无法解决问题所在。
我有两个系列的数据,我正在尝试使用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) 来确认。
我检查了代码,我检查了环境,但没有发现任何可以解释函数中这种无根据的行为的东西。
我正在运行这个: 视窗 10 Jupyter 笔记本 从 Conda 安装的 Python 3.8 从 Conda 安装的 Pandas 1.0.5
【问题讨论】:
-
您正在计算两个二元素序列之间的相关性,始终为 1。您确定这是您想要的吗?
-
将其更改为 r_corr=series1.rolling(20).corr(series2) 并手动交叉检查列表中最后一项的数据。 (记住 rho= cov(x,y)/(sigma x * sigma y) 两个项目为 1...)
-
@piterbarg,好地方!
-
@PaulBrennan 你也是。谢谢,两者都如此专注,而不是他的图书馆,以至于完全忘记了检查我到底要做什么。
标签: python pandas dataframe correlation