《数据分析与挖掘实战》总结及代码练习---chap5 挖掘建模---5.4 时序模型:

目录

5.4 时序模型:

时间序列的预处理:   

纯随机序列(白噪声序列):

平稳非白噪声序列:

非平稳序列:

平稳时间序列的定义:

平稳性检验

平稳时间序列分析:

AR模型:

MA模型: MA(q) q阶自回归模型

ARMA模型:

平稳时间建模:

python主要时序模型算法


5.4 时序模型:

餐饮业销售和生产同时,需要预测销售,防止产品滞销或者备料不足,以做到按·减小库存降低物流成本,生产准时

餐饮:基于时间序列的短期数据预测,{Xt,t=1,2,3,…n},序列长度为n的观察值序列

模型

描述

平滑法

趋势分析和预测,利用技术,削弱短期随机波动对于数据的影响,使得序列平滑化。方法:移动平滑法,指数平滑法

趋势拟合法

将时间作为自变量,相应的序列观察值作为因变量,建立回归模型,根据序列的特征,可分为线性拟合和曲线拟合

组合模型

时间序列的变化主要受长期趋势(T),季节变动(S),周期变动(C),不规则变动(epsilon)4个因素影响,根据序列的特点,可构建加法模型和乘法模型

xt=Tt+St+Ct+epsilon_t

AR模型

xt=k0+k1x(t-1)+k2*x(t-2)+k3*x(t-3)+…+kp*x(t-p)

前p个观测值作为序列自变量,随机变量Xt的取值xt为因变量建立线性回归模型

MA模型

随机变量Xt的取值xt与前p期的序列值无关,而与前p期的随机扰动有关,建立线性回归模型

xt=μ+εt+theta1*εt-1+theta2*εt-2+。。。。+theta_p*εt-p

ARMA模型

结合AR和MA模型,xt=k0+k1x(t-1)+k2*x(t-2)+k3*x(t-3)+…+kp*x(t-p)+ μ+εt+theta1*εt-1+theta2*εt-2+。。。。+theta_p*εt-p

 

ARIMA模型

许多非平稳序列差分后会显示出平稳序列的性质,称这个非平稳序列为差分平稳序列,对于差分平稳序列可以使用ARIMA模型进行拟合

ARCH模型

准确模拟时间序列变量的波动性情况,适用于序列具有异方差性 并且 异方差函数短期自相关

GARCH模型 及其 衍生模型

广义ARCH模型,更能反映实际时间序列的长期记忆行,信息非对称性等性质。

 

时间序列的预处理:

拿到随机序列后,首先要对他的随机性平稳性进行检验。不同的检验结果,分为不同的类型,采取不同的分析方法。

   

纯随机序列(白噪声序列)

序列的各项之间没有任何相关关系,序列再进行完全无序的随机波动,可以终止对该序列的分析

平稳非白噪声序列

         均值与方差是常数

已经有一套非常成熟的平稳序列建模方法。通常建立线性模型来拟合该序列的发展,借此提取序列的有用信息,ARMA模型最常用的平稳序列分析模型

非平稳序列:

均值方差并不稳定,处理:转换为平稳序列,然后应用有关平稳序列分析的方法,如建立ARMA模型来进行相应的研究。如果一个序列经过差分处理后变为平稳序列,差分平稳序列,应用ARIMA模型

平稳性检验:

平稳时间序列的定义:

随机变量{X},计算其均值与方差,对于X,Y,计算X,Y之间的协方差cov(X,Y)=E[(X-EX)(Y-EY)],和自相关系数,这两个参数度量了两个不同时间之间的影响程度

计算Xt和Xs之间的自协方差和自相关系数,衡量了同一事件不同时期的相关程度,也就是过去的行为对现在的影响,

如果时间序列{Xt}在某一常数值附近波动而且范围有限,有常数均值常数方差,并且延迟k期的序列的自协方差和自相关系数 是相等的 ,或者延迟K期的影响程度是一场的,则称为平稳序列

