移动平均中的R变化期间(Moving average with changing period in

2019-10-20 09:56发布

我有我正在做使用移动平均数据帧名为abc的rollapply 。 下面的代码工作:

forecast <- rollapply(abc, width=12, FUN=mean, align = "right", fill=NA)

现在,我想要做的宽度是可变的,即对于第一个月同样的事情,这将是空的,第二个月,第一个月的价值会来。 对于第三个月,这将是(第一月+第二月/ 2),即,对于第i个月,如果i<=12 ,则该值将是(sum(1:i-1)/(i-1))以及用于i>=12这将是过去12个月的平均由进行forecast 。 请帮忙。

Answer 1:

下面是一些appraoches:

1)局部= TRUE

n <- length(x)
c(NA, rollapplyr(x, 12, mean, partial = TRUE)[-n])

注意在年底将R rollapplyr

2)宽度列表中的width的参数rollapply可以是一个列表,使得第i个列表元素是偏移的矢量使用第i轧制计算。 如果我们指定跑出矢量的末端部分= TRUE则偏移将被忽略。 如果我们只在列表中指定一个元素也将被回收利用:

rollapply(x, list(-seq(12)), mean, partial = TRUE, fill = NA)

2A),而不是回收,并根据partial我们可以把它写出来的。 在这里,我们希望width <- list(numeric(0), -1, -(1:2), -(1:3), ..., -(1:12), ..., -(1:12))其可以这样来计算:

width <- lapply(seq_along(x), function(x) -seq_len(min(12, x-1)))
rollapply(x, width, mean)

这其中将主要感兴趣,如果你想稍微修改的规范,因为它是非常灵活的。

注:后来在评论海报要求,除了它不被滞后于相同的滚动平均值。 这将只是:

rollapplyr(x, 12, mean, partial = TRUE)

注意在年底将R rollapplyr

更新一些改进和额外的解决方案。



文章来源: Moving average with changing period in R