美文网首页
时间序列笔记-趋势与去趋势

时间序列笔记-趋势与去趋势

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

    笔记说明

    在datacamp网站上学习“Time Series with R ”track
    “Introduction to Time Series Analysis”课程 做的对应笔记。
    学识有限,错误难免,还请不吝赐教。
    本次笔记主要记录常见的趋势和几个简单的去趋势的方法。

    补充阅读:

    目录

    • 常见的趋势(Trend)
    • 用log变换去除方差随时间增长的趋势
    • 用差分去除线性趋势
    • 用季节差分去除季节性趋势

    常见的趋势(Trend)

    图来自于datacamp课程练习

    A图显示的是周期性趋势;B图显示的是线性趋势;C图显示的是随时间快速增长的趋势;D图显示的是方差随时间增长的趋势。

    用log变换去除方差随时间增长的趋势

    log()函数产生的log变换适用于数值为正的时间序列,它会缩小原数据。原数据越大,缩小的幅度越大。这个特性可用来将方差随时间增大的时间序列的方差变得更稳定。log变换也可以用来将随时间快速增长的趋势转变为线性趋势。
    datacamp练习中给的数据rapid_growth具有随时间快速增长的趋势,方差也随时间增长:



    log变换:

    # Log rapid_growth
    linear_growth <- log(rapid_growth)
      
    # Plot linear_growth using ts.plot()
     ts.plot(linear_growth)
    
    log变换后变为线性趋势,方差也更平稳了

    用差分去除线性趋势

    时间序列z_t的一阶差分就是相邻两个观测的差:diff(z)=z_t-z_{t-1}
    对时间序列进行差分可以去除线性趋势,R中diff()函数即计算时间序列的一阶差分。差分后的序列会比原始序列少一个观测。
    下面对datacamp练习中给的时间序列z进行差分:

    # Generate the first difference of z
    dz <- diff(z)
      
    # Plot dz
    ts.plot(dz)
    
    # View the length of z and dz, respectively
    length(z)
    length(dz)
    

    代码中的length()函数用来查看差分前后序列的观测数。


    差分后去除了线性趋势

    用季节差分去除季节性趋势

    可以用季节差分去除季节性趋势等周期性的趋势。
    diff(..., lag = s)函数能够计算间隔为s的差分。对于按月记录或按季度记录的数据,合适的s值可能是12或4. diff()函数默认的lag值为1。季节差分后的序列会比原始序列少s个观测。
    下面利用季节差分消除datacamp课程练习数据x的周期性趋势:


    # Generate a diff of x with lag = 4. Save this to dx
    dx <- diff(x, lag = 4)
      
    # Plot dx
    ts.plot(dx)  
    
    # View the length of x and dx, respectively 
    length(x)
    length(dx)
    
    季节差分后得到的序列

    相关文章

      网友评论

          本文标题:时间序列笔记-趋势与去趋势

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