时间序列分析 - ARMA/ARIMA参数估计及模型预测

2024-02-16 01:38

本文主要是介绍时间序列分析 - ARMA/ARIMA参数估计及模型预测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

整体处理流程如下:

                                                  

【平稳化处理】

根据ADF单位根检验看序列是否平稳,对于非平稳序列可以进行差分,对数等等。

对于得到的平稳序列需要检测是否为白噪声,如果是就没有必要再分析了。

 

【白噪声检验】

1)由于白噪声序列期望为0,方差固定。因此会在y=0上下小幅波动,比如:

2) 白噪声仅与自己相关,任何lag时差的序列之间自相关值应该近似为0或者落在95%的置信区间以内,比如:

3) Ljung-Box Q统计量检验

p值小于5%,序列为非白噪声。

 

【自相关函数ACF与偏相关函数PACF】

假设时间序列在t时刻为Xt,在s时刻为Xs, 并且t-s=k

自相关函数ACF即为自相关系数:

\rho (k)=\rho (t,s)=\frac{\gamma(t,s)}{\sqrt{Variance(Xt)Variance(Xs)}}=\frac{\gamma (t,s)}{\sqrt{​{\sigma_{t}^{2}{\sigma_{s}^{2}}}}}

其中\gamma(t,s)=Covariance(Xt,Xs)=E[(Xt-\bar{Xt})(Xs-\bar{Xs})]=\gamma (k) 为自协方差。

对于平稳时间序列,方差恒定,上述公式可以写成:

\rho (k)=\frac{\gamma (k)}{\sigma ^{2}}

偏自相关函数则是考虑了时刻t与t-k之间的所有中间时刻时间序列的影响,用公式表示为:

\frac{Covariance(X_{t},X_{s}|X_{t-1},X_{t-2},...,X_{t-k+1})}{\sqrt{Variance(X_{t}|X_{t-1},X_{t-2},...,X_{t-k+1})Variance(X_{s}|X_{t-1},X_{t-2},...,X_{t-k+1})}}

分母为时刻t与s的条件自协方差,分子根号内为时刻t与s各自的条件方差。

 

【ARMA模型p,q定阶:截尾与拖尾】

截尾是指时间序列的自相关函数(ACF)或偏自相关函数(PACF)在某阶后均为0的性质(比如AR的PACF);不同于拖尾,拖尾是ACF或PACF并不在某阶后均为0的性质(比如AR的ACF)。

比如:

 

如何判断拖尾和截尾:

(1)如果样本自相关系数(或偏自相关系数)在最初的q阶明显大于2倍标准差范围,而后几乎95%的样本自相关(偏自相关)系数都落在2倍标准差范围以内,而且由非零自相关(偏自相关)系数衰减为小值波动的过程非常突然,这时,通常视为自相关(偏自相关)系数截尾。

(2)如果有超过5%的样本相关系数落在2倍标准差范围以外,或者是由显著非零的相关函数衰减为小值波动的过程比较缓慢或者非常连续,这时,通常视为相关系数不截尾。

根据序列的自相关函数和偏自相关函数的特征可以初步判断模型类型,如下表:

自相关函数(ACF)偏自相关函数(PACF)选择模型
拖尾p阶截尾AR(p)
q阶截尾拖尾MA(q)
p阶拖尾q阶拖尾ARMA(p,q)

 

【模型参数估计】

可以使用最小二乘或者极大似然估计法进行参数拟合。

 

【模型检验】

残差分析

残差是指实际观察值与估计值(拟合值)之间的差。如果模型足够准确,残差应该为白噪声,关于白噪声的检验方式可以看文初的论述。

 

【模型优化】

经过模型检验可能会得到若干个模型,为了避免过拟合,从中选择最好的一个,选择的准则可以是AIC或者BIC。

AIC (Akaike information criterion,赤池信息量) 可以表示为:

AIC=2k-2ln(L)

其中:k是参数的数量,L是似然函数。假设条件是模型的误差服从独立正态分布。

让n为观察数,SSR(SUM SQAURE OF RESIDUE)为残差平方和,那么AIC变为: AIC=2k+nln(SSR/n)

优先考虑的模型应是AIC值最小的那一个,即拟合数据的同时减少参数,以避免过拟合。

 

BIC (Bayesian information criterion, 贝叶斯信息准则),可以表示为:

 {\displaystyle \mathrm {BIC} =\ln(n)k-2\ln({\widehat {L}}).\ }

其中:

  • {\displaystyle {\hat {L}}=p(x\mid {\widehat {\theta }},M)}是模型M的极大释然估计,{\displaystyle {\widehat {\theta }}} 极大释然估计对应的参数;
  • x是观测样本;
  • n是观测样本数;
  • k 是模型的参数个数。

 

【模型预测】

根据最终模型来预测未来的数据。

 

 

参考:

https://blog.csdn.net/dingming001/article/details/73554949/

https://newonlinecourses.science.psu.edu/stat510/node/62/

https://en.wikipedia.org/wiki/Box%E2%80%93Jenkins_method

https://www.jianshu.com/p/124010e961e4

http://www.atyun.com/4462.html

 

 

这篇关于时间序列分析 - ARMA/ARIMA参数估计及模型预测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/713136

相关文章

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,