基於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