时间序列平台中互相关输出不正确?JMP 社区您好,
(W10、64 位、JMP Pro 15.2.1)
我希望找出我做错了什么,或者我对 JMP 如何在时间序列平台中执行互相关计算的误解。 简而言之,当我比较 Sin(x) 与 Cos(x) 函数的互相关时,我没有得到预期的 pi/2 (或 90 度)答案,我得到 79 度反而。
我正在尝试对时间序列 > 互相关输出对一些同事意味着什么进行简单的解释和描述。 为此,我制作了一个简单的表,其中包含 361 行(值 0-360,每行是度数或 0.01745 弧度)和其他几个计算 Sin(x)、Sin(x-5)、Sin( x-45)、Cos(x) 和随机均匀分布(参见附表Periodic_series.jmp)。 目的是使用简单的三角函数来演示互相关性,人们可以比复杂的时间相关函数(例如 SeriesJ 数据集)更直接地理解三角函数。
如果运行数据表中的第一个脚本,您将获得三角函数的图形(故意省略随机均匀值)。 一切看起来都应该如此。

然后,您可以运行时间序列脚本,其中 Sin(x) 是 Y 输入,其他函数是输入列表列,以便您可以进行互相关分析。 将互相关输出转换为数据表(请参阅 cross-correlation.jmp 数据表),您可以绘制相关值与滞后的关系(运行此数据表中的第一个脚本)。

乍一看,这看起来应该是这样:Sin(x) 与 Sin(x-5) 的互相关峰值接近 -5,Sin(x) 与 Sin(x-45) 看起来接近 -45 ,对于 Sin(x) 和 Cos(x) 来说接近 90。 但是,如果您使用十字准线,您会发现 Sin(x) 和 Cos(x) 之间的互相关性接近 80。

事实上,如果您运行脚本:获取数据表中的滞后,它会在日志窗口中打印出滞后:
“Corr 与 Sin(x-5) 滞后(以度为单位) = [-5]”
“Corr 与 Sin(x-45) 滞后(以度为单位)= [-40]”
“Corr 与 Cos(x) 滞后(以度为单位) = [79]”
“Corr 与 Rondom 统一滞后度 = [18]”
唯一正确计算的是滞后值 -5。 滞后 Sin(x) -45 度会导致滞后 -40,而不是预期的 -45。 同样,对于 Sin(x) 和 Cos(x),滞后为 79,而我预计该值为 90。 我已经尝试了多种不同的方法并使用更多行来查看这是否是“分辨率”问题,但我始终出现 80 左右的滞后。
要么计算没有返回正确的滞后,要么我遗漏了一些东西。我猜我错过了一些东西,但我不确定它是什么。 我遵循了其他帖子中的一些建议,并尝试在 JMP 帮助中阅读它这里,但我找不到任何互相关计算的细节来解释为什么 Sin(x) 的三角函数与 Cos(x) 没有 90 的滞后。
对此的任何想法/反馈都非常感谢。
谢谢!,
DS
高级统计建模质量和工艺工程回复:时间序列平台中互相关的输出不正确?你好@peng_liu ,
感谢您的额外建议。 我会尝试更平滑,看看这是否可以帮助找到合理的时间延迟。 希望我能找到有用的东西。
我担心的是,要么数据在时间上存在噪声并且相关性丢失,要么正如您所提到的,采样/测试方案消除了任何相关性。
我非常感谢您的反馈和意见。
谢谢!,
迪德里希
回复:时间序列平台中互相关的输出不正确?一些想法...
可能没有确切的滞后,并且您的数据有噪音。 例如,有效滞后在一定范围内是随机的。 在计算 CCF 之前,尝试使用简单移动平均线来平滑您的序列。 您可以在时间序列平台中使用简单移动平均线,或在列公式中使用“移动平均线...”。
由于您的采样方案,相关信号可能会被跳过。 那么数据中就没有太多的信息可供您查找滞后。
回复:时间序列平台中互相关的输出不正确?你好@peng_liu ,
感谢您的进一步解释。 我现在明白问题是什么并且这是有道理的。 如果我在时间“窗口”内包含更多周期,我可以确认我得到了正确的值。
现在来说说真正的难题:
我的生产同事希望找到生产历史系统的数据(它记录烤箱温度、传送带速度、流量等)和材料的质量控制测量之间的时间滞后。 生产数据可以以任何给定的间隔(15 分钟、30 分钟、4 小时等)从系统导出。 我们有一个相当定期的 QC 测试计划,每 4 小时进行一次。 据信,如果能够找到正确的时间滞后,则生产历史数据可以与质量控制数据相关联。 例如,生产中的干燥机温度被认为与 QC 测试相关,但 QC 测试可能需要 120 分钟后该材料已经通过干燥机。 我们从实验室规模的研究中知道,某些加工步骤(例如烤箱温度等值)与某些测试结果相关,但事实证明,在生产数据中发现这一点比在实验室中更具挑战性。
我尝试使用时间序列中的互相关来查看是否可以在数据中找到任何类型的滞后,以及手动创建多个滞后列并使用多元平台来查找滞后列和 QC 数据之间的相关性,但我什么也没看到。 当然,任何相关性都可能会从过程中的噪声中消失,但另一种选择是时间序列和多元平台都不是尝试确定正确时间滞后的正确平台。
非常感谢您的反馈和想法/意见,这非常有帮助。
谢谢!,
DS
回复:时间序列平台中互相关的输出不正确?第二组数据有问题。 第二个数据中的 Sin(x) 如下所示:

