基于R语言的时间序列分析预测


  • 数据来源: R语言自带 Nile 数据集(尼罗河流量)
  • 分析工具:R-3.5.0 & Rstudio-1.1.453
#清理环境,加载包
rm(list=ls()) library(forecast) library(tseries) #趋势查看 plot(Nile) 

#平稳性检验 #自相关图 acf(Nile) 

#偏相关图 pacf(Nile) 

#也可以直接用tsdisplay查看 tsdisplay(Nile) 

#单位根检验 adf.test(Nile) 

  • 从自相关图上看,自相关系数没有快速衰减为0,呈拖尾,单位根检验进一步验证,存在单位根,所以序列为非平稳序列
#做序列差分 #可以用ndiffs判断需要做几阶差分 ndiffs(Nile) 

  • 需要做一阶差分
#做一阶差分,然后再进行检验 Nile_diff=diff(Nile,1) plot(Nile_diff) 

acf(Nile_diff) 

pacf(Nile_diff) 

adf.test(Nile_diff) 

#建立模型 (mod=arima(Nile,order=c(0,1,1),method='ML')) 

  • 根据acf图和pacf图,拟定为0,1,1
#auto.arima通过选取AIC和BIC最小来选取模型,与根据acf和pacf图建立的模型进行比较 (mod_auto=auto.arima(Nile)) 

# 残差正态性检验 qqnorm(mod$residuals) qqline(mod$residuals) 

qqnorm(mod_auto$residuals) qqline(mod_auto$residuals) 

# 残差白噪检验 Box.test(mod$residuals,type='Ljung-Box') 

Box.test(mod_auto$residuals,type='Ljung-Box') 

  • 根据检验结果来看,还是选择根据acf图和pacf图建立的模型比较好
# 进行预测 (pre=forecast(mod,5)) 

plot(Nile,col='pink') par(new=T) plot(pre,col='green') 

plot(pre,col='green') 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM