-
2021-12-07 17:26:43
arima(x,order=c(p,d,q),method=c("ML","CSS"),include.mean)
其中:
x—带估计序列;
Order—指定模型阶数;其中,P为自回归阶数;d为差分阶数,若为平稳序列,则不需要差分即d=0;q为移动平均阶数。
method—估计方法。method =CSS-ML,系统默认的是条件最小二乘估计和极大似然估计的混合方法;method =ML,极大似然估计;method =CSS,条件最小二乘估计;
include.mean—是否包含均值项,即估计结果中的intercept项。系统默认含有常数项。补充讲解:差分的R语言
(1)P阶差分计算:p阶差分
R语言是:diff(x,differences=p)
其中:x是需要进行差分的序列;p是差分阶数,系统默认为1。
看一个例子:x=1:10 x [1] 1 2 3 4 5 6 7 8 9 10 y=diff(x) #对序列x进行一阶差分。 y [1] 1 1 1 1 1 1 1 1 1 Z=diff(x,differences = 2) #对序列x进行二阶差分。 Z [1] 0 0 0 0 0 0 0 0
(2)k步差分加入参数 lag=k
R语言是:diff(x, lag=k)
其中:x是需要进行差分的序列;k是差分步长,系统默认为1。如计算x的3步差分,其R程序和结果为:
x=1:10 y=diff(x, lag = 3) y [1] 3 3 3 3 3 3 3
知识点1:ARIMA拟合
例1:对1952-1988年中国农业实际国民收入指数序列建模。
(1)读取数据d=read.table("C:\\Users\\w\\Documents\\收入指数.txt") #导入数据 shouru=ts(d,start=1952,end=1988,freq=1)#转化为时间序列数据 ts.plot(shouru,type=“b”) #作时序图。通过时序图,发现该序列呈现出显著的线性递增趋势,为非平稳时间序列。
图1 国民收入指数的时序图
(2)差分运算,并对差分序列的平稳性进行判断chafen=diff(shouru,differences=1)#对原序列进行一阶差分,剔除趋势 ts.plot(chafen) #时序图表明,差分后的序列在均值附近随机波动,没有明显的趋势或周期性波动,因此差分序列可能为平稳序列。
图2 收入指数一阶差分后时序图
图3收入指数一阶差分序列的自相关图
图4收入指数一阶差分序列的自相关图acf(chafen,10) #作自相关图,发现一阶差分序列具有短期相关性,应该为平稳序列。并且可看做1阶截尾 pacf(chafen,10) #作偏自相关图,可看做拖尾
进一步的对原序列的一阶差分序列chafen进行单位根检验:
library(fBasics) library(fUnitRoots) #下载并安装“fUnitRoots”包(安装可以用install.packages(“fUnitRoots”)语句进行),并用library函数进行调用。该程序包中的adfTest函数可以很便捷的进行单位根检验。 for(i in 1:3)print(adfTest(chafen,lag=i,type="c")) #对“chafen”序列进行检验类型为类型2(无趋势,有常数项),延迟阶数分别取1,2,3的单位根检验
R的运行结果如下:
Title: Augmented Dickey-Fuller Test Test Results: PARAMETER: Lag Order: 1 STATISTIC: Dickey-Fuller: -3.0057 P VALUE: 0.04732 Title: Augmented Dickey-Fuller Test Test Results: PARAMETER: Lag Order: 2 STATISTIC: Dickey-Fuller: -2.4431 P VALUE: 0.1626 Title: Augmented Dickey-Fuller Test Test Results: PARAMETER: Lag Order: 3 STATISTIC: Dickey-Fuller: -2.8483 P VALUE: 0.06747
ADF检验结果表明,差分序列是有常数均值的平稳序列(检验类型是“c”),且该平稳序列有1阶自相关(ADF检验P值=0.04732<0.05)。结合差分序列的时序图和自相关图,认为国民收入指数的一阶差分序列是平稳序列。
(3)差分序列的白噪声检验
Box.test(chafen, type="Ljung-Box",lag=6) #分别进行滞后期数为6和12期的纯随机性检验。这里略去12期检验的结果。
R运行结果:
data: chafen X-squared = 15.3304, df = 6, p-value = 0.01784
当延迟阶数取6时,拒绝原假设,表明序列不是白噪声序列。
Box.test(chafen, type="Ljung-Box",lag=12)
因此差分序列为平稳非白噪声序列,可以用ARMA拟合。
(4)对平稳非白噪声的差分序列构建ARMA模型
根据ACF图和PACF图,考虑建立MA(1)模型。arima(chafen, order = c(0,0,1),method="ML")
R运行结果:
arima(x = chafen, order = c(0, 0, 1), method = "ML")
Coefficients: ma1 intercept 0.6710 4.9947 s.e. 0.1648 2.0139 sigma^2 estimated as 53.42: log likelihood = -122.99, aic = 251.97
(5)模型的检验
接着,对差分序列的MA(1)模型进行显著性检验:a= arima(chafen, order = c(0,0,1),method="ML") r=a$residuals #用r来保存残差 Box.test(r,type="Ljung-Box",lag=6,fitdf=1) Box.test(r,type="Ljung-Box",lag=12,fitdf=1)
白噪声检验表明残差序列是一个白噪声序列,该MA(1)模型拟合差分序列是显著的。
进一步的对模型参数进行显著性检验,这里同上次课内容,此处不再赘述,结果表明参数也是显著的。
写出模型形式为:
困惑(1) :
理论上,R语句arima(chafen, order = c(0,0,1),method="ML")
和arima(shouru, order = c(0,1,1),method="ML")
反映的内容是一样的。
但语句arima(shouru, order = c(0,1,1),method=“ML”) 的计算结果如下:Call: arima(x = shouru, order = c(0, 1, 1), method = "ML",include.mean=T) Coefficients: ma1 0.7355 s.e. 0.1545 sigma^2 estimated as 61.95: log likelihood = -125.74, aic = 255.49
建议:使用平稳的差分序列进行建模。
困惑(2):预测咋搞?对原序列直接建模得到的模型是有问题的,所以不能直接用R语句
shouru.forecast= predict(arima(shouru, order = c(0,1,1)), n.ahead =3)
进行预测,因为结果如下,是错误的结果!shouru.forecast $pred Time Series: Start = 1989 End = 1991 Frequency = 1 [1] 283.0082 283.0082 283.0082
探索解法1:使用基于差分序列构造的模型进行预测:
forecast= predict(arima(chafen, order = c(0,0,1)), n.ahead=3) forecast $pred Time Series: Start = 1989 End = 1991 Frequency = 1 [1] 5.696599 4.995631 4.995631
但得到的是差分序列的预测结果,不是我们关心的原序列的预测结果!该方法失败!
建议:各种尝试,发现和正确的预测结果最接近的唯一办法就是大家自己动手计算。知识点2:疏系数ARIMA模型的拟合
#例2:对1917-1975年美国23岁妇女每万人生育率序列建模。d=read.table("C:\\Users\\w\\Documents\\生育率.txt") shengyu=ts(d,start=1917,end=1975,freq=1)#转化为时间序列数据ts.plot(shengyu,type="p") #作时序图。通过时序图,发现该序列为非平稳时间序列。
图1 23岁妇女每万人生育率序列的时序图
chafen=diff(shengyu,differences=1)#对原序列进行一阶差分,剔除趋势 ts.plot(chafen)#时序图表明,差分后的序列在均值附近随机波动,波动有界,没有明显的趋势或周期性波动,因此为平稳序列
图2 生育率序列一阶差分后时序图
图3生育率一阶差分序列的自相关图
图4生育率一阶差分序列的自相关图acf(chafen,18) #作自相关图,发现延迟5阶后的自相关系数都落在两倍标准差以内,序列具有短期自相关性,因此自相关图表明差分后的序列为平稳序列。且自相关系数相对而言偏向于拖尾。 pacf(chafen,18) #作偏自相关图,发现延迟一阶和延迟四阶的偏自相关系数显著大于2倍标准差,其他阶数的偏自相关系数都较小。因此偏自相关系数1阶和4阶截尾。 Box.test(chafen, type="Ljung-Box",lag=6) #纯随机性检验
R运行结果:
data: chafen X-squared = 20.805, df = 6, p-value = 0.001989 Box.test(chafen, type="Ljung-Box",lag=12)#序列不是白噪声序列。因此差分序列为平稳非白噪声序列,可以用ARMA拟合。结合自相关图和偏自相关图,建立疏系数模型AR(1,4)。
arima(chafen,order=c(4,0,0),fixed=c(NA,0,0,NA,NA),method="ML") #首先尝试着构造一个非中心化(即有常数项)的AR(1,4)模型
R运行结果:
arima(x = chafen, order = c(4, 0, 0), fixed = c(NA, 0, 0, NA, NA), method = "ML") Coefficients: ar1 ar2 ar3 ar4 intercept 0.2537 0 0 0.3386 -1.5603 s.e. 0.1162 0 0 0.1223 3.2903 sigma^2 estimated as 117.8: log likelihood = -220.89, aic = 449.78
再尝试着构建中心化的AR(1,4)模型,并比较那个模型更优。
arima(chafen,order=c(4,0,0),fixed=c(NA,0,0,NA,0),method="ML")
R运行结果:
arima(x = chafen, order = c(4, 0, 0), fixed = c(NA, 0, 0, NA, 0), method = "ML") Coefficients: ar1 ar2 ar3 ar4 intercept 0.2583 0 0 0.3408 0 s.e. 0.1159 0 0 0.1225 0 sigma^2 estimated as 118.2: log likelihood = -221, aic = 448.01
所以由AIC准则,认为中心化的AR(1,4)模型更好。从而得到最终的模型形式为:
接着,对该AR(1,4)模型的残差序列进行白噪声检验:
a= arima(chafen,order=c(4,0,0),fixed=c(NA,0,0,NA,0),method="ML") r=a$residuals Box.test(r,type="Ljung-Box",lag=6,fitdf=2) Box.test(r,type="Ljung-Box",lag=12,fitdf=2)
结果表明,6阶和12阶延迟下的LB统计量的P值都小于显著性水平0.05,因此用AR(1,4)模型拟合差分序列得到的残差序列是一个白噪声序列,该AR(1,4)模型是显著的。
再通过参数的t检验,表明两参数都显著。参数的t检验程序如下:
(1)计算出参数的t统计量值=
,
和参数的t统计量值=(2)求P值。参数的t检验统计量的P值的计算:
p=pt(2.2286,df=57,lower.tail = F)*2
p
[0.02980024]
注:数据有59个,估计参数2个,所以自由度为57.
同样的得到参数的t检验统计量的P值= 0.007312442。
所以参数和都显著。更多相关内容 -
ARIMA模型-matlab代码
2021-05-26 03:00:15ARIMA模型-matlab代码,可以根据自己的实际情况进行参数调节,实现所需要的效果。 ARIMA模型-matlab代码,可以根据自己的实际情况进行参数调节,实现所需要的效果。 -
基于Python实现时间序列分析建模(ARIMA模型)项目实战
2021-10-31 22:56:50【项目实战】基于Python实现时间序列分析建模(ARIMA模型)项目实战 内容包括: 资料说明:包括数据集+源代码+PDF文档说明+代码视频讲解。 资料内容包括: 1)项目背景; 2)数据收集; 3)数预处理; 4)RBF神经网络... -
ARIMA模型MATLAB实现代码
2020-05-13 23:22:19ARIMA模型MATLAB实现代码,通过一批现有数据(本代码中batch=100),向后预测后n个数据,n越大,预测效果越差。代码可以直接运行,有实例支持,可以很快上手。压缩包包括以下三部分:主程序(ARIMA_main.m),辅助... -
Python时间序列处理之ARIMA模型的使用讲解
2021-01-01 11:02:27ARIMA模型 ARIMA模型的全称是自回归移动平均模型,是用来预测时间序列的一种常用的统计模型,一般记作ARIMA(p,d,q)。 ARIMA的适应情况 ARIMA模型相对来说比较简单易用。在应用ARIMA模型时,要保证以下几点: 时间... -
ARIMA模型 – [SPSS & Python]
2021-01-20 02:18:02ARIMA模型:(英语:Autoregressive Integrated Moving Average model),差分整合移动平均自回归模型,又称整合移动平均自回归模型(移动也可称作滑动),是时间序列预测分析方法之一。AR是“自回归”,p为自回归... -
时间序列预测:使用Python创建季节性ARIMA模型
2021-02-24 21:59:55分解数据:时间序列稳定化测试方法:测试序列稳定性:看以看到整体的序列并没有到达稳定性要求,要将时间序列转为平稳序列,有如下几种方法:DeflationbyCPILogarithmic(取对数)FirstDifference(一阶差分)... -
ARIMA模型例题.doc
2021-12-31 06:06:35ARIMA模型例题.doc -
R语言时间序列模型arima模型.rar
2020-07-03 10:26:38精心编写的R语言时间序列模型(主要为Arima模型),程序里我给出了很详细的备注,相信即使是编程小白或者统计小白也可以看懂。内容包含数据集 -
基于极值的修正ARIMA模型用于时间序列建模
2021-03-06 06:59:32基于极值的修正ARIMA模型用于时间序列建模 -
沪深300指数预测--基于ARIMA模型、BP神经网络及其组合模型
2020-01-31 22:02:22沪深300指数预测--基于ARIMA模型、BP神经网络及其组合模型,胡妍,柳向东,作为能够综合反映股票市场变动情况的沪深300指数,在金融市场中发挥着重要的作用。本文用ARIMA模型和BP神经网络和基于熵值法确定的BP -
GRU-ARIMA用于时间序列预测:使用GRU和ARIMA模型进行时间序列预测,其中GRU可以进行短期预测和长期预测。...
2021-02-16 11:49:51GRU-ARIMA时间序列预测 GRU和ARIMA模型用于时间序列预测,其中GRU可用于短期和长期预测。使用GRU和ARIMA模型进行时间序列预测,其中GRU可以进行短期预测和长期预测。 -
基于ARIMA模型和BP神经网络模型的江苏省GDP预测分析.pdf
2020-08-18 17:46:02山 士 位 东大学硕 学 论文 目录 胃 研究 及 义 背景 意 研宄背景 研究意义 国 研 现 内外 究 状 本文主要研究 内容 方法 及 主 -
ARIMA模型在安徽省GDP预测中的研究与应用_1000001336593711.docx
2020-03-16 10:25:57ARIMA模型在安徽省GDP预测中的研究与应用_1000001336593711.docx -
ARIMA模型的MATLAB实现
2018-05-03 22:36:03此压缩包中包括2018年华为软赛初赛练习数据,数据预处理及应用MATLAB自带的ARIMA函数进行算法可行性验证。 -
ARIMA模型时序数据预测COVID-19世界疫情确诊人数.rar
2020-04-25 16:01:30ARIMA模型(英语:Autoregressive Integrated Moving Average model),差分整合移动平均自回归模型,又称整合移动平均自回归模型(移动也可称作滑动),是时间序列预测分析方法之一。ARIMA(p,d,q)中,AR是“自... -
R语言ARIMA模型代码code
2018-02-01 16:46:28用R语言做ARMA模型的代码 包括平稳性检验 自相关 模型阶数选择 预测等 -
MATLAB ARIMA 模型 做时间序列分析预测 matlab源码
2022-03-01 22:52:09资源名:MATLAB ARIMA 模型 做时间序列分析预测 matlab源码 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群... -
利用R语言拟合ARIMA模型
2021-01-13 19:50:28该数据为客流量时间序列数据,用于为一篇博文所使用,展示利用R语言拟合ARIMA模型。 -
arima 模型 源代码
2019-01-22 09:40:45ARIMA 预测模型 训练集和预测集 ARIMA模型全称为自回归积分滑动平均模型(Autoregressive Integrated Moving Average Model,简记ARIMA),是由博克思(Box)和詹金斯(Jenkins)于70年代初提出一著名时间序列(Time-series... -
ARIMA模型.docx
2020-09-15 22:21:29ARIMA模型:自回归移动平均模型,也记作ARIMA(p,d,q),是统计模型(statistic model)中最常见的一种用来进行时间序列预测的模型。 -
ARMA模型与ARIMA模型java实现例程
2018-05-08 13:05:32ARMA、ARIMA、AR、MA均是时间序列的重要方法。此例程中包含了以上所有的实现过程,java实现的,且含有main函数供自行调试,已亲测可用! -
Stock Prediction Using ARIMA:使用 ARIMA 模型预测现实生活中的股票数据-matlab开发
2021-05-29 13:18:49概述 : 在这个脚本中,它使用 MATLAB 中的 ARIMA 模型来预测股票价格。 使用现实生活数据,它将探索如何管理时间戳数据和调整 ARIMA 模型的参数(积分度、自回归阶数、移动平均阶数)。 在 ARIMA 模型之前,它需要... -
城市居民食品零售价格预测-ARIMA模型的应用
2020-02-29 09:47:14城市居民食品零售价格预测-ARIMA模型的应用,文小兵,童恒庆,本文通过2010年3月到2011年2月城市居民食品零售的消费价格预测2011年4、5月的城市居民食品零售价格走势。引进食品零售价格指数和膳食� -
异常点检测__ARIMA模型__时间序列中的4种常见异常
2019-01-20 22:56:21异常点检测__ARIMA模型__时间序列中的4种常见异常:考虑 4 种特定的异常,分别是 innovational outlier (IO),additive outlier (AO),level shift (LS) 以及 temporary change (TC)。 -
论文研究 - 基于ARIMA模型的边坡深部水平位移短期预测管理研究
2020-05-21 01:54:10斜坡土深水平位移的历史数据是具有平稳增长和时变波动的非平稳时间序列,ARIMA模型适用于预测这种时间序列。 本文选择了648个土壤深部水平位移的历史数据作为经验分析的原始序列,并通过建立ARIMA模型来预测位移... -
ARIMA模型 Python
2018-07-26 09:40:31关于ARIMA模型时间序列分析,以及该模型在Python中的相关使用 -
季节arima模型建模与预测.docx
2020-12-13 08:58:34案例五季节ARIMA模型建模与预测实验指导 一实验目的 学会识别时间序列的季节变动 能看出其季节波动趋势 学会剔除季节因素的方法 了 解ARIMA模型的特点和建模过程掌握利用最小二乘法等方法对 ARIMA模型进行估计 利用... -
基于ARIMA模型对我国“十二五”能源需求的预测
2020-05-25 15:22:43文章采用ARIMA模型对我国"十二五"期间的能源消费总量进行预测。首先运用PASW statistics18软件中的预测模块对我国1978-2010年能源消费总量进行时间序列分析。然后对我国"十二五"期间的能源消费总量进行预测,并根据...