【发布时间】:2021-05-26 05:31:18
【问题描述】:
我正在对时间趋势进行去季节化处理,我意识到 data.table 的 frollmean() 和 forecast 的 ma() 产生的结果略有不同,顺序相同(例如:季度数据,n = 4)。起初,我认为 frollmean(n = 4) 和 ma(order = 4) 之间的区别只是因为 ma() 有一个四舍五入的方法。来自文档:
k=(m-1)/2 [m = 顺序]
当指定偶数顺序时,平均观察值将比过去包含更多来自未来的观察值(k 向上取整)。如果 center 为 TRUE,则对来自两个移动平均值(其中 k 分别向上和向下舍入)的值进行平均,使移动平均值居中。
但是,如下所示,即使在平均 frollmean(n = 4) 和 frollmean(n = 5) 时,dif 的差值也非零且始终高于 0(对于此任意时间序列)。这不会发生在奇数顺序(例如:n = 3)。任何想法为什么?
# toy example
set.seed(0)
dt = data.table(x = 1:100 + 10*rnorm(100))
dt[, fm4 := frollmean(x = x, n = 4, align = "center")]
dt[, fm5 := frollmean(x = x, n = 5, align = "center")]
dt[, fm4p5 := .5 * (fm4 + fm5)]
dt[, ma4 := ma(x = x, order = 4, centre = TRUE)]
dt[, dif := fm4p5 - ma4]
plot(dt[["dif"]])
mean(dt[["dif"]], na.rm = TRUE)
【问题讨论】:
标签: r data.table forecast