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

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

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

我有一个时间序列数据,其中每一行与前一行的时间间隔是不固定的。一次观察可能是上一次观察后的 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 举报,一经查实,本站将立刻删除。