【发布时间】:2011-02-17 22:29:24
【问题描述】:
我有一些缺失数据的时间序列数据,我在滚动窗口上运行一些估计函数。窗口的长度不统一,每个变量都有不同的开始日期和结束日期。我想删除任何缺少数据的窗口。窗口重叠,因此一个缺失的观察通常会从考虑中删除大量窗口。我想要的是从每个日期到包含它的窗口的映射。
目前,我有一个逻辑矩阵,其中每一天都有一行,然后每一列代表一个窗口,其中一个窗口在该窗口的日子里具有真实值。然后我可以将该矩阵子集为表示缺失数据的行,并且任何包含任何真实值的列都是无效窗口。问题是逻辑矩阵变得很大(10k x 10k ~100mb)并且可能有很多。我可以转换为解决大小问题的稀疏,但是当窗口很长时,计算要删除哪些窗口变得很慢。
这听起来不像是一个资源密集型问题(内存或计算),有没有更好的方法?
编辑:让我添加一个示例,这样可能会更清楚一点。假设完整的日期范围从 1 到 100。窗口是 1:10、2:11、3:12 等到 91:100(这些是统一的,但对于示例来说无关紧要)。我有一个从 5 到 25 的系列,但有 17 的 NaN。
一个 NaN 会敲掉十个窗口(8:17 到 17:26)。我想要一个从观察 17 到 Windows 8:17 的有效映射。显然,当窗口长度一致时,这很容易,但是当窗口不规则时,有什么有效的方法呢?
【问题讨论】:
-
我不明白。
(date >= begin(i) && data < end(i))有什么问题(或不足)?您需要举例说明您打算如何使用这些信息。 -
@Oli 我添加了一个示例,希望能让事情更清楚。
标签: matlab