如何使用zoo :: rollapply创建`rollscale`实现?

时间:2013-08-27 12:40:16

标签: r zoo

我想实现以下rollscale函数,该函数可以对数据集x进行缩放(居中和规范化,即减去μ并除以sigma),而不是使用全局mu和{{1它们是在滚动窗口中对看到的数据进行计算的。我出来了以下但不知道如何在第三个sigma上定义函数参数,即我如何知道当前位置是什么?

rollapplyr

简单的缩放功能是:

library(zoo)
rollscale <- function(x, k) {
    mu <- rollapplyr(x, k, mean)
    sigma <- rollapplyr(x, k, sd)
    x <- rollapplyr(x, k, function(x) ???)              
}

1 个答案:

答案 0 :(得分:1)

你使这比现在更复杂。您有一个scale功能,并且您希望以滚动方式应用它。这正是rollapply所做的!

scale <- function(x) {
    mu <- mean(x)
    sigma <- sd(x)
    x <- (x - mu)/sigma         
}
scaled.data <- rollapplyr(Data, 5, scale)