【发布时间】:2023-03-07 03:42:02
【问题描述】:
我经常不得不处理一堆嘈杂的、有些相关的时间序列。有时我需要一些模拟数据来测试我的代码,或者为 Stack Overflow 上的问题提供一些示例数据。我通常最终要么从不同的项目加载一些类似的数据集,要么只是添加一些正弦函数和噪声并花一些时间来调整它。
你的方法是什么?您如何生成具有特定规格的噪声信号?我是否忽略了一些完全可以做到这一点的明显标准包?
我通常希望在我的模拟数据中获得的特征:
- 随时间变化的噪音水平
- 信号中的一些历史记录(比如随机游走?)
- 信号的周期性
- 能够生成具有相似(但不完全相同)特征的另一个时间序列
- 可能是一堆奇怪的低谷/高峰/高原
- 能够重现它(一些种子和一些参数?)
我想得到一个类似于下面两个[A]的时间序列:
我通常会使用如下代码创建一个时间序列:
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))
这会导致这样的时间序列:
这是我可以使用的东西,但仍然不是我想要的。这里的问题主要是:
- 它没有历史/随机游走方面
- 这是相当多的代码和调整(如果我想分享一个示例时间序列,这尤其是一个问题)
- 我需要重新调整值(正弦的频率等)以生成另一个相似但不完全相同的时间序列。
[A]:对于那些想知道的人来说,前两张图像中描绘的时间序列是三天内(截断午夜至早上 6 点)沿一条道路的两个点的交通强度(移动汉宁窗平均值)超过 2 分钟)。重采样到 1000 个点。
【问题讨论】:
-
您是否考虑过采用理想的数据集并为其添加一些白噪声?
-
是的,但是我仍然遇到一个问题,即所有实际特征(奇怪的下降/峰值、周期性等)仍然完全相同
-
为了改变周期性,我想将各个部分重新采样到稍微多或少的点是可行的。
-
您有没有想过使用生物数据?检查一下,您冷下载一个大染色体(例如 chr1)或最小的(chr21),然后使用移动平均值计算 %GC 含量。没有什么比高原、局部下降和峰值的随机游走的生物数据更...
-
你找到好的时间序列生成器了吗?我也在寻找这样的java或python库......?
标签: python time-series signal-processing