经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » R语言 » 查看文章
基于R语言的尼罗河流量预测
来源:cnblogs  作者:silverangel  时间:2018/12/18 9:36:15  对本文有异议
  • 数据来源: R语言自带 Nile 数据集(尼罗河流量)
  • 分析工具:R-3.5.0 & Rstudio-1.1.453
  • 本篇只是一个简单的分析,不做深究,希望各路大佬指正
  1. #清理环境,加载包
  2. rm(list=ls())
  3. library(forecast)
  4. library(tseries)
  5. #趋势查看
  6. plot(Nile)

  1. #平稳性检验
  2. #自相关图
  3. acf(Nile)

  1. #偏相关图
  2. pacf(Nile)

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

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

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

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

  1. acf(Nile_diff)

  1. pacf(Nile_diff)

  1. adf.test(Nile_diff)

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

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

  1. # 残差正态性检验
  2. qqnorm(mod$residuals)
  3. qqline(mod$residuals)

  1. qqnorm(mod_auto$residuals)
  2. qqline(mod_auto$residuals)

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

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

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

  1. plot(Nile,col='pink')
  2. par(new=T)
  3. plot(pre,col='green')

  1. plot(pre,col='green')

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号