时间序列分析-Python实例

作者: 丨像我这样的人丨 | 来源:发表于2018-07-31 21:30 被阅读43次

    常用的时间序列数据的分析两类:

        ·趋势分解法

            简介:将时间序列分解为趋势、周期、随机三部分,并对前两个部分使用曲线进行拟合

            适合场景:适合所有类型的时间序列数据,需要事先判断走势及周期性

        ·ARIMA法

            简介:根据数据扰动项之间的相关性结构构建动态微分方程 以预测模型

            适合场景:适合所有类型时间序列数据,需预先判定AR、I、MA三部分参数

    趋势分解法

        1.时间序列的效应分解

                1)长期趋势变动

                2)周期性/季节性变化

                3)随机变化

        2.时间序列的组合方式

               1)加法模型:X(t) = T(t)+S(t)+I(t)

                    其中T代表趋势效应 S代表季节效应 I代表随机效应

               2)乘法模型:X(t) = T(t) × S(t) × I(t)

                    周期震荡的幅度随着趋势性变化而变化    

        3.python实例预测效果-以某航运公司客运量数据为例

               加法模型

    加法模型 (黑点为实际Y值)

            乘法模型

    乘法模型 (黑点为实际Y值)

    ARIMA法  

        1.平稳时间序列

                只有平稳时间序列才能进行统计分析 何谓平稳

                任意时间下 序列的均值、方差存在并为常数 且自协方差函数与自相关系数只与时间间隔有关  说简单点就是 围绕某个常数上下波动

                AR模型

                    观点:时间序列当期观测值与前N期线性相关 而与前N+1无关

                    数学语言:X(t)仅与X(t-1),X(t-2),···,X(t-n)有线性关系,而X(t)与X(t-j) (j=n+1,n+2,···)无关

                    参数判别:自相关系数(ACF)拖尾、偏自相关系数(PACF)p阶截尾

                MA模型

                    观点:当期观测值与以前时刻进入系统的扰动项存在一定的相关关系

                    数学语言:X(t)与以前时刻t-1,t-2,···t-m进入系统的扰动项ε (t-1),ε (t-2),···,ε (t-m)存在线性关系

                    参数判别:自相关系数(ACF)q阶截尾、偏自相关系数(PACF)拖尾

                ARMA模型

                    观点:X(t)不仅与其以前的自身值有关,还与以前时刻进入系统的扰动项有关

                    参数判别:自相关系数(ACF)拖尾、偏自相关系数(PACF)拖尾

                    存疑点:

                        教科书的定义 问题来了 都拖尾了 还怎么定p、q参数值?

                        肉眼观察?总有那么几分不靠谱

                        可使用AIC和BIC定阶识别 实测貌似拟合的效果也一般

                ARIMA模型

                        对非平稳时间序列使用差分(I),使非平稳时间序列转换为平稳序列    

                        之后套路相同

    Python实例分析

       Github 源码在此

        趋势分解法

                主要使用Prophet包

                代码也很简单

                加了个小彩蛋 预测上证指数

                至于效果嘛 hhh

        ARIMA法

                建模分5步

                    1)探索平稳性:ADF检验 若非平稳 则差分至平稳

                    2)绘制ACF和PACF 定阶

                    3)模型建模

                    4)残差白噪声检验

                    5)预测

           在绘制ACF和PACF来定阶 也可以采用AIC或BIC准则来识别 统计量越小越好 

           代码实例中也给出了AIC准则判别参数

            ARIMA还有自动调参的包-“pyramid-arima” 可以自动调参 不过有时候参数与手动识别的参数有出入

            Github 源码在此 (附上彩蛋 预测上证指数)

    总结下

            常用的时间序列就这两种:趋势分解法和ARIMA法 

            学术点的数据预测效果还是不错

            至于工业界真实环境的数据 就有点难说

            还是要需要结合实际业务调整

    相关文章

      网友评论

        本文标题:时间序列分析-Python实例

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