gpt4 book ai didi

python - 如何生成嘈杂的模拟时间序列或信号(在 Python 中)

转载 作者:太空狗 更新时间:2023-10-29 20:31:18 25 4
gpt4 key购买 nike

我经常不得不处理一堆嘈杂的、有些相关的时间序列。有时我需要一些模拟数据来测试我的代码,或者为 Stack Overflow 上的一个问题提供一些样本数据。我通常最终要么从不同的项目加载一些类似的数据集,要么只是添加一些正弦函数和噪声并花一些时间来调整它。

你的方法是什么?您如何生成具有特定规范的噪声信号?我是不是忽略了一些非常明显的标准包,它们正是这样做的?

我通常希望在我的模拟数据中获得的特征:

  • 随时间变化的噪音水平
  • 信号中的一些历史记录(比如随机游走?)
  • 信号的周期性
  • 能够生成具有相似(但不完全相同)特征的另一个时间序列
  • 也许是一堆奇怪的下降/高峰/高原
  • 能够重现它(一些种子和一些参数?)

我想得到一个类似于下面两个的时间序列[A]:

Real time series 1 Real time series 2

我通常会使用如下代码创建一个时间序列:

import numpy as np

n = 1000
limit_low = 0
limit_high = 0.48
my_data = np.random.normal(0, 0.5, n) \
+ np.abs(np.random.normal(0, 2, n) \
* np.sin(np.linspace(0, 3*np.pi, n)) ) \
+ np.sin(np.linspace(0, 5*np.pi, n))**2 \
+ np.sin(np.linspace(1, 6*np.pi, n))**2

scaling = (limit_high - limit_low) / (max(my_data) - min(my_data))
my_data = my_data * scaling
my_data = my_data + (limit_low - min(my_data))

这会导致这样的时间序列:

Mock time series

这是我可以使用的东西,但仍然不是我想要的。这里的问题主要在于:

  1. 它没有历史/随机游走方面
  2. 这是相当多的代码和调整(如果我想分享样本时间序列,这尤其是个问题)
  3. 我需要重新调整值(正弦波的频率等)以生成另一个相似但不完全相同的时间序列。

[A]:对于那些想知道的人,前两张图片中描绘的时间序列是三天(从午夜到早上 6 点被截断)沿一条道路的两个点的交通强度,单位为每秒汽车(移动汉宁窗平均值)超过 2 分钟)。重采样到 1000 点。

最佳答案

你看过TSimulus了吗? ?通过使用 Generators ,您应该能够生成具有特定模式、周期和周期的数据。

The TSimulus project provides tools for specifying the shape of a time series (general patterns, cycles, importance of the added noise, etc.) and for converting this specification into time series values.


否则,您可以尝试自己“绘制”数据并使用 Time Series Maker 导出这些数据点。 .

关于python - 如何生成嘈杂的模拟时间序列或信号(在 Python 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36286566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com