原文:https://otexts.com/fppcn/expsmooth-exercises.html
pigs
序列 — 维多利亚州每月屠宰的猪的数量。
ses()
函数找到 \(\alpha\) 和 \(\ell_0\)的最优值,并生成未来四个月的预测。编写自己的函数来实现简单的指数平滑。该函数应该使用参数 y
(时间序列), alpha
(平滑参数 \(\alpha\))和 level
(初始水平 \(\ell_0\))。它应该返回时间系列中下一个观测值的预测值。它是否给出与 ses()
相同的预测值?
修改上一题你编写的函数,使得返回值变成误差平方和,而不是下一个观测值的预测值。然后使用 optim
函数找到 \(\alpha\) 和 \(\ell_0\) 的最优值。你是否得到了与 ses()
函数相同的值?
结合前面的两个函数来得到一个函数,使得它可以找到 \(\alpha\) 和 \(\ell_0\) 的最优值,并对时间序列中的下一个观测值进行预测。
books
数据集包含了同一家商店的平装书和精装书的每日销量
。任务是预测未来四天
平装书和精装书的销量。
ses()
函数预测每个时间序列,并绘制预测图。paperback
和 hardback
序列,并计算每种情况下的之后四天预测值。ses
和 holt
生成的预测区间。本题中,使用数据集 eggs
,它包含1900–1993年间美国一打鸡蛋的价格。尝试使用 holt()
函数中的各种选项来查看预测值随衰减趋势或Box-Cox变换而变化的情况。尝试直观地观察每个参数对预测有什么影响。
[提示:在调用 holt()
时使用 h=100
,以便在绘制预测图时可以清楚地看到各种选项之间的差异。]
哪个模型有最好的RMSE?
对于同样的零售数据,请尝试对Box-Cox转换后的时间序列进行STL分解,然后在季节性调整后的数据上使用ETS。这与你之前对测试集的最佳预测相比效果如何?
ukcars
,这是从1977年第一季度到2005年第一季度的英国乘用车生产季度数据。
stlf()
函数并设置参数 etsmodel=“AAN”, damped=TRUE
来一步完成。)damped=FALSE
)来对该序列的未来两年进行预测。ets()
为数据选择一个季节性模型。visitors
,即1985年5月至2005年4月澳大利亚短期海外游客月度数据。
tsCV()
函数对时间序列进行交叉验证来比较这五种方法,而不是使用训练集和测试集。你是否得出了相同的结论?下面的 fets()
函数返回ETS预测值。
fets <- function(y, h) {
forecast(ets(y), h = h)
}
应用于 $h=4$ 的预测范围,将ETS和朴素季节性方法应用于
cement数据,(提示:使用新创建的
fets()和现有的
snaive()` 函数作为你的预测函数的参数。)在以下六个时间序列上比较 ets()
, snaive()
和 stlf()
。对于 stlf()
,你可能需要使用Box-Cox转换。使用三年的测试集来决定哪一个给出了最佳预测。
ausbeer
, bricksq
, dole
, a10
, h02
, usmelec
。
在以下系列中使用 ets()
:
bicoal
, chicken
, dole
, usdeaths
, lynx
, ibmclose
, eggs
。
它总是给出好的预测吗?
证明ETS(M,A,M)模型与Holt-Winters乘性模型得到的点预测值相同。
证明ETS(A,N,N)模型的预测误差由下式得出: \[ \sigma^2\left[1+\alpha^2(h-1)\right]. \]
假设误差服从正态分布,已知 \(\ell_T\), \(\alpha\), \(h\) 和 \(\sigma\),写出ETS(A,N,N)模型的95%预测区间。