测试以区分周期性数据和几乎周期性数据

机器算法验证 时间序列 假设检验 精确检验
2022-03-19 08:56:46

假设我有一些具有域,我知道它可以满足一些合理的条件,例如连续性。我知道f的确切值(因为数据来自模拟)在一些等距采样点t_i=t_0 + iΔt与i∈ \{1,…,n\},我可以假设它足够精细以捕获所有f的相关方面,例如,我可以假设在两个采样点之间最多有一个f的局部极值。我正在寻找一个测试来告诉我我的数据是否符合f是完全周期性的,即∃τ: f(t+τ)=f(t) \,∀\,tffti=t0+iΔti{1,,n}fffτ:f(t+τ)=f(t)t,周期长度有点合理,例如Δt<τ<n·Δt(但可以想象,如果需要,我可以做出更强的约束)。

从另一个角度来看,我有数据x0,,xn并且正在寻找一个测试来回答是否存在周期性函数f(满足上述条件)使得f(ti)=xii的问题。

重要的一点是f至少非常接近周期性(例如f(t):=sin(g(t)·t)f(t):=g(t)·sin(t)g(t)g(t0)/Δt ) 的程度,只要稍微改变一个数据点就足以使数据符合f的精确周期性。因此,用于频率分析的标准工具(例如傅里叶变换或分析过零)将无济于事。

请注意,我正在寻找的测试可能不是概率性的。

我有一些想法如何自己设计这样的测试,但想避免重新发明轮子。所以我正在寻找一个现有的测试。

3个回答

正如我所说,我有一个想法如何做到这一点,我意识到,完善并写了一篇论文,现在发表:Chaos 25, 113106 (2015)preprint on ArXiv

调查的标准几乎与问题中概述的相同:给定数据在时间点采样,测试决定是否存在函数和 a使得:x1,,xnt0,t0+Δt,,t0+nΔtf:[t0,t0+Δt]τ[2Δt,(n1)Δt]

  • f(t0+iΔt)=xii{1,,n}
  • f(t+τ)=f(t)t[t0,t0+Δtτ]
  • f没有比序列的开头和结尾的最多一个极值xf

可以修改测试以解决小误差,例如模拟方法的数值误差。

我希望我的论文也能回答我为什么对这样的测试感兴趣。

使用离散傅里叶变换 (DFT)将数据转换为频域。如果数据是完全周期性的,则恰好有一个频率区间具有高值,而其他区间将为零(或接近零,参见频谱泄漏)。

请注意,频率分辨率由因此,这设置了检测精度的限制。sampling frequencyNumber of samples

如果你知道实际的周期信号,计算

difference=|theoretical datameasured data|

的元素求和如果它高于阈值(考虑浮点运算的错误),则数据不是周期性的。difference