笔记说明
在datacamp网站上学习“Time Series with R ”track
“Forecasting Using R”课程 做的对应笔记。
学识有限,错误难免,还请不吝赐教。
学习的课程为“Forecasting Using R”,主要用forecast包。
课程参考教材Forecasting: Principles and Practice
课程中数据可在fpp2包得到
之前做“ARIMA Modeling with R”课程的笔记时有涉及残差分析的相关内容,见时间序列笔记-ARMA模型(二)
预测模型对残差的假设
使用预测模型时,对模型残差进行检查是很重要的。
之前的笔记中提到过,残差(residual)是模型的拟合值(fitted value)与实际观测值之差。
残差应该看起来像白噪声。
关于残差的重要假设:(essential assumptions)
- 残差无自相关性
- 残差均值为0
此外,对于计算预测置信区间来说需要用到的性质:
- 残差方差恒定
- 残差为正态分布
Ljung-Box检验
在进一步介绍残差分析前先介绍一下Ljung-Box检验
Ljung-Box检验检验时间序列是否存在自相关性,可被用来鉴别白噪声。
可以用forecast包的Box.test(data, lag = h, fitdf = 0, type = "Ljung")函数来实行Ljung-Box检验.其中data即为要检验的时间序列数据,h是考虑滞后期为h及h以内的自相关性。
弱Ljung-Box检验结果P值很小,则表明被测序列不是白噪声。
残差分析
在之前的课程笔记中我们是用astsa包中用于建立模型的sarima()函数自带的残差分析图来进行残差分析的,见时间序列笔记-ARMA模型(二)。在目前的课程中则主要用forecast包,我们可以用forecast包中的checkresiduals()函数来对残差的以上假设进行检验。checkresuduals()函数会生成残差分析图和Ljung-Box检验结果:
上一篇笔记中我们用朴素预测法对goog数据(截止2017年2月13日的Google股票每日收盘价数据)进行了简单的建模。下面我们对改模型的残差进行分析:
goog %>% naive() %>% checkresiduals()
这里插一句对介绍一下代码中的管道操作符%>%:它把符号前的对象作为第一个参数传递给符号后的函数。
所以上面的代码等同于:
checkresiduals(naive(goog))
对于这种嵌套多个函数的操作,用%>%写法可以使代码的可读性更强。需要注意的是不要漏掉函数的"()"
运行结果:
Ljung-Box test
data: Residuals from Naive method
Q* = 13.061, df = 10, p-value = 0.2203Model df: 0. Total lags used:10
checkresiduals()的输出结果和之前用astsa包的sarima()函数拟合模型时附带输出的残差分析图的内容差不多。从本例看残差大致符合白噪声的特征。
网友评论