【问题标题】:Interpolation in RR中的插值
【发布时间】:2013-07-26 15:18:50
【问题描述】:

我有每小时的时间序列,并希望每 15 分钟插入一次次小时值。线性插值就可以了。但如果有任何方法可以指定高斯、多项式,那就太好了。

例如,如果我有

a

【问题讨论】:

  • 现在你的问题太模糊了,最好的答案可能是谷歌R interpolate timeseries。您需要提出一个可重现的示例,包括代码和数据,以及一个具体的问题。
  • 这感觉更像是一道数学题,而不是 StackOverflow 题。线性插值可以定义为f(x1, y1, x2, y2, xN) = y1 + (xN-x1) * (y2-y1)/(x2-x1),返回xN对应的y值,其中点1位于(x1, y1),点2位于(x2, y2)。

标签: r interpolation


【解决方案1】:

这个怎么样:

b<-xts(c(4.5,7,3.3), order.by=as.POSIXct(c('2013-07-26 0:00', 
                                           '2013-07-26 2:00', 
                                           '2013-07-26 3:00')))
approx(b, n=13)   ,

n 调整为适当的时间间隔?

【讨论】:

    【解决方案2】:

    xts 包中,您可以使用na.approxna.spline

    1. 将时间序列强制转换为 xts 对象
    2. 创建一个以 15 分钟为间隔的新索引
    3. 使用这个新索引创建一个 NULL xts 对象,并与您的对象合并
    4. 使用na.approx 表示线性/常数近似值或na.spline 表示多项式近似值。

    这里有一个完整的例子:

    library(xts)
    set.seed(21)
    ## you create the xts object
    x <- xts(rnorm(10),
             seq(from=as.POSIXct(Sys.Date()),
                 length.out=10,
                 by=as.difftime(1,units='hours')))
    ## new index to be used 
    new.index <- 
      seq(min(index(x)),max(index(x)), by=as.difftime(15,units='mins'))
    ## linear approx
    na.approx(merge(x,xts(NULL,new.index)))
    ## polynomial approx
    na.spline(merge(x,xts(NULL,new.index)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 2012-08-25
      相关资源
      最近更新 更多