美文网首页
时间序列笔记-双指数模型

时间序列笔记-双指数模型

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

    笔记说明

    在datacamp网站上学习“Time Series with R ”track
    “Forecasting Using R”课程 做的对应笔记。
    学识有限,错误难免,还请不吝赐教。
    学习的课程为“Forecasting Using R”,主要用forecast包。
    课程参考教材Forecasting: Principles and Practice
    课程中数据可在fpp2包得到

    双指数模型的理论部分课程中没有做比较详细的解释。实话说我不是很理解双指数模型的公式。。。硬着头皮做这期笔记
    为了做这次笔记我也参考了其他人的简书文章:指数平滑方法简介

    Holt's linear trend

    上次介绍的简单指数平滑只适用于没有长期趋势、没有季节趋势的时间序列。其预测结果是一条水平直线。
    对模型添加趋势成分:
    预测值:\hat y_{t+h|t}=l_t+hb_t
    平滑值:l_t=αy_t+(1-α)(l_{t-1}+b_{t-1})
    斜率b_t控制趋势,由于它随时间变化,所以被称为local lineal trend:b_t=β^*(l_t-l_{t-1})+(1-β^*)b_{t-1}
    β^*控制着斜率b_t的变化速度,β^*很小意味着b_t基本不变。这里用符号β^*是因为以后会用到β

    • 模型有两个平滑参数:α,β^*,取值范围都是0到1
    • 通过最小化SSE来选择α,β^*,l_0,b_0

    Damped trend methods

    Holt's linear trend method 得到的预测结果是一条直线,即认为未来的趋势是固定的。对于短期有趋势、长期趋于稳定的序列,可以引入一个阻尼系数(Damping parameter)Φ,模型变为
    预测值:\hat y_{t+h|t}=l_t+(\phi +\phi ^2 +...+\phi ^h)b_t
    平滑值:l_t=αy_t+(1-α)(l_{t-1}+\phi b_{t-1})
    趋势:b_t=β^*(l_t-l_{t-1})+(1-β^*)\phi b_{t-1}

    • 阻尼系数0<\phi <1
    • \phi=1时即为Holt's linear trend
    • 短期有趋势,长期趋于稳定

    R实现

    在forecast包中,可以用holt(y, damped=FALSE h = , ...)函数实现上面介绍的两种方法。y为数据,h为生成预测值的时间数,damped选项表示是否加阻尼系数,默认为否。
    实例数据:austa数据为1980-2015年间每年到澳大利亚的国际旅客数(以百万为单位)

    #建模并生成预测值
    fc1 <- holt(austa,h=30,PI=F)
    fc2 <- holt(austa,damped=T,h=30,PI=F)
    # plot
    autoplot(austa) + xlab("Year") + ylab("millions") +
    autolayer(fc1, series="Linear trend") +
    autolayer(fc2, series="Damped trend")
    

    代码中的PI=F是取消生成预测值的置信区间
    为了使两个模型的区别更加明显,这里h设为30,实际中不推荐预测这么长时间。
    结果:


    相关文章

      网友评论

          本文标题:时间序列笔记-双指数模型

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