可变大小滚动窗口回归

3
在Pandas OLS中,窗口大小是固定的长度。如何根据索引设置窗口大小而不是行数?
我有一个系列,其中每天观测次数不同,我有10年的数据历史记录,所以我想在1年的滚动窗口上运行rolling OLS。遍历每个日期有点太慢了,有没有办法使其更快?这是数据的示例。
  Date     x      y
2008-1-2  10.0    2
2008-1-2  5.0     1
2008-1-3  7.0   1.5
2008-1-5  9.0   3.0
...
2013-5-30 11.0  2.5

我希望有一个简单的方法,就像pandas.ols(df.y, df.x, window='1y'),而不是循环每一行,因为循环会使速度变慢。

1个回答

3

这不是正确的答案。我知道这个函数,但它并不像我描述的那样工作,因为在我的情况下,滚动窗口大小可能会在一天之间有所不同(一天中观察点更多或更少)。 - user2426361
理解...但从数学上讲这有意义吗?我猜在某些时候有更多的样本点(在时间上紧密分组)并不会使该期间比只有1个样本的另一个期间更重要? - Joop
根据您的数据适用于先前的评论,您可以使用重新采样到固定周期,但如果将其馈送到OLS,则绝不能填充空白。 - Joop
是的,这就是我所做的(确保每天观测次数相同)。唯一的问题是为了确保准确性,重新采样的数据必须等于滚动窗口均值的平均值,这是一个缓慢的过程。这就是为什么我认为如果有一种通过索引指定窗口的方法,那将是更可取的。 - user2426361
从pandas文档中看起来似乎没有办法在不手动切片/迭代的情况下完成它。我使用了一个生成器来做类似的事情(与矩阵代数有关),但显然会影响性能。让我们看看是否有人有一种方法来强制pandas方法完成它。 - Joop
谢谢您指出这个方法。我不知道pandas.ols原生支持窗口。 - Antony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接