当所需的“窗口”是一个时间范围而不是多个观察值时的窗口线性回归

问题描述

我有一个时间序列数据,其中每一行与前一行的时间间隔是不固定的。一次观察可能是上一次观察后的 1 秒或 10 秒或 2 分钟等。

time                        observation
2021-01-24 23:03:44+00:00   3838.25
2021-01-24 23:03:47+00:00   3838.18
2021-01-24 23:03:48+00:00   3838.25
2021-01-24 23:03:52+00:00   3838.5
2021-01-24 23:03:54+00:00   3838.5
2021-01-24 23:03:55+00:00   3838.5
2021-01-24 23:03:58+00:00   3838.72
2021-01-24 23:03:59+00:00   3838.5
2021-01-24 23:04:00+00:00   3838.62
2021-01-24 23:04:01+00:00   3838.25
2021-01-24 23:04:02+00:00   3838.5
2021-01-24 23:04:03+00:00   3838.5
2021-01-24 23:04:06+00:00   3838.25
2021-01-24 23:04:07+00:00   3838.5
2021-01-24 23:04:08+00:00   3838.38
2021-01-24 23:04:13+00:00   3838.53
(> 1 million rows,btw)

我希望进行滚动回归以确定给定时间段(窗口)内数据的斜率。我需要这些数据来确定观察值是在规定时间内上升还是下降。

对于加权平均函数,我成功地使用了“滚动”函数,它使我能够规定一个时间范围。 Pandas 将回顾并仅选择规定时间范围内的那些数据点,而不管它们的间隔如何:

    for timeframe in ['30s','1Min','2Min','3Min','4Min','5Min']:
        df[timeframe] = df.rolling(timeframe).observation.mean()

我一直在研究窗口线性回归,据我有限的理解,“窗口”似乎只能定义为观察次数,而不是上面的时间范围 .这对我的数据来说是有问题的,因为 10 次观察可能涵盖 30 分钟或 3 秒等的时间段。

最后,我的问题是 - 实现窗口线性回归的正确方法是什么,其中“窗口”是一个时间范围,而不是一些观察值。

对于加分——我也希望在同一个数据集上做窗口/滚动差异——这比在非常大的数据集上使用自定义函数和 .apply(myfunc) 看起来要困难得多——它需要很长时间才能完成- 有更好的方法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)