ARIMA模型——非平稳序列的随机性分析

这篇具有很好参考价值的文章主要介绍了ARIMA模型——非平稳序列的随机性分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、拟合ARIMA模型

ARIMA是先运用差分运算得到平稳序列,再对平稳序列建立ARMA模型。差分运算可用diff函数完成,命令格式为:

diff(x,lag=,differences=)

其中:x:序列名

      lag:差分的步长(默认lag=1

      differences:差分次数(默认differences=1

常用命令有:

1阶差分:diff(x)

2阶差分:diff(x,1,2)

k阶差分:diff(x,1,k)

d步差分:diff(x,d,1)diff(x,d)

1阶差分后再d步差分:diff(diff(x),d)

建立ARIMA模型采用arima函数,命令格式为:

           arima(x,order=c(p,d,q))

疏系数模型,如果arima模型中有部分系数缺省,则称为疏系数模型,命令格式为:

    arima(x,order=,include.mean=,method=,transform.pars=,fixed=)

其中:include.mean=T,需要拟合常数项

      include.mean=F,不需要拟合常数项

      method:指定参数估计的方法

      transform.pars=T,不需要拟合疏系数模型

      transform.pars=F,需要拟合疏系数模型

      fixed:对疏系数模型指定疏系数的位置

  1. 1917-1975美国23岁妇女每万人生育率序列建模

首先,读取数据,绘制时序图:

e<-read.table("E:/R/data/file18.csv",sep=",",header = T)

x<-ts(e$fertility,start = 1917)

plot(x)

ARIMA模型——非平稳序列的随机性分析

从时序图可以看出序列非平稳,作1阶差分,并绘制1阶差分后的时序图:

x.dif<-diff(x)

plot(x.dif)

可以ARIMA模型——非平稳序列的随机性分析

 

可以看出,1阶差分后时序图是平稳的,再绘制1阶差分后的自相关图和偏自相关图:

acf(x.dif)

pacf(x.dif)

ARIMA模型——非平稳序列的随机性分析

ARIMA模型——非平稳序列的随机性分析

 

从偏自相关图看出,偏自相关系数4阶结尾,且延迟2阶和3阶的偏自相关系数很小,可以拟合疏系数模型ARIMA((1,4),1,0)

输入:

x.fit<-arima(x,order = c(4,1,0),transform.pars = F,fixed = c(NA,0,0,NA))

x.fit

可以得出如下结果:

ARIMA模型——非平稳序列的随机性分析

 

即模型为:

ARIMA模型——非平稳序列的随机性分析

对残差作白噪声检验:

for(i in 1:2) print(Box.test(x.fit$residual,lag=6*i))

ARIMA模型——非平稳序列的随机性分析

 

显示不能拒绝残差序列为白噪声序列。

季节模型

  1. 简单季节模型

简单季节模型是指趋势和季节效应的关系简单,可以通过趋势差分和季节差分得到平稳序列,并用ARMA模型拟合。可用arima函数中的seasonal选项拟合简单季节模型,命令格式为:

arima(x,order=,include.mean=,method=,transform.pars=,fixed=seasonal=)

其中:include.mean=T,需要拟合常数项

      include.mean=F,不需要拟合常数项

      method:指定参数估计的方法

      transform.pars=T,不需要拟合疏系数模型

      transform.pars=F,需要拟合疏系数模型

      fixed:对疏系数模型指定疏系数的位置

      seasonl:指定季节模型的阶数和季节周期,该选项格式为:

      seasonal=list(order=c(P,D,Q),period=)

  1. 简单季节模型时,P=0,Q=0
  2. 乘积季节模型时,P,Q至少有一个不为0

2 拟合1962-1991年德国工人季节失业率序列

首先,读取数据,并绘制时序图:

f<-read.table("E:/R/data/file19.csv",sep=",",header = T)

x<-ts(f$unemployment_rate,start = c(1962,1),frequency = 4)

plot(x)

ARIMA模型——非平稳序列的随机性分析

从时序图可以看出,序列非平稳,且有季节效应,周期为4。因此作1阶差分,再作4步差分,并绘制差分后时序图:

x.dif<-diff(diff(x),4)

plot(x.dif)

ARIMA模型——非平稳序列的随机性分析

 

可以看出,差分后序列平稳,再绘制自相关图和偏自相关图:

acf(x.dif)

pacf(x.dif)

ARIMA模型——非平稳序列的随机性分析

ARIMA模型——非平稳序列的随机性分析

 

 

偏自相关系数4阶截尾,且延迟23阶偏自相关系数很小,可以拟合疏系数的简单季节模型ARIMA((1,4)(1,4),0)

输入命令:

x.fit<arima(x,order=c(4,1,0), transform.par=F,fixed = c(NA,0,0,NA),seasonal=list(order=c(0,1,0),period=4))

x.fit

可得如下结果:

ARIMA模型——非平稳序列的随机性分析

 

即拟合模型为:

   ARIMA模型——非平稳序列的随机性分析

对参差序列作白噪声检验:

for(i in 1:2) print(Box.test(x.fit$residual,lag=6*i))

结果为:

  ARIMA模型——非平稳序列的随机性分析

 

可见,参差序列为白噪声序列。

对序列作3年期预测,输入命令:

library(forecast)

x.fore<-forecast(x.fit,h=12)

x.fore

可得预测值:

ARIMA模型——非平稳序列的随机性分析

plot(x.fore)

ARIMA模型——非平稳序列的随机性分析

 

2.乘积季节模型

如果序列的趋势和季节效应关系复杂,简单差分不能完全提取出这些信息,则需要拟合乘积季节模型,一般形式为:

ARIMA模型——非平稳序列的随机性分析

其中S为周期,ARIMA模型——非平稳序列的随机性分析

              ARIMA模型——非平稳序列的随机性分析

此模型简记为:  ARIMA(p,d,q)×(P,D,Q)S

3拟合1948-1981年美国女性月度失业率序列

首先,提取数据,绘制时序图:

g<-read.table("E:/R/data/file20.csv",sep=",",header = T)

x<-ts(g$unemployment_rate,start = c(1948,1),frequency = 12)

plot(x)

从时序图上看出序列非平稳,且有周期性,周期为12.因此,作1阶差分,在做12步差分,观察差分后的时序图:

x.dif<-diff(diff(x),12)

plot(x.dif)

ARIMA模型——非平稳序列的随机性分析

观察差分后的自相关图和偏自相关图:

acf(x.dif,lag=36)

pacf(x.dif,lag=36)

ARIMA模型——非平稳序列的随机性分析

 

ARIMA模型——非平稳序列的随机性分析

从自相关图上看,经过12步差分后的序列还有季节效应,且季节效应表现为自相关系数1个周期截尾,偏自相关系数拖尾,因此考虑乘积季节模型:ARIMA(1,1,1)×(0,1,1)12,即:

ARIMA模型——非平稳序列的随机性分析

输入:

x.fit<-arima(x,order = c(1,1,1),seasonal = list(order=c(0,1,1),period=12))

x.fit

得出拟合结果:

ARIMA模型——非平稳序列的随机性分析

 

即模型为:

ARIMA模型——非平稳序列的随机性分析

对残差作白噪声检验:

for(i in 1:2) print(Box.test(x.fit$residual,lag=6*i))

结果为:

ARIMA模型——非平稳序列的随机性分析

 

P值较大,不能拒绝原假设,即拟合模型显著

残差自回归(Auto-regressive)模型

残差自回归模型的思想是先提取确定性因素(包括趋势和季节效应),再对残差拟合自回归模型。对趋势的提取有两种方法:

(1)自变量为时间t的幂函数:

ARIMA模型——非平稳序列的随机性分析

(2)自变量为历史观察值:

ARIMA模型——非平稳序列的随机性分析

使用残差自回归模型拟合1952-1988中国农业实际国民收入指数序列

1步:提取数据,拟合关于时间t的线性回归模型,记作模型(1):

d<-read.table("E:/R/data/file17.csv",sep=",",header = T)

x<-ts(d$index,start = 1952)

t<-c(1:37)

x.fit1<-lm(x~t)

summary(x.fit1)

结果为:

ARIMA模型——非平稳序列的随机性分析

即:

ARIMA模型——非平稳序列的随机性分析

再拟合关于延迟变量的自回归模型,记为模型(2):

xlag<-x[2:37]

x2<-x[1:36]

x.fit2<-lm(x2~xlag)

summary(x.fit2)

结果为:

ARIMA模型——非平稳序列的随机性分析

即:

ARIMA模型——非平稳序列的随机性分析

两个模型拟合效果比较:

fit1<-ts(x.fit1$fitted.value,start = 1952)

fit2<-ts(x.fit2$fitted.value,start = 1952)

plot(x,type = "p",pch=8)

lines(fit1,col=2)

lines(fit2,col=4)

ARIMA模型——非平稳序列的随机性分析

第2步:模型的残差自相关的检验,作DW检验之前,先要下载安装lmtest程序包,并加载,用其中的DW函数,对模型(1)的残差作检验,输入命令:

library(lmtest)

dwtest(x.fit1)

显示结果为:

ARIMA模型——非平稳序列的随机性分析

可以看到,p值极小,要拒绝原假设,说明残差序列高度相关,因此,要对模型(1)的残差序列拟合自回归模型。

再对模型(2)的残差作Dh检验,输入命令:

dwtest(x.fit2,order.by=xlag)

得结果如下:

ARIMA模型——非平稳序列的随机性分析

 

可以看出,p值较大,残差序列不存在相关性,因此不需要对模型(2)的残差拟合自回归模型。

第3步 对模型(1)的残差拟合自回归模型,首先观察残差的自相关图和偏自相关图:

acf(x.fit1$residual)

pacf(x.fit1$residual)

ARIMA模型——非平稳序列的随机性分析

 

ARIMA模型——非平稳序列的随机性分析

残差偏自相关系数2阶截尾,因此拟合AR(2)模型,输入:

r.fit<-arima(x.fit1$residual,order=c(2,0,0),include.mean = F)

r.fit

结果为:

ARIMA模型——非平稳序列的随机性分析

检验可知,新的残差序列为白噪声序列,因此,最后模型为:

ARIMA模型——非平稳序列的随机性分析文章来源地址https://www.toymoban.com/news/detail-416594.html

到了这里,关于ARIMA模型——非平稳序列的随机性分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【现代密码学】笔记3.1-3.3 --规约证明、伪随机性《introduction to modern cryphtography》

    主要在 哈工大密码学课程 张宇老师课件 的基础上学习记录笔记。 内容补充:骆婷老师的PPT 《introduction to modern cryphtography》–Jonathan Katz, Yehuda Lindell(现代密码学——原理与协议)中相关章节 密码学复习笔记 这个博主好有意思 B站视频 密码学原理《Introduction to modern Cryptog

    2024年01月20日
    浏览(50)
  • numpy 多项式函数回归与插值拟合模型;ARIMA时间序列模型拟合

    参考: https://blog.csdn.net/mao_hui_fei/article/details/103821601 1、多项式函数回归拟合 x ^3+ x ^2… 2、多项式函数插值拟合 对于插值函数 interp1d(phone_time, phone_x, kind=‘cubic’),无法直接获取多项式的参数与具体函数表达式。这是因为该函数使用样条插值方法,它的内部实现是基于一组数

    2024年02月16日
    浏览(77)
  • Python时间序列分析--ARIMA模型实战案例

    **本文将介绍使用Python来完成时间序列分析ARIMA模型的完整步骤与流程,绘制时序图,平稳性检验,单位根检验,白噪声检验,模型定阶,参数估计,模型检验等完整步骤。Python建立时间序列分析–ARIMA模型实战案例 时间序列指的是将带有同一指标单位的数值按照产生时间的先

    2024年01月17日
    浏览(50)
  • 用Python语言进行时间序列ARIMA模型分析

    应用时间序列 时间序列分析是一种重要的数据分析方法,应用广泛。以下列举了几个时间序列分析的应用场景: 1.经济预测:时间序列分析可以用来分析经济数据,预测未来经济趋势和走向。例如,利用历史股市数据和经济指标进行时间序列分析,可以预测未来股市的走向。

    2024年02月03日
    浏览(68)
  • ARIMA模型时间序列数据分析(附python代码)

    ARIMA模型建模流程  1 )平稳性检验与差分处理 我们选取原始数据 bus 中的“ prf_get_person_count ”列,并截取前 32 个站点的数据进行平稳性检验,这里采用的是 ADF 检验确定数据的平稳性,导入 statsmodels 包下的 adfuller 函数,该函数返回 adf 值与概率 p 值。若原始序列不平稳,就

    2024年02月01日
    浏览(56)
  • 用特征根判别法判断AR模型的平稳性,再用随机模拟的方法来验证以及做自相关分析

           下面将用这两个栗子来讲解本文的内容,将用到的软件:SPSS、EXCEL 特征根判别法呢,最主要的就是写出模型的差分方程,然后求出其特征根,若其特征根在单位圆内,则该模型就是平稳的 解题如下: 1) ①在excel中生成100个序列数 ②将这100个序列数导入spss中 ③点击

    2024年02月08日
    浏览(91)
  • 四种基础时间序列模型的应用与结果分析【AR、MA、ARMA、ARIMA】

    本文讲解了四种最简单的时间序列模型,从定义、确立模型、模型应用、结果分析出发,通过阅读可以迅速上手简易的时间序列模型。 AR模型的表达式如下: X t = c + ∑ i = 1 p ϕ i X t − i + ε t large X_t = c + sum_{i=1}^p phi_i X_{t-i} + varepsilon_t X t ​ = c + i = 1 ∑ p ​ ϕ i ​ X t −

    2024年02月05日
    浏览(75)
  • 数据分享|R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法...

    最近我们被客户要求撰写关于上海空气质量指数的研究报告。本文向大家介绍R语言对上海PM2.5等空气质量数据 ( 查看文末了解数据免费获取方式 ) 间的相关分析和预测分析,主要内容包括其使用实例,具有一定的参考价值,需要的朋友可以参考一下 ( 点击文末“阅读原文

    2024年02月09日
    浏览(58)
  • 应用时间序列分析——有季节效应的非平稳序列分析-R语言

    因素分解理论:                1919年统计学家沃伦·珀森斯(Warren Persons)在他的论文《商业环境的指标》中首次提出了确定性因素分解(time series decomposition)思想。之后,该方法广泛应用于宏观经济领域时间序列的分析和预测。        珀森斯认为尽管不同的经济变量波动特征

    2024年02月03日
    浏览(53)
  • 时间序列的数据分析(七):数据平稳性

    之前已经完成了六篇关于时间序列的博客,还没有阅读过的读者请先阅读: 时间序列的数据分析(一):主要成分 时间序列的数据分析(二):数据趋势的计算 时间序列的数据分析(三):经典时间序列分解   时间序列的数据分析(四):STL分解 时间序列的数据分析(五):简单预测法    

    2024年02月01日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包