首页 > 其他分享 >用R语言进行时间序列ARMA模型分析

用R语言进行时间序列ARMA模型分析

时间:2023-05-07 12:44:59浏览次数:31  
标签:偏自 模型 单位根 检验 时间 序列 数据 ARMA

应用时间序列

时间序列分析是一种重要的数据分析方法,应用广泛。以下列举了几个时间序列分析的应用场景:

  1.经济预测:时间序列分析可以用来分析经济数据,预测未来经济趋势和走向。例如,利用历史股市数据和经济指标进行时间序列分析,可以预测未来股市的走向。

  2.交通拥堵预测:时间序列分析可以用来预测交通拥堵情况。例如,根据历史车流量和天气信息,可以建立一个时间序列模型来预测未来某个时间段的路况。

  3.天气预测:时间序列分析可以用于天气预测,例如预测未来几天或几周的降雨量、温度等。这对于农业生产和水资源的管理非常重要。

  4.财务规划:时间序列分析可以用来帮助企业进行财务规划。例如,通过分析历史销售数据,可以预测未来销售额,并制定相应的预算计划。

  5.工业控制:时间序列分析可以用来优化工业生产过程。例如,根据机器运行状态和历史生产数据,可以建立一个时间序列模型来优化生产线的运行,提高生产效率。

以下是数据的具体时间序列分析步骤:

1.导入数据

a=c(12.373,12.871,11.799,8.850,8.070,7.886,6.920,7.593,7.574,8.230,10.347,9.549,7.461,8.159,9.243,9.160,10.683,10.516,9.077,8.104,7.700,8.640 ,8.736 ,9.027 ,9.380 ,9.783 ,9.648, 8.135 ,8.222, 9.155,8.941, 9.682, 10.331, 10.601, 10.693 ,8.311)

2.更改为时间序列型数据

a=ts(a)

3.绘制时序图

时序图是一种用于展示时间序列数据的图表,通常将时间作为X轴,将变量(如销售额、温度等)作为Y轴。时序图可以帮助我们观察和分析时间序列数据的趋势、季节性、周期性以及异常值等。

一个典型的时序图通常包括以下几个元素:

  1-->X轴:表示时间轴,通常根据数据的时间粒度来设置刻度。例如,如果数据是按日收集的,则X轴可能显示日期;如果是按小时收集的,则X轴可能显示小时数。

  2-->Y轴:表示变量的取值范围,通常根据数据的特性来设置刻度。例如,如果数据表示某个产品的销售额,则Y轴可能显示金额数值;如果数据表示温度,则Y轴可能显示摄氏度或华氏度。、

  3-->数据线:表示时间序列数据的变化趋势,通常用一条连续的曲线或折线来表示。数据线的颜色和样式可以根据需要进行调整,以突出重点信息。

  4-->标题和注释:用于说明时序图的含义、数据来源和相关信息。

将时间序列数据可视化成时序图,可以更加直观地观察和分析数据的变化趋势和规律,从而更好地理解数据。

  首先可以绘制线图直接观察数据走势粗略判断平稳性,既无趋势也无周期

1 #时序图
2 plot(a,col='blue')

4.自相关图和偏自相关图是用于识别时间序列数据中的自相关性(autocorrelation)和偏自相关性(partial autocorrelation)的工具。

  自相关性是指时间序列数据中相邻观测值之间的相关性,即一个滞后版本与原始序列之间的相关程度。偏自相关性则是在控制其他滞后项的影响下,特定滞后项与序列之间的相关性度量。

  自相关图和偏自相关图可以帮助我们识别时间序列数据中的自相关性和偏自相关性,从而确定时间序列模型的阶数。这对于进行预测和分析非常重要。

  自相关图通常以滞后时间(lag)为X轴,以自相关系数为Y轴绘制。自相关系数是一个介于-1和1之间的值,表示当前时点与滞后版本之间的相关程度。自相关图中的峰值通常表示时间序列数据中的周期性或季节性。

  偏自相关图也以滞后时间为X轴,以偏自相关系数为Y轴绘制。偏自相关系数也是介于-1和1之间的值,但它表示特定滞后项与序列之间的相关程度,同时控制了其他滞后项的影响。偏自相关图中的峰  值通常表示时间序列数据中的趋势或周期性。

  一个极大的用途是人工定阶:

             自相关图                                                 偏自相关图

    AR       拖尾                p阶截尾

    MA      q阶截尾                 拖尾

    ARMA       拖尾                 拖尾

