如何将两个时间序列与间隔和不同的时基相关联?


10

我在StackOverflow上提出了这个问题,建议在这里提出。


我有两个时间序列的3D加速度计数据,它们具有不同的时基(时钟在不同的时间开始,在采样时间中有一些非常小的蠕变),并且包含许多不同大小的间隙(由于与写入分开相关的延迟)闪存设备)。

我使用的加速度计是便宜的GCDC X250-2。我正在以最高增益运行加速度计,因此数据的本底噪声很大。

每个时间序列都有大约200万个数据点(以512个样本/秒的速度在一小时内),并且包含大约500个感兴趣的事件,其中典型事件跨越100-150个样本(每个200-300 ms)。这些事件中的许多事件都受到闪存写入期间数据中断的影响。

因此,数据不是原始的,甚至不是非常漂亮。但是我的眼球检查表明它清楚地包含了我感兴趣的信息。(如果需要,我可以发布图表。)

加速度计处于类似的环境中,但耦合程度适中,这意味着我可以通过肉眼分辨出每个加速度计匹配了哪些事件,但是到目前为止,我在软件中还是没有成功。由于物理限制,这些设备还以不同的方向安装,这些位置的轴不匹配,但它们尽可能接近正交。因此,例如,对于3轴加速度计A和B,+ Ax映射到-By(上下),+ Az映射到-Bx(左右),而+ Ay映射到-Bz(前后) 。

我的最初目标是关联垂直轴上的震动事件,尽管我最终希望a)自动发现轴映射,b)关联映射的ace上的活动,以及c)提取两个加速度计之间的行为差​​异(例如扭曲)或弯曲)。

时间序列数据的性质使Python的numpy.correlate()无法使用。我也看过R's Zoo套件,但是并没有取得进展。我曾在信号分析的不同领域寻求帮助,但没有取得任何进展。

有人对我可以做什么或应该研究的方法有任何线索吗?

2011年2月28日更新:此处添加了一些显示数据示例的图表。


1
@BobC,也许其中一位主持人可以将您的帖子迁移到此网站。那将是最合理的。关于您的技术问题,首先,您是否使用FFT进行相关?对于半体面的计算机上的200万个数据点,这应该是可行的。您的信噪比看起来相当高,因此您应该开展业务。快速而简单的削减方法是用最后一个可用样本或零填充丢失的数据。来自采样间隔差异的蠕变可能是要处理的数据中最具挑战性的“特征”。
主教

@cardinal:我确实确实尝试了FFT,结果只是得到了垃圾。数据中容易看到的“有趣”特征与FFT中的噪声没有区别。但是,我只对整个数据集执行了FFT:也许移动窗口FFT会提供更好的结果,但是我还没有找到一种计算有效的方法来实现它。我怀疑小波变换可能会有所帮助,但是我不熟悉它(但是正在慢慢学习中)。
BobC 2011年

1
@BobC,我的意思是,您是否考虑过基于FFT的实现来计算相关性?直接卷积为,但是基于FFT的实现将减少该O n log n ,从而使其可行。至于拥有200万个数据点的FFT本身,您的频率分辨率将非常高。任何采样蠕变和其他杂物都必定会按频率将信号冲洗掉。但是,您应该能够对许多箱进行汇总,以使信号摆脱噪声。诸如Welch方法或自定义窗口技术之类的东西。O(n2)O(nlogn)
主教

@BobC,在我头顶上,似乎可以使用某种重叠加法重叠保存法来执行滑动窗口FFT。在窗口内滑动样本只是一个相移,因此您要做的就是补偿那些“落在”左端的样本和那些“进入”在右端的样本。
主教

嗨,我有一个类似的问题。我有2个时间序列,每个时间序列由一个矩阵表示,其第一列对应于值,第二列对应于时间差(自上一个值以来)如何找到这两个矩阵之间的相关性?我尝试做xcorr2(),但似乎不正确,做xcorr可能只考虑相关值来计算相关性,但我也想考虑一下时间。我真的很困惑,FFT会有所帮助吗?您如何建议我去解决?

Answers:


12

这个问题涉及到计算两个不规则采样的时间序列(一维随机过程)之间的相关性,并使用它来找到最大相关的时间偏移量(它们的“相位差”)。

在时间序列分析中通常不会解决此问题,因为假定时间序列数据是系统地(按固定的时间间隔)收集的。相反,它是地统计学的省,它涉及时间序列的多维概括。原型地统计数据集由不规则间隔位置处的地质样品测量组成。

如果间距不规则,则成对的位置之间的距离会发生变化:两个距离可能都不相同。地统计学经验变异图克服了这个问题。此计算一个“典型”(通常为均值或中值)的值 --the“半方差” - ,其中Ž p 在点表示测量值ppq之间的距离被限制在一个称为“滞后”的间隔内。如果我们假设过程Z(z(p)z(q))2/2z(p)ppqZ是平稳的并且具有协方差,那么半方差的期望等于最大协方差(等于任何p的)减去Z p Z q 之间的协方差。合并到滞后可以解决不规则间距问题。Var(Z(p))pZ(p)Z(q)

(z(p),w(p))zw

拥有200万个点,您应该能够检测到平稳性的微小偏差。两个时间序列之间的相位差也可能会随时间变化。通过针对整个时间间隔中间隔开的不同窗口分别计算交叉变异函数来解决此问题。

O(nk)O(n2)k


ntn=nttnτn=tn+α+βnαβ

ββ

@ whuber,@ BobC,我根据过去处理类似问题的经验进行了半有根据的猜测。我见过的大多数方法都是计算密集型的,无法给人留下深刻的印象。一种尝试可能是通过动态时间扭曲或Ramsay和Silverman称之为曲线配准的方法。我不清楚这两个数据集在该大小数据集上是否可行。
主教

我需要花点时间来解决这个问题。我将从您提到的R包中的示例开始。
BobC 2011年

@BobC,我为时序异步性提供的粗略模型是否接近您所拥有的模型?我认为这是“随机初始偏移量” +“线性误差”,后者是由于两个设备之间的采样间隔中的常数差很小而引起的。然后还有一些其他的小随机错误,例如由于两个不同uC的中断处理所致。
主教
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.