时间序列分析 - 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

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

MySQL中DATE_FORMAT时间函数的使用小结

《MySQL中DATE_FORMAT时间函数的使用小结》本文主要介绍了MySQL中DATE_FORMAT时间函数的使用小结,用于格式化日期/时间字段,可提取年月、统计月份数据、精确到天,对大家的学习或... 目录前言DATE_FORMAT时间函数总结前言mysql可以使用DATE_FORMAT获取日期字段

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl