使用Matlab自相关和神经网络时,如何处理时间序列数据中的缺口/ NaN?


9

我有一个时间序列的测量值(高度一维序列)。在观察期内,测量过程下降了一些时间点。因此,所得数据是带有NaN的矢量,其中数据中存在间隙。使用MATLAB,这在计算自相关(autocorr)和应用神经网络(nnstart)时给我带来了问题。

这些差距/ NaN应该如何处理?我应该将它们从载体中删除吗?还是将其条目替换为插值?(如果是这样,那么在MATLAB中如何操作)

Answers:


4

我完全不会触摸数据。将其用于与NaN的自相关:

http://www.mathworks.com/matlabcentral/fileexchange/43840-autocorrelation-and-partial-autocorrelation-with-nans/content/nanautocorr.m

“不接触数据”是指不删除任何数据或时间步长或将其替换为0或均值,这将损害有关特定时滞线性相关性的信息。如果您对“ SAMPLE”自相关感兴趣,我也将避免模拟间隙中的值,无论如何,即使最好的模拟技术也不会基于数据本身添加任何有关自相关的信息。我部分编码了matlab(上面的链接)自相关和部分自相关函数以处理NaN:计算中不包括NaN在内的任何数据对。这是针对每个滞后完成的。它为我工作。任何建议都可以接受。


@Fabio欢迎您:请您进一步解释一下“不接触数据”的含义吗?您是说不删除任何东西吗?这也将有助于介绍您链接到的内容,并解释为什么这对OP有所帮助。
Momo 2013年

您好Momo,感谢您的评论。“不接触数据”是指不删除任何数据或时间步长或将其替换为0或均值,这将损害有关特定时滞线性相关性的信息。我部分编码了matlab(上面的链接)自相关和部分自相关函数以处理NaN:计算中不包括NaN在内的任何数据对。这是针对每个滞后完成的。它为我工作。任何建议都可以接受。
法比奥

3

有一些算法可以避免丢失值,因此首选解决方案是寻找它们(例如,acf用于自相关的R )。

一般而言,方法是要么丢弃缺少观察值的数据(可能会非常痛苦),要么只是推算它们的值-邻居的均值对于平滑序列和小间隙可能就足够了,但是当然还有大量其他更强大的方法,包括样条,随机/最频繁值,模型插补等。


2
带有缺失值的acf以常规方式计算,但是缺失值在总和中“跳过”(也就是说,给定滞后的acf公式看起来像是总和除以总和,在每个总和中,缺失值都可以被跳过)。这与从原始数据中删除丢失的值不同。Matlab的问题是它不会跳过NaN,并且在计算中包括将所有内容转换为NaN。
2013年

1

使用干预检测可利用有用的ARIMA结构以及任何本地时间趋势和/或水平移动来估算丢失的价位。


1

这里有两个问题。首先是为您在matlab中的自相关答案提供有意义的数值框架。为此,您需要扩展和/或修补数据向量的时间序列部分...问题的这一“数据完整性”部分是最基本的。

其次,您需要确定如何处理向量的“值”成分...这在很大程度上取决于特定应用程序的最佳假设(例如,较小的丢失的时间戳和相应的NaN)或可以从邻居的位置安全地插入Null ...在较大的间隙中,将值设置为零可能更安全...或按照上面的建议进行插补-显然,这是有意义的,间隙也必须相对较小。) 。

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.