美文网首页
时间序列笔记-残差分析

时间序列笔记-残差分析

作者: 新云旧雨 | 来源:发表于2019-08-07 08:24 被阅读0次

    笔记说明

    在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.2203

    Model df: 0. Total lags used:10

    checkresiduals()的输出结果和之前用astsa包的sarima()函数拟合模型时附带输出的残差分析图的内容差不多。从本例看残差大致符合白噪声的特征。

    相关文章

      网友评论

          本文标题:时间序列笔记-残差分析

          本文链接:https://www.haomeiwen.com/subject/erjidctx.html