拓端tecdat|R語言用ARIMA模型預(yù)測巧克力的興趣趨勢時(shí)間序列
原文鏈接:http://tecdat.cn/?p=18850?
原文出處:拓端數(shù)據(jù)部落公眾號
在本文中我們對在Google趨勢上的關(guān)鍵字“?Chocolate?”序列進(jìn)行預(yù)測。序列如下
> report = read.csv(url,skip=6,header=FALSE,nrows=636)
> plot(X,type="l")

每月建立一個(gè)ARIMA模型比每周建立一個(gè)容易。因此,我們將每月數(shù)據(jù)序列化,將預(yù)測與觀察結(jié)果進(jìn)行比較。
> Y = tapply(base$X,as.factor(base$AM),mean)
> Z = ts(as.numeric(Y[1:(146-24)]), start=c(2004,1),frequency=12)

在這里轉(zhuǎn)換序列的對數(shù)序列。我們觀察到趨勢的變化(開始時(shí)是線性的,此后相對穩(wěn)定)。
> X=log(as.numeric(Z))
> trend=lm(X~T+I((T-80)*(T>80)),data=db)

這是我們要建模的序列殘差,
residuals(trend)

要對該序列進(jìn)行建模,我們可以先查看其自相關(guān)序列
> ?plot(acf(Y,lag=36),lwd=5)

和偏自相關(guān)序列
> plot(pacf(Y,lag=36),lwd=5)

該序列是穩(wěn)定的,但是有很強(qiáng)的周期性成分。我們可以嘗試AR模型或ARMA(帶有AR的殘差不是白噪聲)。
arima(Y,order=c(12,0,12),
+ seasonal = list(order = c(0, 0, 0 , period = 12 )
這里的殘差序列是白噪聲

然后,我們可以使用此模型對初始序列進(jìn)行預(yù)測
> Y2=tapply(base$X,as.factor(base$AM),mean)
> lines(futur,obs_reel,col="blue")

我們的模型為紅色,真實(shí)的觀察結(jié)果為藍(lán)色。然后,我們可以根據(jù)這24個(gè)觀測值計(jì)算誤差平方和。
> sum( (obs_reel-Xp)^2 )
[1] 190.9722
但是我們可以嘗試其他模型,例如通過更改趨勢或通過更改ARIMA模型(通過季節(jié)性單位根)來嘗試
> E=residuals(model3)
> model3
Coefficients:
ma1 ? ? ma2 ? ? sma1
0.2246 ?0.3034 ?-0.9999
s.e. ?0.0902 ?0.0925 ? 0.3503
sigma^2 estimated as 0.002842: ?log likelihood = 152.37, ?aic = -296.75
我們檢查殘差序列確實(shí)是白噪聲
Box-Pierce test
data: ?E
X-squared = 6.326, df = 12, p-value = 0.8988

然后,我們可以對原始系列進(jìn)行預(yù)測,
> Yp=predict(model3,n.ahead=24) +
+ ? predict(trend,newdata=data.frame(T=futur)
> Y2=tapply( X,as.factor( AM),mean)

誤差平方和低一些
> sum( (obs_reel-Xp)^2 )
[1] 173.8138
也就是說,在過去的兩年中,第二個(gè)模型比以前的模型要好,是對未來幾年進(jìn)行預(yù)測的好方法。

最受歡迎的見解
1.在python中使用lstm和pytorch進(jìn)行時(shí)間序列預(yù)測
2.python中利用長短期記憶模型lstm進(jìn)行時(shí)間序列預(yù)測分析
3.使用r語言進(jìn)行時(shí)間序列(arima,指數(shù)平滑)分析
4.r語言多元copula-garch-模型時(shí)間序列預(yù)測
5.r語言copulas和金融時(shí)間序列案例
6.使用r語言隨機(jī)波動模型sv處理時(shí)間序列中的隨機(jī)波動
7.r語言時(shí)間序列tar閾值自回歸模型
8.r語言k-shape時(shí)間序列聚類方法對股票價(jià)格時(shí)間序列聚類
9.python3用arima模型進(jìn)行時(shí)間序列預(yù)測