当前位置:
文档之家› R语言arima模型时间序列分析报告(附代码数据)
R语言arima模型时间序列分析报告(附代码数据)
#时间序列分析之ARIMA模型预测#从一阶差分的图中可以看出,数据仍是不平稳的。我们继续差分。
#时间序列分析之ARIMA模型预测#二次差分(上面)后的时间序列在均值和方差上确实看起来像是平稳的,随着时间推移,时间序列的水平和方差大致保持不变。因此,看起来我们需要对data进行两次差分以得到平稳序列。#第二步,找到合适的ARIMA模型#如果你的时间序列是平稳的,或者你通过做n次差分转化为一个平稳时间序列,接下来就是要选择合适的ARIMA模型,这意味着需要寻找ARIMA(p,d,q)中合适的p值和q值。为了得到这些,通常需要检查[平稳时间序列的(自)相关图和偏相关图。#我们使用R中的“acf()”和“pacf”函数来分别(自)相关图和偏相关图。“acf()”和“pacf设定“plot=FALSE”来得到自相关和偏相关的真实值。
## arima(x = timeseries, order = c(5, 2, 5))
##
## Coefficients:
## Warning in sqrt(diag(x$var.coef)):产生了NaNs
## ar1 ar2 ar3 ar4 ar5 ma1 ma2 ma3
## -0.8663 -0.6281 -0.5714 0.0499 0.0582 -0.0862 -0.2969 -0.0206
#绘制时间序列图
plot(date,timeseries)
timeseriesdiff<-diff(timeseries,differences=1)
plot(date[-1],timeseriesdiff)
#时间序列分析之ARIMA模型预测#我们可以通过键入下面的代码来得到时间序列(数据存于“timeseries”)的一阶差分,并画出差分序列的图:
## s.e. NaN NaN NaN NaN NaN NaN 0.1400 NaN
## ma4 ma5
## -0.5481 -0.0482
## s.e. 0.1311 NaN
##
## sigma^2 estimated as 2672: log likelihood = -20640.51, aic = 41303.02
library("forecast")
#对沪深300指数在2017年12月4日至2017年12月31日之间的每日收盘价进行预测
#时间序列分析之ARIMA模型预测#上图预测中的时间曲线图显示出对着时间增加,方差大致为常数(大致不变)(尽管上半部分的时间序#列方差看起来稍微高一些)。时间序列的直方图显示预测误大致是正态分布的且平均值接近于0(服从零均值的正态分布的)。因此,把预测误差看作平均值为0方差为常数正态分布(服从零均值、方差不变的正态分布)是合理的。
pacf(na.omit(timeseriesdiff2),lag.max=20)
#偏自相关值选5阶。#故我们的ARMIA模型为armia(1,2,5)
servearima<-arima(timeseries,order=c(5,2,5))
servearima
#偏自相关值选5阶。
##
## Call:
acf(na.omit(timeseriesdiff2),lag.max=20)
#时间序列分析之ARIMA模型预测
#自相关图显示滞后1阶自相关值基本没有超过边界值,虽然6阶自相关值超出边界,那么很可能属于偶然出现的,而自相关值在其他上都没有超出显著边界,而且我们可以期望1到20之间的会偶尔超出95%的置信边界。
R语言arima模型时间序列分析报告
library(openxlsx)
data=read.xlsx("hs300.xlsx")
timeseries=data$`收盘价(元)`
date=data$日期
date=as.Date(as.numeric(date),origin="1899-12-30")# 1998-07-05