A

IMA模型是一种著名的时间序列预测方法,主要是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。ARIMA模型根据原序列是否平稳以及回归中所含部分的不同,包括移动平均过程(MA)、自回归过程(AR)、自回归移动平均过程(ARMA)以及ARIMA过程。其中ARIMA(p,d,q)称为差分自回归移动平均模型,AR是自回归, p为自回归项; MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数。

通常的建立ARIMA模型需要以下几步:

1.数据的预处理。对时间序列数据的平稳性和纯随机性进行检验,根据检验结果来判断时间序列的类型,以便选择合适的方法建立模型。

平稳性是指围绕着一个常数上下波动且波动范围有限,即有常数均值和常数方差。如果有明显的上升或下降趋势或周期性,那它通常不是平稳序列。

三种常用的检验平稳性的方法:

(1)时序图。通过时序图来观察。一般而言,平稳序列始终在一个常数值附近随机波动,且波动范围有界;非平稳序列则有明显的趋势性或周期性。

(2)自相关与偏相关系数检验。在自相关图中,在那一阶数值高于虚线即表明自相关系数>0.5,就存在那一阶自相关(偏自相关一样)。随着滞后数(延迟期数)的增加,平稳序列自相关系数会很快衰减至0而非平稳序列衰减速度通常较慢。若自相关图呈现三角对称性则为单调趋势的非平稳序列。自相关系数长期位于零轴一边表示有单调趋势序列。自相关系数呈现明显正弦波动规律则表明有周期变化规律

(3)单位根检验(ADF)。单位根检验是指检验序列中是否存在单位根,如果存在单位根就是非平稳时间序列。若P值<0.05,为平稳

如果时间序列不平稳该怎么办?

(1)对数变换。对数变换主要是为了减小数据的振动幅度,使其线性规律更加明显,对数变换相当于增加了一个惩罚机制,数据越大其惩罚越大,数据越小惩罚越小。这里强调一下,变换的序列需要满足大于0,小于0的数据不存在对数变换。

(2)差分。k阶差分就是相距k期的两个序列值之间相减。若有季节趋势还可以进行k-4步差分,年度趋势则相应的K-12差分。

(3)平滑。

(4)分解,即将将时序数据分离成不同的成分。

纯随机性检验:

纯随机序列,又称白噪声序列,序列的各项数值之间没有任何相关关系,序列在进行完全无序的随机波动,可以终止对该序列的分析白噪声序列是没有信息可提取的平稳序列。若检验后P<0.05,说明不是白噪声序列。

2.对(处理后的)平稳数据进行建模。若某个时间序列数据经过预处理之后,被判定为平稳非白噪声序列,就可以进行时间序列建模。

3.对模型的检验、优化及应用。

###########################################################################################

案       例

###########################################################################################

数据来源SPSS Clementine 案例中关于男装生产线月销量,详细见Clementine中catalog_forecast.str 流。

步骤一:导入xlsx格式数据。

library(xlsx)  #导入xlsx包

library(forecast)

library(tseries)

sale<-read.xlsx(“C:/pythonshu/shijian.xlsx”,1)#导入数据

步骤二:建立模型并检验。

saletimeseries<-ts(sale,frequency = 12,start =c(1989,1))#构造时间序列

plot.ts(saletimeseries)#时序图。分析时序图可以看出,该时间序列成明显的季节上升趋势,通过自相关和偏自相关检验也验证了这一观点。

adf.test(saletimeseries)#平稳性检验0.01,为平稳性数据

a1<-auto.arima(saletimeseries,trace = TRUE)#auto.arima自动定阶

a2<-arima(saletimeseries,order = c(0,0,0),seasonal = c(0,1,1))#建立模型

a3<-forecast.Arima(a2,h=12,level=c(99.5))#预测

plot(a3)

Box.test(a3$residuals)#0.2388<0.05残差非白噪声,说明可能还有信息没有提取出。

3:模型的优化。

选择利用1-12阶差分优化模型。差分后的数据依然平稳,但在1阶、12阶、24阶时可能存在自相关,且认为是偶然因素造成。

diff1<-diff(saletimeseries,1)

adf.test(diff1)#p<0.01,平稳

acf(diff1,lag.max = 24)

Box.test(diff1)#3.511e-06<0.05,为平稳非白噪声

a4<-auto.arima(diff1,trace = TRUE)#定阶,

a5<-arima(saletimeseries,order = c(5,0,0),seasonal = c(1,1,0))#建立模型

a6<-forecast.Arima(a5,h=12,level=c(99.5))#对后12期进行预测。#设置预测期数h与置信度水平

plot(a6)

Box.test(a6$residuals)#P=0.5866>0.05,残差序列为白噪声,说明建模成功。

对后12期的预测数据如下表所示。

转自:http://www.shujudata.top/基于r语言的arima模型/

基于R语言的ARIMA模型的更多相关文章

  1. R语言的ARIMA模型预测

    R通过RODBC连接数据库 stats包中的st函数建立时间序列 funitRoot包中的unitrootTest函数检验单位根 forecast包中的函数进行预测 差分用timeSeries包中di ...

  2. 不知道怎么改的尴尬R语言的ARIMA模型预测

    数据还有很多没弄好,程序还没弄完全好. > read.xlsx("H:/ProjectPaper/论文/1.xlsx","Sheet1") > it ...

  3. Redhat 5.8系统安装R语言作Arima模型预测

    请见Github博客:http://wuxichen.github.io/Myblog/timeseries/2014/09/02/RJavaonLinux.html

  4. 基于R语言的时间序列指数模型

    时间序列: (或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列.时间序列分析的主要目的是根据已有的历史数据对未来进行预测.(百度百科) 主要考虑的因素: 1.长期趋势(Lon ...

  5. 概率图模型 基于R语言 这本书中的第一个R语言程序

    概率图模型 基于R语言 这本书中的第一个R语言程序 prior <- c(working =0.99,broken =0.01) likelihood <- rbind(working = ...

  6. R语言︱LDA主题模型——最优主题...

    R语言︱LDA主题模型——最优主题...:https://blog.csdn.net/sinat_26917383/article/details/51547298#comments

  7. Twitter基于R语言的时序数据突变检测(BreakoutDetection)

    Twitter开源的时序数据突变检测(BreakoutDetection),基于无参的E-Divisive with Medians (EDM)算法,比传统的E-Divisive算法快3.5倍以上,并 ...

  8. [R语言]forecast.Arima中使用xreg报错

    问题: 使用forecast.Arima对带xreg的arima模型进行预测,报xreg Error pre.m4x <- forecast.Arima(m4x, h = 20, xreg = ...

  9. R语言︱LDA主题模型——最优主题数选取(topicmodels)+LDAvis可视化(lda+LDAvis)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:在自己学LDA主题模型时候,发现该模 ...

随机推荐

  1. 00-JAVA语法基础--课后作业

    题目:像二柱子那样,花20分钟写一个能自动生成30道小学四则运算题目的“软件”. package 课堂作业1; import java.util.Random; import java.util.Sc ...

  2. C# MediaHelper

    using System.Text; public class MediaHelper { private static MediaHelper media = null; private Media ...

  3. Pandas 学习记录(一)

    1.DataFrame 按照列和按照行进行索引数据 按照列索引 df[’column_name’] 按照行索引 df.loc[’row_key’] 或 df.iloc[index] 2.先行后列索引单 ...

  4. 工程管理之makefile与自动创建makefile文件过程

    (风雪之隅 http://www.laruence.com/2009/11/18/1154.html) Linux Makefile自动编译和链接使用的环境 想知道到Linux Makefile系统的 ...

  5. 轻松掌握Redux-Action使用方法

    轻松掌握Redux-Action使用方法 Redux-Action主要有两个方法,createAction和createAction,只要掌握了这两个方法就会了redux-action的使用. cre ...

  6. BZOJ4867 : [Ynoi2017]舌尖上的由乃

    首先通过DFS序将原问题转化为序列上区间加.询问区间kth的问题. 考虑分块,设块大小为$K$,每块维护排序过后的$pair(值,编号)$. 对于修改,整块的部分可以直接打标记,而零碎的两块因为本来有 ...

  7. WC前的小计划

    写在前面的.. 要去WC了好开心的呢.. 但是之前荒废了好多时间呢.. 好吧从明天开始加紧训练,目标是:WC前bzoj300t..(现在是260呢..) 开始吧 来看看完成情况: 40/40 [201 ...

  8. Java Web 域名

    虽然可以直接通过IP地址来访问WWW的每一台主机,但是32位IP地址非常难记.所以,为了便于记忆,按照一定的规则给Internet上的计算机起了名字即域名.通俗地说,域名相当于一个房屋的门牌号码,别人 ...

  9. chrome浏览器下载内容存放位置

    点击: 或者直接快捷键 ctrl +J 打开下载的资料在[设置]中可将浏览器设置成默认浏览器,更换下载内容的存放位置:给一个提示,本人未曾修改下载的存放位置,是用户/Administrator/Dow ...

  10. 通过echarts的demo

    通过最近两天对echarts的了解,下面用echarts.js写了一个小效果: 效果的demo为: <!DOCTYPE html> <html lang="en" ...