【问题标题】:[R+zoo]: Operations on time series with different temporal resolutions[R+zoo]:对不同时间分辨率的时间序列的操作
【发布时间】:2013-11-14 21:30:58
【问题描述】:

我有两个具有不同时间分辨率的时间序列(传感器数据)。 “xts / zoo”类的时间序列 (TS1) 包括每小时值,而另一个时间序列 (TS2) 具有更好的时间分辨率(每 10 分钟一次观察)。 IE。对于 TS1,我每天有 24 个数据点(观察),对于 TS2,我每天有 144 个数据点。

当我计算一天的TS1-TS2 时,我得到一个包含 24 个数据点的结果(低时间分辨率)。我想要实现的是获得具有 144 个数据点的结果(作为 TS2,更好的时间分辨率)。

有可能在 R 中实现这一点吗?

附注:

这不是一个微不足道的问题,因为在每小时间隔内,我只有一次来自 TS1 的观察结果和 6 个来自 TS2 的观察结果,所以我可以想象,如果在 TS1 的每两个点之间画一条拟合线并计算线与 TS2 的数据点之间的差异。但我知道没有 R 函数可以做到这一点。

【问题讨论】:

    标签: r time-series xts zoo


    【解决方案1】:

    您可以使用na.approx 来近似缺失值,用于线性/常数近似值或 na.spline 用于多项式。

    ## new index to be used 
    new.index <- 
      seq(min(index(TS1)),max(index(TS1)), by=as.difftime(10,units='mins'))
    ## linear approx
    TS1.new  <- na.approx(merge(TS1 ,xts(NULL,new.index)))
    

    现在您可以减去您的 ts,(即使您可能应该检查它们是否具有相同的开始日期)

    TS2-TS1.new 
    

    【讨论】:

    • na.locf 在整个小时内使用相同的值,如果您的应用程序感觉线性插值有问题。 (反过来说,na.spline 试图拟合曲线而不是直线。)
    猜你喜欢
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 2015-01-17
    • 2010-09-08
    相关资源
    最近更新 更多