平稳性检验

  • 时序图:

   均值方差均为常数

   时序图应该在某一个常数范围波动,范围有界

   如果有明显的趋势和周期性,则不是平稳序列

  • 自相关图检验:

           平稳序列具有短期相关性,通常只有近期的序列值对现时的值有影响,间隔远的过去值对现时值的影响较小,随着延迟期数k的增加,平稳序列的自相关系数会较快衰减到0,并在0值附近随机波动

非平稳序列的自相关系数的衰减速度比较慢。

  • 单位根检验

属于统计量检验法。如果序列中存在单位根,就是非平稳时间序列

  • 纯随机检验(白噪声检验)

理论上:序列值之间没有任何关系

实际的纯随机序列的自相关函数不会为0,很接近0,并在0周围随机波动。

构造统计量来检验序列的纯随机性,Q统计量,LB统计量,样本的各延迟期数 的自相关系数计算得到的检验统计量(Q统计量,LB统计量),然后计算P值,如果p值显著大于显著性水平alpha,表示不能拒绝纯随机的原假设,可以停止对该序列的分析。

 

 

平稳时间序列分析:

  • AR模型:

   AR(P):  p阶自回归模型

  • 性质:

均值:      E(xt)=E(φ0+φ1*x(t-1)+….+φp*x(t-p)+εt) =μ

                     μ=φ0/(1-φ1-φ2-…-φp)

方差:  AR(p)方差有界,等于常数