这就是我的 3601 行的样子:

这就解释了为什么您的 SinX 和 CosX CCF 不会改变。
这里重要的样本量不是观察的数量,而是循环的数量。 原始数据中,只有一个周期。 为了计算CCF,需要移动序列,这会在一个序列中产生缺失值,从而导致样本均值剧烈波动。 如果有很多周期,平均值将保持接近零(真实值)。
如果在真实情况下,只有一个周期的数据,我相信CCF会产生误导,但这是一个数据问题,没有办法解决。
回复:时间序列平台中互相关的输出不正确?你好@peng_liu ,
感谢您的反馈。 我尝试了更多行,但没有尝试那么多。 尽管我了解有限的样本量可能会如何影响计算,但我对它的影响如此之大感到有点惊讶。 我可以想象一个很小的差异,在较小的有限集下可能是 88 或 89,但 12 似乎相当大。 我想我担心的是现实世界中您可能拥有有限的时间序列数据集的情况。
顺便说一句,我还注意到我的 Deg 列中存在一个错误,该错误没有正确说明添加更多行。 公式应该是:

这样,度数数据将始终从 -180 到 180 运行(好吧,由于增量大小,一端或另一端存在微小差异)。
例如,对于现实世界中的有限数据集,也许您有一个设备每秒收集数据仅持续十五分钟。 这只有 900 个数据点。 根据这种情况,人们会得出两个信号滞后 78 的结论,而实际上是 90。 得出信号滞后为 78 的结论是不正确的,并且可能会导致某人开始对数据进行错误分析。 无论
在这种特殊情况下,我们知道真正的滞后是先验的,但在实际情况下,并不总是知道。 我可以想象数据集,其中在不同位置测量相同的事件并且需要确定信号的滞后,但数据集相当有限。 根据互相关函数的工作原理,这可能会导致错误的结论。
有没有办法弥补这一点或计算以考虑有限的数据集? 您是否可以交换一些其他功能列并模拟滞后量以获得滞后的置信区间? 那会是一个什么样的功能柱呢?
如果我使用正确的公式重新进行评估以允许任意数量的行,我仍然得不到正确的答案 - 即使从滞后值转换回度数值。 例如,对于 3601 行(值从 0 到 3600),我得到如下滞后图:

当我运行 Get lags 脚本时,但现在查看将滞后转换回度数的列(下面的公式基于原始表中的 3601 行),我得到:

“Corr 与 Sin(x-5) 滞后(以度为单位)= [-4.89863926687031]”
“Corr vs. Sin(x-5) 滞后 = [-49]”
“Corr 与 Sin(x-45) 滞后(以度为单位)= [-40.2888086642599]”
“Corr vs. Sin(x-45) 滞后 = [-403]”
“Corr 与 Cos(x) 滞后(以度为单位)= [78.4782004998612]”
“Corr 与 Cos(x) 滞后 = [785]”
下面是 Sin(x) 与 Cos(x) 的图,滞后 900 行和 785 行。 可以看出,785 没有处于正确的滞后值,这发生在第 900 行(红色曲线)。

所以,我仍然没有得到正确的价值观。 附上新的数据表。 我仍然有一种预感,我没有做正确的事情——也许某个地方的公式是错误的? 我不明白为什么我没有得到正确的价值观。
谢谢您的帮助!,
DS
回复:时间序列平台中互相关的输出不正确?我认为这是由于样本量有限。 对于 CCF 上的连续点,样本大小相差 1。 我又添加了 3600 行,再次绘制了图,峰值更接近 90,峰值处的振幅也更接近 1。
