R语言ARIMA建模

目录

1.导入包,查看数据是否为时间序列模型

2.ACF PACF图

3.平稳性检验

4.差分

5.确定ARIMA(p,d,q)

6.残差诊断

7.预测10期

1.导入包,查看数据是否为时间序列模型

library(tseries)
library(forecast)
library(openxlsx)
library(xlsx)
library(TSA)
setwd('/Users/langran/Desktop')
# ctrl+shift+C注释
#install.packages("showtext") mac显示中文
library(showtext)
showtext_auto(enable = TRUE)

# install.packages("readxl")
library(readxl)
# 读取xlsx文件
Nile1 <- read_excel("report.xlsx")
is.ts(Nile1)#是否时间序列模型

2.ACF PACF图

#1.验证序列的平稳性
#Nile<-as.numeric(unlist(Nile1))
oil <-ts(Nile1,start = 1,end= 44,frequency = 1)#设置时间按序列
oil=oil[,2]
head(oil)
# win.graph(width=8, height=8,pointsize=8)
plot(oil,xlab="时间(月)",ylab="指数") #原始数据趋势图

tsdisplay(oil)#时序图、acf、pacf图

3.平稳性检验

#单位根检验 H0:非平稳;不平稳需进行差分、
adf.test(oil)
#install.packages("fUnitRoots")
library(fUnitRoots)
#unitrootTest(Nile)
#纯随机性 H0:白噪声;拒绝原假设可以继续分析
Box.test(Nile,type = "Ljung-Box",lag=6)#lag时间间隔

4.差分

#差分
ndiffs(oil)#判断需要几阶差分才能转化为平稳序列。可见,Nile需要2阶差分后变为平稳序列
dNile <- diff(oil,2)     #1阶差分 
plot(dNile)
#单位根检验差分后是否平稳
adf.test(dNile)
# win.graph(width=8, height=8,pointsize=8)
tsdisplay(dNile)#时序图、acf、pacf

5.确定ARIMA(p,d,q)

#定阶
eacf(dNile)
auto.arima(dNile)

fit<-arima(dNile,order=c(1,1,2),method="ML")
fit
BIC(fit)#查看模型BIC
accuracy(fit)  

6.残差诊断

#3.残差诊断
par(mfrow=c(1,1))
qqnorm(fit$residuals)  #画图   残差是否服从正态分布
qqline(fit$residuals)  #加线
shapiro.test(fit$residuals)
Box.test(fit$residuals, type="Ljung-Box") #残差独立性检验,不显著:残差平稳
tsdisplay(fit$residuals)

7.预测10期

#预测
library(stats)
fit=stats::arima(oil[1:44],order=c(2,1,2))
# oil.test=oil[35:44]
f.p1<-forecast(fit, 10,level=c(99.5))#预测20期
f.p1[[4]]

#作图
#win.graph(width=8, height=8,pointsize=8)
plot(f.p1[[4]], col="orange",xlab="days",ylab="price",type='l')

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代号跳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值