- 數據來源: 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'))

#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')
