微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试获得滚动相关性时的 NAN 值

如何解决尝试获得滚动相关性时的 NAN 值

我正在尝试获取 2 个值的滚动相关性,并且我一直在获取 NAN 值。我知道 NAN 值与窗口大小相关,但我很困惑。我怎么知道窗口大小要放什么?我已经查看了此论坛上有关此问题的一些先前帖子,但我很困惑。

数据集名称ok,这里是我插入的代码 ok[matic].rolling(50).corr(ok[bi])

这是我试过的代码maticbi 是我想要运行相关的两个变量;总共有 49 行,有两列。我确实在每一行上都有日期。但是我一直在获取 NAN 值,并且我尝试在窗口大小中插入数字 50、49 和 48。我还从 bi 变量中删除一个值,使其比 matic 值少一个,但我仍然收到所有 NAN 值。我想要一个图表和每个相关性的图表

    matic   bitcoin
Date        
2021-04-01  NaN NaN
2021-04-02  NaN NaN
2021-04-03  NaN NaN
2021-04-04  NaN NaN
2021-04-05  NaN NaN
2021-04-06  NaN NaN
2021-04-07  NaN NaN
2021-04-08  NaN NaN
2021-04-09  NaN NaN
2021-04-10  NaN NaN
2021-04-11  NaN NaN
2021-04-12  NaN NaN
2021-04-13  NaN NaN
2021-04-14  NaN NaN

解决方法

您获得所有 NA 的原因是您使用的窗口尺寸太大。

这是一个可重现的小例子:

import pandas as pd
import numpy as np

nobs = 49

ok = pd.DataFrame({'matic':np.random.rand(nobs),'bi':np.random.rand(nobs)})

print(ok['matic'].rolling(window=50).corr(ok['bi']))

由于您的数据只有 49 个观测值,因此无法计算大小为 50 的窗口的滚动平均值。

相反,您可以这样做:

print(ok['matic'].rolling(window=3).corr(ok['bi']))

计算窗口大小为 3 的滚动平均值(即三个连续项的相关项)。

最后,你也可以这样做:

print(ok['matic'].corr(ok['bi']))

这将仅计算整个数据集的一个相关性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。