问题标签 [rolling-computation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2234 浏览

python - 了解熊猫的滚动相关性

我试图了解 pandas.rolling_corr 是如何实际计算滚动相关性的。到目前为止,我一直在用 numpy 做这件事。由于速度和易用性,我更喜欢使用 pandas,但我无法像以前那样获得滚动相关性。

我从两个 numy 数组开始:

现在我想计算我的数组 c 的哪个 length-3-window 的互相关。我定义了一个滚动窗口函数:

并计算我生成的每个窗口与第二个原始数据集之间的相关性。这种方法效果很好:

输出:

如果我尝试用熊猫解决它:

无论我是否使用 DataFrame rolling_corr:

或熊猫 rolling_corr:

我只是得到一堆NaN:

有人可以帮帮我吗?我可以通过展平从转换 pandas DataFrame 获得的 numpy 数组来解决 numpy 的问题

但是,我想完全用熊猫来解决计算。我已经搜索了文档,但没有找到我正在寻找的答案。我错过了什么或不理解什么?

非常感谢您提前。

D.

0 投票
2 回答
4987 浏览

python - Pandas Dataframe 列的滚动梯度

如何在 pandas 数据框中创建一个具有另一列梯度的列?

我希望梯度在滚动窗口上运行,因此一次只评估 4 个数据点。

我假设它是这样的: df['Gradient'] = np.gradient(df['Yvalues'].rolling(center=False,window=4))

但是,这会产生错误: raise ValueError('Length of values does not match length of ' 'index') ValueError: Length of values does not match length of index

有任何想法吗?

谢谢!!

0 投票
1 回答
550 浏览

r - 数值和百分比的滚动变化

我正在帮助一个朋友做一些 R 功课,以完成一个显然教得很差的 R 课程(因为课程中涵盖的所有内容和补充材料都无济于事)。

我们有两个数据集。一个包含公司份额的每日离散回报百分比,另一个包含两种货币的每日汇率,比如美元兑瑞士法郎。它看起来像这样:

以及每日离散回报:

任务是编写一个函数,该函数使用两个矩阵并从瑞士投资者的角度计算每日回报。我们假设初始投资为 1000 美元。

我尝试使用 tidyverse 并使用 dplyr 的 lag 函数计算总回报的变化和一天到另一天的百分比变化,如下面提供的代码所示。

问题是rentShare1_usd = dplyr::lag(rentShare1_usd) * (1+Share1)函数的一部分依赖于为初始 1000 美元投资计算的值。因此,我的看法是,我们需要基于初始投资对变化进行某种类型的滚动计算。但是,我不知道如何在函数中实现这一点,因为我只使用滚动方式。我们想根据变量 Share1 中给出的变化和前一天的投资​​价值来计算每日收益。很感谢任何形式的帮助。

0 投票
2 回答
2199 浏览

r - 按组滚动回归

嗨,我有一个面板数据集。我想为每个公司做一个滚动窗口回归并提取独立变量的系数。y 是依赖变量,x 是独立变量。滚动窗口为 12。即第一次回归使用第 1 行到第 12 行数据,第二次回归使用第 2 行到第 13 行数据,等等。使用 Rollapply。

这是一个与我遇到的错误完全相同的问题: Rolling by group in data.table R 该问题的幸运之处在于它只需要一列,但我的需要两列进行回归,所以我无法进行更改根据该帖子中推荐的答案。这是另一个使用 for 循环的帖子。我的真实数据有超过 200 万个观察值,所以太慢了: 使用 dplyr 滚动回归 有人 可以帮忙吗?

我的假数据集如下:

我试过这段代码:

我正在尝试创建一个名为“beta”的列,用于显示 var x 的系数。因此,对于每家公司,第一个数据应该从第 12 次观察开始。

看起来回归从不同组的第一行获取 x 和 y,与我从 EXCEL 得到的结果相比,系数似乎有点偏离。

我尝试的第二种方法是 dplyr 版本:

它给了我同样的问题。每个组都有相同的编号。看起来对于每个公司,回归从第一行获取 y 和 x。

有什么想法吗?太感谢了。

0 投票
1 回答
3355 浏览

python - Pandas 滚动窗口 Spearman 相关性

我想使用滚动窗口计算 DataFrame 两列之间的 Spearman 和/或 Pearson 相关性。

我试过df['corr'] = df['col1'].rolling(P).corr(df['col2'])
(P是窗口大小)

但我似乎无法定义该方法。(添加method='spearman'为参数会产生错误:

公平地说,我没想到这会起作用,因为阅读了文档,没有提到rolling.corr支持方法......

考虑到数据框很大(> 10M 行),有关如何执行此操作的任何建议?

0 投票
2 回答
3879 浏览

python - Pandas Dataframe rolling_max 未来警告错误

我有一个 python pandas 代码来将 url Json 数据从 api 解析到数据帧

它对我来说很完美,除了这个错误(不是:它不会影响结果,但我担心这个未来的警告。

并且所有脚本中的所有 rolling_max 和 rolling_min 总是重复相同的错误。

任何机构都可以帮忙。

0 投票
1 回答
1424 浏览

python - Python熊猫滚动winsorize

我有一个时间序列熊猫数据框,并且我计算了一个新列

但是,我想在标准化之前以滚动方式将 Winsorize 降低到 5% 的水平。因此,对于任何数据点,如果它在 5% 分位数之外,请回顾 252 天,然后将其剪裁到 5% 分位数,然后进行标准化。我不知道如何使它与rolling.apply.

例如(滚动 10 个元素):并假设我在 (和)
df = pd.DataFrame({'series1':[78, 1, 3, 4, 5, 6, 7, 8, 99]})
处剪辑。然后剪辑级别:。然后在标准化之前预期的winsorized窗口将是0.150.85(min=3.2, max=64)
[ 64 3.2 3.2 4 5 6 7 8 64]

我发现的所有示例都是对数据框或整个列进行winsorize。

0 投票
2 回答
728 浏览

python - Python Pandas groupby 或滚动多年平均汇总统计

我有一个熊猫时间序列数据框,从 2014 年到 2017 年,每年大约有 20 行,我正在尝试计算每两年期间的平均值。例如:01/1/2014 ... 31/12/2015、01/1/2015 ... 31/12/2016、01/1/2016 ... 31/12/2017

这是我用来导入 DataFrame 的代码:

和 DataFrame 的一个例子:

我想计算每两年的平均值。预期的答案是:

我尝试了什么:

  • 我知道我可以使用循环并遍历两年期间的列表并以这种方式进行计算,但我确信必须有更好的方法来使用 Pandas 实现这一目标。
  • 我尝试使用.rolling,但这似乎给出了一个滚动平均值,它逐行递增,而不是超过两年。
  • 我可以成功地使用它groupby(df.index.year).mean来获得每年的平均值,但是我将如何计算每两年的平均值呢?
0 投票
4 回答
2697 浏览

r - 计算 R 中的滚动差异

我正在尝试在数据集中进行滚动差异。我有一张这样的桌子:

我想得到一列差异,从第 5 行开始计算。所以它看起来像这样

现在我只是对计数列进行子集化并与零组合进行计算。有没有更整洁的方法来做到这一点?

这就是我现在正在做的事情:

0 投票
1 回答
437 浏览

r - 建立滚动平均预测

我有一系列称为部件的间歇性需求(示例如下),我想开发训练集和测试集的滚动平均预测。我的代码也在下面。系列 fitmean 计算滚动平均值,但有两个问题:

  1. 当我真正想要的是获得 12 的滚动平均值时,它添加了第 13 个元素;和,
  2. 日期从 2016 年 6 月到 2017 年 6 月,所以当我减去测试部分时,我只能得到 2017 年 1 月到 2017 年 6 月的 6 个值。

有没有办法 (1) 删除 fitmean 末尾的第 13 个元素,以及 (2) 更改日期以使其与 testparts 匹配?

谢谢你。

澄清:

上面的列表应该分解为从 1 月 16 日到 12 月 16 日的训练集和从 1 月 17 日到 12 月 17 日的测试集。我想要做的是使用滚动平均值,因此 Jan-16 到 Dec-16 的平均值(四舍五入,即 0)成为 Jan-17 的预测,依此类推,即 Feb-16 到 Jan-17,等输出应该是这样的

不幸的是,我用 13 个副 12 个元素得到了这个。