解释R的croston方法

机器算法验证 r 预测 指数平滑 克罗斯顿法 间歇时间序列
2022-03-11 08:28:13

我正在使用crost()R 的功能来分析和预测间歇性需求/缓慢移动的项目时间序列。我很难理解输出。任何人都可以帮助以外行的方式理解模型。

下面是模型的代码和输出:

v <- c(1910,874,1920,350,160,685,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,0,16,826,0,66,3798,800,1274,638,192,160,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,276,0,0,1072,80,1776,240,80,528,3081,566,1483,112,272,120,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,0,808,0,0,608,0,1480,184)
t <- ts(v, f=52)
x<-crost(t,h=52)
x

我已经阅读了包'tsintermittent'的文档,但仍然没有得到什么是权重、frc.in、frc.out。我想在线程上讨论这个问题,因为我对这种方法完全陌生。

1个回答

请注意,克罗斯顿的方法不会预测具有非零需求的“可能”时期。它假设所有时期都同样可能表现出需求。它通过指数平滑分别平滑需求间间隔和非零需求,但仅在存在非零需求时才更新两者。样本内拟合和点预测本质上是平滑非零需求的比率除以需求间间隔(除非正在进行某种 Syntetos-Boylan 偏差校正)。

x$frc.in样本内需求率这是平均需求的样本内估计值 - 如上所述,这是平滑的非零需求的当前值除以平滑的需求间间隔长度的当前值的比率。如果您仔细观察,您会发现这在需求为零的时期不会改变……因为克罗斯顿的方法仅在需求非零时更新(平滑)其对需求间间隔和非零需求的估计

x$frc.out样本外需求率,即对平均需求的预测。如您所见,它是恒定的,因为 Croston 的方法不提供样本外动态,如趋势或季节性。

x$weights是用于平滑需求间间隔和非零需求分量的优化平滑权重。最初,Croston 仅使用单个(预设)权重进行平滑;Kourentzes 显然分别优化了两个权重。(我不熟悉帮助页面上提供的参考资料——不过,阅读它可能对您有用。)

这是您的时间序列,样本内拟合为红色,预测为绿色:

bar <- crost(t)
plot(t,xlim=c(1,4.1))
lines(ts(bar$frc.in,frequency=52),col="red")
lines(ts(bar$frc.out,frequency=52,start=c(3,49)),col="green")

克罗斯顿

现在,看看你的数据v,克罗斯顿的方法显然是不合适的。尽管您确实有许多零,但您的时间序列在任何有意义的意义上都不是间歇性的。相反,它显然是季节性的,非零需求时期与零需求时期以年度模式交替出现。

我更建议使用一种明确建模这种季节性的方法,比如stlf()forecast包中。它的预测将变为负数,因此您需要将它们截断为零,即将所有负点预测设置为 0。pmax()在这里很有帮助。当然,预测区间从stlf()没有多大意义,因为它们的计算不尊重非负约束,但我假设你最感兴趣的是点预测,无论如何。

例如:

foo <- stlf(t)
foo$mean <- pmax(foo$mean,0)    # truncate at zero
plot(foo)

stlf