总之,自相关图和偏自相关图是识别时间序列数据中的自相关性和偏自相关性的重要工具。通过观察这些图形的峰值和趋势,可以确定时间序列模型的阶数,并进行进一步的分析和预测。

1 #自相关图与偏自相关图
2 acf(a)
3 pacf(a)

5.纯随机性检验(白噪声检验)

  纯随机性检验,也称为白噪声检验(White Noise Test),是一种用于检验时间序列数据是否具有纯随机性的方法。在时间序列分析中,纯随机性通常是假设时间序列数据中不存在任何潜在的模式、趋势或周期性。

  白噪声指的是均值为0、方差为常数的纯随机序列。在进行纯随机性检验时,我们希望时间序列数据的残差值(即实际值与预测值之间的误差)符合白噪声假设。如果残差值不符合白噪声假设,则可能存在潜在的模式、趋势或周期性等,需要进一步分析和处理。

常见的纯随机性检验方法包括:

  1-->Ljung-Box检验:基于残差序列的自相关和偏自相关系数来检验序列是否具有相关性。

  2-->Breusch-Godfrey检验:基于回归模型的残差来检验序列是否具有相关性。

  3-->ARCH检验:用于检验序列的异方差性(heteroscedasticity)。 

  4-->Runs检验:基于序列的正负交替次数来检验序列是否具有趋势或周期性。

  在实践中,我们通常会使用多种方法来检验时间序列数据的纯随机性,并结合其他分析方法来判断数据是否存在潜在的模式和趋势。只有在满足纯随机性假设的情况下,才能进行有效的预测和分析。

  注:当p值小于0.05时为显著非白噪声序列

1 #纯随机性检验,白噪声检验
2 Box.test(a)

6.单位根检验:ADF检验

  单位根检验,也称为增广迪基-福勒检验(Augmented Dickey-Fuller test,ADF test),是一种用于检验时间序列数据是否具有单位根(unit root)的方法。在时间序列分析中,单位根通常是假设时间序列数据中存在一种长期的趋势或非平稳性。

  单位根检验旨在验证时间序列数据是否具有平稳性。如果时间序列数据具有单位根,则说明数据存在非平稳性,并且预测和分析可能会出现问题。因此,在进行时间序列分析之前,我们需要先进行单位根检验,以确保数据具有平稳性。

  ADF检验是一种常用的单位根检验方法,它通过计算时间序列数据的ADF统计量来判断数据是否具有单位根。ADF统计量与t值类似,表示观测值与滞后版本之间的差异程度,同时考虑了其他因素的影响。如果ADF统计量小于对应的临界值,则拒绝原假设,即数据不存在单位根,表明数据具有平稳性。

  除了ADF检验外,还有许多其他的单位根检验方法,例如Dickey-Fuller检验、KPSS检验等。不同的单位根检验方法具有不同的假设条件和适用范围,需要根据具体情况来选择合适的方法。

  总之,单位根检验是一种重要的时间序列分析工具,用于验证数据是否具有平稳性。只有在数据具有平稳性的情况下,才能进行有效的预测和分析。

  检验假设:H0:存在单位根 vs H1:不存在单位根

  如果序列平稳,则不应存在单位根,所以我们希望能拒绝原假设

1 #ADF检验
2 #install.packages('aTSA')
3 library(aTSA)
4 adf.test(a)

7.ARMA参数估计

1 #参数估计
2 result=arima(a,order=c(2,0,1),method = 'CSS')
3 result

8.序列拟合结果图

ts.diag(result)

9.模型预测

1 #预测
2 #install.packages('forecast')
3 library(forecast)
4 pre=forecast(result,h=5)
5 pre
6 plot(pre,lty=2)
7 lines(pre$fitted,col=2)

R语言代码实战:

