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(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阶结尾性 |
随机变量Xt的取值xt与前p期的序列值无关,而与前p期的随机扰动有关,建立线性回归模型 xt=μ+εt+theta1*εt-1+theta2*εt-2+。。。。+theta_p*εt-p
均值 |
常数均值 |
方差 |
常数 |
自相关系数 |
q阶截尾 |
偏自相关系数 |
拖尾 |
结合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模型进行建模。
- 计算ACF和PACF。先计算非平稳白噪声序列的自相关系数(ACF)和偏自相关系数(PACF)
- 计算 自相关系数 和 偏自相关系数,再由AR(P),MA(q),ARMA(p,q) 自相关系数 偏自相关系数的性质,选择合适的模型。
- 估计模型中的未知参数,并进行检验
- 优化模型
- 模型应用:预测未来走势,短期预测
非平稳时间序列分析: 自然界 更多的是 非平稳的时间序列(更多 更普遍 更加重要,分析方法也更多一些)。 确定性因素分解的时序分析: 长期走势,季节变动,循环变动,随机波动 à 综合影响 随机波动 造成的影响 难以提取,难以确定和分析,模型拟合精度不够 随机时序分析: 弥补了确定性因素分解分析的不足。 模型: 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值 |