如何取消缩放缩放后的数据

时间:2019-11-29 20:01:54

标签: r data.table time-series

我正在处理时间序列数据,并且当比例数据遵循滚动窗口时,该模型似乎可以改善10%左右。为了计算滚动比例,我对跟踪函数进行了编码:

library(data.table)
d <- data.table(index = 1:100, x = rnorm(100))

roll_scale <- function(x, n = 3, ...) {

     xout <- frollapply(x, n , FUN = function(z) c( scale(z)[n, 1]), ... )
     return(xout) 
    }
d[, sData := roll_scale(x)]

基于评论how can I use rollapply with scale

在对数据建模之后,我想预测最近的时间点并将结果恢复到原始比例。但是,这似乎比我预期的要复杂。这是我通过DMwR :: unscale进行的尝试:

roll_UNscale <- function(scaled, Ref_values, n = 3, ...) {

  xout <- frollapply(scaled, n , FUN = function(z, Ref_values) {
    c(DMwR::unscale(scaled, scale(Ref_values))[ n,])

    }, ..., Ref_values =  Ref_values)

  return(xout) 
}

d[, roll_UNscale(sData, x)]

我希望你能帮我

1 个答案:

答案 0 :(得分:0)

经过一天的思考,我提出了解决方案。简而言之,我只需要参考向量即可。在这里:

roll_UNscale <- function(scaled, Ref_values, n = 3, align = "right", ...) {

  means <- frollmean(Ref_values, n = n) 
  stds <- frollapply(x = Ref_values, n = n, FUN = sd)
  unscaled <- scaled * stds + means
  return(unscaled) 
}

我希望这可以帮助某人。