【问题标题】:Using rollapply to process time window -- not fixed sample window for irregular time series使用 rollapply 处理时间窗口——不固定不规则时间序列的样本窗口
【发布时间】:2015-02-02 00:13:33
【问题描述】:

我正在尝试为可能会或可能不会在每个样本窗口记录的各种信号计算时间窗口(想想 20 秒)的各种统计数据。此外,采样间隔不规律——它可能是 2 或 3 或 4 秒。考虑其中 t 是实验经过的秒数,d 是测量值:

require('zoo')

t<- c( 0, 1, 2, 4, 5, 6, 9, 10 )
d<- c( 2, 2, 2, 4, 4, 4, 8, 10 )
z<- zoo(d, t)

现在,如您所见,在 3、7 或 8 秒时没有测量值。我想在 3 秒的窗口中计算类似于最大值的东西。理想情况下,我的输出会是这样的

NA, 2, 2, 4, 4, 4, 8, NA

(我不需要 NA - 只是想让示例清晰。) 尝试:

rollapply( z, 3, max)
 1  2  4  5  6  9 
 2  4  4  4  8 10 

不是我想要的!考虑 t[3] 处的 rollapply 结果。这应该是 2 而不是 4,因为 3 秒时不存在的测量值在窗口中,但 4 秒时的现有测量值不是。它“看起来”像结果只是改变了,但你可以玩弄其他数字并意识到这完全是错误的。

我是动物园的菜鸟,但在信号处理方面经验丰富。似乎无法让它完成我需要的工作。

提前致谢。

【问题讨论】:

  • FWIW,我正在编写一个工具,它允许用户指定数字窗口大小,然后“收集”足够的时间样本来填充该数字宽度,而不仅仅是指定数量的 bin。请继续关注——如果我完成它,它将以rollstat 的形式提交给 CRAN,也可能提交给 github/cellocgw

标签: r time-series zoo rollapply


【解决方案1】:

使用网格g 在缺失点处用 NA 填充系列,然后使用rollapplyr 右对齐窗口(@98​​7654323@ 的默认值是居中对齐):

library(zoo)

g <- seq(start(z), end(z), 1.0)
zz <- merge(z, zoo(, g))
rollapplyr(zz, 3, max, na.rm = TRUE)

给予:

 2  3  4  5  6  7  8  9 10 
 2  2  4  4  4  4  4  8 10 

【讨论】:

    猜你喜欢
    • 2012-05-20
    • 2019-03-14
    • 2017-03-17
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 2018-08-21
    • 1970-01-01
    相关资源
    最近更新 更多