【问题标题】:How to unscale rolled scaled data如何取消缩放滚动缩放的数据
【发布时间】:2020-03-25 09:11:49
【问题描述】:

我正在处理时间序列数据,当比例数据遵循滚动窗口时,模型似乎改进了 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)]

希望你能帮我一把

【问题讨论】:

    标签: r data.table time-series


    【解决方案1】:

    经过一天的思考,我想出了解决方案。简而言之,我需要滚动的只是参考向量。这里是:

    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) 
    }
    

    我希望这可以帮助某人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-23
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      • 2017-12-23
      • 2018-06-15
      相关资源
      最近更新 更多