自相关系数(ACF

       ρ(t,t-k)=cov(Xt,X(t-k))/[sigma(t)sigma(t-k)]

随着k的增大呈指数衰减,始终有非0值,不会在k待遇某个值之后恒等于0,ρk具有拖尾性。

偏自相关系数(PACF):       平稳AR(p)模型,延迟k期的自相关函数,实际上并不是Xt与X(t-k)之间单纯的相关关系,Xt会同时受到X(t-1),X(t-2), … 等的影响,所以自相关系数中参杂了其他变量的影响。为了单纯测度X(t-k) 对于X(t)的影响,引进偏相关系数概念

           平稳AR(p)模型的 偏自相关系数 具有P阶结尾性

           此性质同前面的自相关系数的拖尾性 是 AR(p) 模型的重要识别依据

均值

常数均值

方差

常数

自相关系数

拖尾

偏自相关系数

P阶结尾性
  • MA模型: MA(q) q阶自回归模型

随机变量Xt的取值xt与前p期的序列值无关,而与前p期的随机扰动有关,建立线性回归模型

xt=μ+εt+theta1*εt-1+theta2*εt-2+。。。。+theta_p*εt-p

  

均值

常数均值

方差

常数

自相关系数

q阶截尾

偏自相关系数

拖尾

  • ARMA模型:

结合AR和MA模型,xt=k0+k1x(t-1)+k2*x(t-2)+k3*x(t-3)+…+kp*x(t-p)+ μ+εt+theta1*εt-1+theta2*εt-2+。。。。+theta_p*εt-p

 

均值

常数均值

方差

常数

自相关系数

拖尾

偏自相关系数

拖尾

平稳时间建模:

      

   某个时间序列经过预处理,被判定为 平稳非白噪声序列,可以利用ARMA模型进行建模。

  1. 计算ACF和PACF。先计算非平稳白噪声序列的自相关系数(ACF)和偏自相关系数(PACF)
  2. 计算 自相关系数 和 偏自相关系数,再由AR(P),MA(q),ARMA(p,q)  自相关系数 偏自相关系数的性质,选择合适的模型。
  3. 估计模型中的未知参数,并进行检验
  4. 优化模型
  5. 模型应用:预测未来走势,短期预测

非平稳时间序列分析

自然界 更多的是 非平稳的时间序列(更多 更普遍 更加重要,分析方法也更多一些)。

确定性因素分解的时序分析

         长期走势,季节变动,循环变动,随机波动   à 综合影响

         随机波动 造成的影响 难以提取,难以确定和分析,模型拟合精度不够

随机时序分析

         弥补了确定性因素分解分析的不足。

模型:

ARIMA模型
残差自回归模型
季节模型
异方差模型
    1.    差分运算
    1阶差分运算:相聚一期的两个序列值之间的减法运算
    K步差分运算: 相距k期的两个序列值之间的减法运算
    2.    ARIMA模型:
    差分运算与ARMA模型的融合

 

 

案例:

         平稳性检验 单调递增,非平稳序列,自相关显示  相关系数长期大于0,序列具有长期相关性;单位根检验统计量 对应的p值显著大于.05,最终将该序列判断为非平稳序列

         对非平稳序列做一阶差分,进行平稳性和白噪声检验:

         均值附近平稳波动,自相关系数哟很强的短期相关性,序列是 平稳白噪声序列

对差分后的平稳白噪声序列 应用ARMA 模型,定阶确定(p,q),计算ARMA(p,q),p,q均小于等于3,的所有 组合的BIC信息量,取其中BIC信息量最小的的模型阶数。

         模型检验,残差为白噪声序列,p值为:.627

         参数检验 参数估计

         预测

 

python主要时序模型算法

函数名

功能

所属工具箱

acf()

计算自相关函数

statsmodels.tsa.stattools

plot_acf()

绘制自相关函数

statsmodels.graphics.tsaplots

pacf()

计算偏相关函数

statsmodels.tsa.stattools

plot_pacf()

画偏相关函数

statsmodels.graphics.tsaplots

adfuller()

对观测值序列进行单位根检测

statsmodels.tsa.stattools

diff()

对观测值序列进行查分计算

pandas自带方法

ARIMA()

创建ARIMA模型

statsmodels.tsa.arima_model

summary() or  summaty2

给出一份ARIMA模型报告

ARIMA模型自带方法

aic/bic/hqic

计算ARIMA模型的AIC/BIC/HQIC指标

ARIMA方法自带方法

forecast()

应用构建的时序模型进行预测

ARIMA方法自带方法

acorr_ljungbox()

Ljung-Box检测,检测是否为白噪声

statsmodels.stats.diagnostic

 

acf()

计算自相关函数

statsmodels.tsa.stattools

使用格式:

autoarr=acf(data,unbiased=False,nlags=40,qstat=False,fft=False,alpha=None)

data是观测序列(时间序列,可以使dataframe或者series),返回参数autocorr为观测值自相关函数,其余 为可选参数,qstat=True 同时返回Q统计量和对应p值

plot_acf()

绘制自相关函数

statsmodels.graphics.tsaplots

返回matplotlib对象,可以.show()来进行显示

pacf()

计算偏相关函数

statsmodels.tsa.stattools

计算自相关函数,同acf()

pacf()

计算偏相关函数

statsmodels.tsa.stattools

同pacf()

adfuller()

对观测值序列进行单位根检测

statsmodels.tsa.stattools

对观测值序列进行单位根检验(ADF test)

h=adfuller(series,maxlag=None,regression=’c’,autolag=’AIC’,store=False,regresults=False)

输入series为一维的观测序列值,返回值依次为adf,pvalue,usedlag,nobs,critical values,icbest,regresults,resstore

diff()

对观测值序列进行查分计算

pandas自带方法

功能:对序列值进行差分运算

D.diff()   DataFrame or Series 格式均可

ARIMA()

创建ARIMA模型

statsmodels.tsa.arima_model

设置时序模型的建模参数,创建ARIMA模型

arima=ARIMA(data,(p,1,q)).fit()

data是时间序列,p,q是对应的阶数,d为差分次数

summary() or  summaty2

给出一份ARIMA模型报告

ARIMA模型自带方法

arima已经建好模型,返回一份格式化的报告,包含模型的系数,标准误差,p值,AIC和BIC等详细指标

 

aic/bic/hqic

计算ARIMA模型的AIC/BIC/HQIC指标

ARIMA方法自带方法

 

 

 

forecast()

应用构建的时序模型进行预测

ARIMA方法自带方法

a,b,c=arima.forecast(num)

num是要预测的天数,a是预测值,b是预测误差,c为预测置信区间

 

acorr_ljungbox()

Ljung-Box检测,检测是否为白噪声

statsmodels.stats.diagnostic

检测是否为白噪声序列,

acorr_ljungbox(data,lags=1)

lags是滞后数,返回统计量和p值


 
 
 

你可能感兴趣的:(Python数据分析)