【R语言】ARMA时间序列分析上机案例

时间序列已经是大三上学期学的内容了,考完期末考试之后就忘得7788,最近又要做一个时间序列的作业,所以就顺带回顾一下=。=

本次实验拟合的是ARMA模型

实验数据来自于易登辉《应用时间序列(第五版)》中国人民大学出版社

数据可以移步到公众号回复 全球气温 获取
在这里插入图片描述

实验目的:

用R软件对全球气候变化进行变化趋势的分析和预测,熟悉非平稳时间序列的分析和预测步骤。对非平稳时间序列的平稳化处理和建模。

实验内容:

利用R语言,对1880-1985近100年间的全球气温变化进行分析和预测,得到第二次工业革命对气温变化的影响,以及后工业时代的气候变化情况。

实验过程

1.前期准备

install.packages("tseries")
library(tseries)
library(zoo)
install.packages("forecast")
library(forecast)
install.packages("fBasics")
library(fBasics)
install.packages("timeDate")
install.packages("timeSeries")
library(timeDate)
library(timeSeries)
library(fUnitRoots)
install.packages("fUnitRoots")

#这里用到的包有点多,如果以前没有安装过要运行install.package(),如果安装过可以直接library()。

2.导入数据

data<-read.csv("C:\\Users\\Lenovo\\Desktop\\data.csv")
price<-ts(data,start = c(1885,1))
price

3.作时序图

yield<-ts(price,start = 1885)
ts.plot(price)

在这里插入图片描述
从时序图中可以明显看到,这份数据是非平稳的时间序列,时间序列平稳有需要具备三个特征。1.均值为常数,2.方差与均值相等(方差齐性)3.协方差与时间t无关则时间序列是平稳的时间序列(当然这里指的是宽平稳),现实生活中很少严平稳的时间序列,因此我们将宽平稳的时间序列也成为了平稳时间序列。
在这里插入图片描述
4.for (i in 1:3) print(adfTest(price,lag=i,type='nc')) for (i in 1:3) print(adfTest(price,lag=i,type='c')) for (i in 1:3) print(adfTest(price,lag=i,type='ct'))
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.进行一阶差分

x.dif<-diff(price)
ts.plot(x.dif)

在这里插入图片描述
得到一阶差分的时序图

6.进行二阶差分

x.dif2<-diff(price,1,2)
ts.plot(x.dif2)

在这里插入图片描述
得到二阶差分时序图

7.进行一阶加12步差分
#1阶差分加12步差分,并绘制出差分后序列的时序图

x.dif1_12<-diff(diff(price),12)
ts.plot(x.dif1_12)

在这里插入图片描述
8.对差分后的数据做白噪声检验
*因为不做白噪声检验不知道数据是否平稳 ,而ARMA模型是只能运用到平稳的时间序列的。

for(i in 1:2) print(Box.test(x.dif1_12,type = "Ljung-Box",lag=6*i))

在这里插入图片描述
9.作自相关图和偏自相关图

acf(x.dif1_12)
pacf(x.dif1_12)
adf.test(x.dif1_12)

在这里插入图片描述
自相关图截尾
在这里插入图片描述
偏自相关图非截尾

adf.test()是用来检验模型是否平稳的,p值为0.01时表明数据是平稳数据。因此可以进行建模

10.建立模型,对AR1作显著性检验

auto.arima(x.dif1_12)
x.fit<-arima(x.dif1_12,order = c(0,0,2),method = "ML")
x.fit

在这里插入图片描述
对ar1做系数的显著性检验

t1<-(-0.2458)/0.0988
pt(t1,df=6,lower.tail = F)

在这里插入图片描述
得到模型显著性为0.9984,拟合度较高

11.显著性检验及预测
对未来五年的全球气候变化情况进行预测并生成预测图。

#模型显著性检验
for(i in 1:2) print(Box.test(x.fit$residual,lag=6*i))
x.fore<-forecast(x.fit,h=5)
x.fore

在这里插入图片描述

#预测图
plot(x.fore)

在这里插入图片描述

结果分析或总结:

本次实验,选择了来自易登辉 《应用时间序列分析》(中国人民大学出版社第五版)的实验数据。在导入数据之前,在R中加载有关时间序列分析的包,将分析所需要的包加载完成后进行数据导入,对原始数据做时序图,从时序图中可以看到气温变化有明显的时间趋势,即气温变化随时间的变化而变化,所以这是一个非平稳的时间序列,判断时间序列是否平稳的标准有三个,一是均值,二是方差齐性,三是时间序列的变化只与时间间隔k有关,构成了平稳的时间序列。因此,要将不平稳的时间序列进行差分,分别进行一阶差分、二阶差分和一阶加十二步差分,后做自相关图和偏自相关图,在自相关图中可以看出,自相关图二阶截尾,偏自相关图非截尾,对数据进行acf检验,得到p值为0.01,因此序列是平稳序列,可以用ARMA模型进行拟合。用auto.arima()进行arma模型的阶数拟合,排除人为主观因素的干扰。符合ARMA的模型特征,建立ARMA模型,并对AR1进行模型显著性检验,得到t1为0.9984,即AR1拟合效果较好,最后,对未来五年的气温变化情况进行预测,得到未来五年的气温变化趋势和生成预测图。

  • 9
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值