时间序列分析-Python实例

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

    ·趋势分解法

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

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

    ·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实例预测效果-以某航运公司客运量数据为例

           加法模型

时间序列分析-Python实例_第1张图片
加法模型 (黑点为实际Y值)

        乘法模型

时间序列分析-Python实例_第2张图片
乘法模型 (黑点为实际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实例)