R 中的 Croston 方法 vs. Croston 手工

Croston method in R vs. Croston by hand

我无法理解如何在 R 包 forecast::croston 和 tsintermittent::crost 中计算预测。我理解 croston 的概念,例如此处发布的示例 (www.robjhyndman.com/papers/MASE.xls),但 R 包的输出产生非常不同的结果。

我在以下代码中使用了 Excel 示例(由 R. Hyndman 编写)中的值:

library (tsintermittent)
library (forecast)
x=c(0,1,0,11,0,0,0,0,2,0,6,3,0,0,0,0,0,7,0,0,0,0) # from Hyndman Excel example
x_crost = crost(x,h=5, w=0.1, init = c(1,1) ) # from the tsintermittent package
x_croston=croston(x,h=5, alpha = 0.1) # from the forecast package
x_croston$fitted
y=data.frame(x,x_crost$frc.in,x_croston$fitted)
y
plot(x_croston)
lines(x_croston$fitted, col="blue")
lines(x_crost$frc.in,col="red")
x_crost$initial
x_crost$frc.out # forecast
x_croston$mean # forecast

Excel 示例中的预测为 1.36,crost 给出 1.58,croston 给出 1.15。为什么它们不一样?另请注意,样本内(拟合)值非常不同。

对于 tsintermittent 包中的 crost 你需要第二个标志来不优化初始值:init.opt=FALSE,所以命令应该是:

crost(x,w=0.1,init=c(2,2),init.opt=FALSE)

仅设置 init=c(2,2) 将仅设置优化器工作的初始值。 另请注意,Rob Hyndman 在他的示例中的时间序列在开头有两个附加值(参见 B 列),因此 x 应该是:

x=c(0,2,0,1,0,11,0,0,0,0,2,0,6,3,0,0,0,0,0,7,0,0,0,0)

运行 这两个命令产生与 excel 示例中相同的值。