gpt4 book ai didi

r - data.table 的 frollmean() 和 forecast 的 ma() 之间的细微差别,顺序相同

转载 作者:行者123 更新时间:2023-12-04 15:04:57 25 4
gpt4 key购买 nike

我正在对时间趋势进行去季节化处理,我意识到 data.table 的 frollmean() 和 forecast 的 ma() 产生的结果略有不同,顺序相同 (例如:季度数据,n = 4)。起初,我认为 frollmean(n = 4) 和 ma(order = 4) 之间的区别只是因为 ma() 有一个舍入方法。来自文档:

k=(m-1)/2 [m = order]

When an even order is specified, the observations averaged will include one more observation from the future than the past (k is rounded up). If centre is TRUE, the value from two moving averages (where k is rounded up and down respectively) are averaged, centering the moving average.

但是,如下所示,即使对 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)

最佳答案

我认为这意味着 ma 正在平均两个 4 长度的 rollmeans,一个稍微超前,一个稍微滞后。即

dt[, fm4c := (fm4+shift(fm4))/2]
dt[, sd(fm4c-ma4, na.rm = TRUE)]
#> [1] 5.599379e-15

关于r - data.table 的 frollmean() 和 forecast 的 ma() 之间的细微差别,顺序相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66341700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com