預測到實際值差異()我已經看過轉換雙重差分R中
時間序列預測:轉換差分預測回差水平前
和
如何「undifference」一時間序列變量
這些都不幸給出了任何明確的答案,如何使用差分法(diff())在ARIMA中完成預測,以便在固定序列中達成。
代碼示例。
## read data and start from 1 jan 2014
dat<-read.csv("rev forecast 2014-23 dec 2015.csv")
val.ts <- ts(dat$Actual,start=c(2014,1,1),freq=365)
##Check how we can get stationary series
plot((diff(val.ts)))
plot(diff(diff(val.ts)))
plot(log(val.ts))
plot(log(diff(val.ts)))
plot(sqrt(val.ts))
plot(sqrt(diff(val.ts)))
##I found that double differencing. i.e.diff(diff(val.ts)) gives stationary series.
#I ran below code to get value of 3 parameters for ARIMA from auto.arima
ARIMAfit <- auto.arima(diff(diff(val.ts)), approximation=FALSE,trace=FALSE, xreg=diff(diff(xreg)))
#Finally ran ARIMA
fit <- Arima(diff(diff(val.ts)),order=c(5,0,2),xreg = diff(diff(xreg)))
#plot original to see fit
plot(diff(diff(val.ts)),col="orange")
#plot fitted
lines(fitted(fit),col="blue")
這給了我一個完美的合適時間系列。但是,如何將擬合的值從目前的形式轉換爲其原始度量?我的意思是從雙重差異到實際數字?對於log我知道我們可以做10 ^擬合(適合)平方根有類似的解決方案,但是如何做差分,這種雙差分?
對此有任何幫助請在R?經過幾天的嚴格練習,我被困在這一點上。
我跑了測試,以檢查差異對auto.arima函數的模型擬合是否有任何影響,並發現它。所以auto.arima無法處理非平穩系列,需要部分分析師將系列轉換爲平穩。
首先,auto.arima沒有任何差異。橙色是實際值,藍色是合適的。
ARIMAfit <- auto.arima(val.ts, approximation=FALSE,trace=FALSE, xreg=xreg)
plot(val.ts,col="orange")
lines(fitted(ARIMAfit),col="blue")
其次,我想差分
ARIMAfit <- auto.arima(diff(val.ts), approximation=FALSE,trace=FALSE, xreg=diff(xreg))
plot(diff(val.ts),col="orange")
lines(fitted(ARIMAfit),col="blue")
第三,我沒差分2倍。
ARIMAfit <- auto.arima(diff(diff(val.ts)), approximation=FALSE,trace=FALSE,
xreg=diff(diff(xreg)))
plot(diff(diff(val.ts)),col="orange")
lines(fitted(ARIMAfit),col="blue")
目視檢查可以建議第三圖形是更準確的所有的。我知道這一點。面臨的挑戰是如何將這種雙倍差異形式的擬合值轉換爲實際度量值!