#题3
a=c(12.373,12.871,11.799,8.850,8.070,7.886,6.920,7.593,7.574     ,8.230,10.347,9.549,7.461,8.159,9.243,9.160,10.683,10.516,9.077,8.104,7.700,8.640 ,8.736 ,9.027 ,9.380 ,9.783 ,9.648, 8.135 ,8.222, 9.155,8.941, 9.682, 10.331, 10.601, 10.693 ,8.311)
a=ts(a)
#时序图
plot(a,col='blue')
#自相关图与偏自相关图
acf(a)
pacf(a)
#纯随机性检验,白噪声检验
Box.test(a)
#ADF检验
#install.packages('aTSA')
library(aTSA)
adf.test(a)
#参数估计
result=arima(a,order=c(2,0,1),method = 'CSS')
result

ts.diag(result)
#预测
#install.packages('forecast')
library(forecast)
pre=forecast(result,h=5)
pre
plot(pre,lty=2)
lines(pre$fitted,col=2)
View Code

标签:偏自,模型,单位根,检验,时间,序列,数据,ARMA
From: https://www.cnblogs.com/hongbao/p/17375509.html

相关文章

  • 电路模型和电路定律
    电路和电路模型电源:电能和电信号的发生器,又称为激励源或者激励负载:用电设备响应:由激励而在电路中产生的电压和电流有时把激励称为输入,响应称为输出电路模型由理想元件和理想导线构成,前者具有良好的电磁特性并有精确的数学定义,后者的电阻为0,且通电后导线周围没有电场和磁场一......
  • 2023.18 星火认知大模型
    5月6日,科大讯飞正式发布星火认知大模型,宣布对外开放测试,并发布教育、办公、汽车、数字员工四大行业应用成果。星火大模型在通用能力上支持:多风格多任务长文本生成、多层次跨语种语言理解,泛领域开放式知识问答,情景式思维链逻辑推理,多题型可解析数学能力,多功能多语言代码能力。发布......
  • 讯飞星火大模型 与New Bing实测对比
    昨天科大讯飞发布了讯飞星火认知大模型,在发布会现场实测大模型的7种核心能力,并发布了它在教育、办公、汽车、数字员工领域的应用成果。科大讯飞董事长刘庆峰表示:认知大模型展示了通用人工智能的曙光,讯飞星火认知大模型已在文本生成、知识问答、数学能力3种能力上超越ChatGPT。NewB......
  • m基于POCS算法的空域序列图像超分辨率重建matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:     2.算法涉及理论知识概要       随着信息处理技术和视觉通信技术的高速发展,人们获取的知识量爆炸式增长,因此迫切的要求完善的信息处理技术为人们提供更加方便、快捷服务。数字图像及及其相关技术是信息处理技......
  • 利用Tensorflow使用BERT模型+输出句向量和字符向量
    文章目录1.前言2.BERT模型2.1下载预训练好的模型2.2导入BERT模型2.3数据下载和预处理2.4模型训练2.5直接输出BERT模型的句向量或者是字符向量1.前言最近想着如何利用tensorflow调用BERT模型,发现其源码已经有比较详细的调用代码,具体的链接如下:https://github.com/google-resear......
  • FDTD模型构建
       ......
  • OSI七层模型及常见协议
    OSI七层模型--主要作用第七层:应用层--OSI参考模型中最接近用户的一层,为应用程序提供网络服务。第六层:表示层--提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统应用层识别。第五层:会话层--负责建立,管理和终止表示实体之间的通信会话。该层......
  • Hugging News #0506: StarCoder, DeepFloyd/IF 好多新的重量级模型
    每一周,我们的同事都会向社区的成员们发布一些关于HuggingFace相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「HuggingNews」,本期HuggingNews有哪些有趣的消息,快来看看吧!StarCoder:最新的代码生成LLMBlog:ht......
  • java类序列化和反序列化
    参考:https://zhuanlan.zhihu.com/p/144535172?utm_id=0https://blog.csdn.net/qq_42617455/article/details/1096223901、问题解答(1)序列化和反序列化都需要哪些操作对象要实现java.io.Serializable接口增加序列化ID(privatestaticfinallongserialVersionUID)转化成便于传......
  • django内置序列化组件(drf前身)
    目录一、django内置序列化组件(drf前身)一、django内置序列化组件(drf前身)一、django内置序列化组件(drf前身)这里的内置序列化组件,其实就是实现将后端数据,存放到字典中或是存放到列表中有序输出。这里是我们用JsonResponse模块自己实现的代码'''前后端分离的项目视图函数......