R語言神經(jīng)網(wǎng)絡(luò)模型預(yù)測車輛數(shù)量時間序列
原文鏈接:http://tecdat.cn/?p=19980
?
具有單個隱藏層和滯后輸入的前饋神經(jīng)網(wǎng)絡(luò),可以用于預(yù)測單變量時間序列。將神經(jīng)網(wǎng)絡(luò)模型擬合到以時間序列的滯后值作為輸入的時間序列。因此它是一個非線性的模型,不可能得出預(yù)測區(qū)間。
因此我們使用仿真。
讀取數(shù)據(jù)進行可視化:
## # A tibble: 6 x 2
## ? ? ? ? Date Actual
## ? ? ? <dttm> ?<dbl>
## 1 2016-01-11 ? ? 26
## 2 2016-01-18 ? ? 27
## 3 2016-01-25 ? ? 28
## 4 2016-02-01 ? ? 22
## 5 2016-02-08 ? ? 27
## 6 2016-02-15 ? ? 31
?
dat%>%ggplot(aes(Date,Actual))+
labs(title = "耐久性車輛預(yù)測", x = "時間", y = "耐用車輛數(shù)量",
subtitle = " 2016 & 2017年數(shù)據(jù)") +

?
#數(shù)據(jù)必須為數(shù)字,tsclean函數(shù)才能正常工作
dat%>%dplyr::rename(Date=Week)%>%na.omit()
dat_ts = ts(dat["實際數(shù)量"])
?
nn(data, lambda=0.5)
Average of 20 networks, each of which is
a 1-1-1 network with 4 weights
options were - linear output units
sigma^2 estimated as 0.2705
我使用了Box-Cox變換,其中λ=0.5,
確保殘差同方差。
該模型可以寫成:

其中yt-1 =(yt-1,yt-2,?,yt-8)是包含序列的滯后值的向量,f是一個神經(jīng)網(wǎng)絡(luò),在單個層中具有4個隱藏節(jié)點。
通過從正態(tài)分布或從歷史值中重采樣隨機生成?t的值,我們可以迭代地模擬該模型的未來樣本路徑。
因此,如果{? ? T + 1}是從時間T + 1的誤差分布中隨機抽取的,則

是從yT + 1的預(yù)測分布中得出的一種概率。設(shè)置
y * T + 1 =(y * T + 1,yT,?,yT-6)然后我們可以重復(fù)此過程來獲得

我們可以迭代地模擬未來的樣本路徑。通過反復(fù)模擬樣本路徑,我們基于擬合的神經(jīng)網(wǎng)絡(luò)建立了所有未來值的分布。這是對數(shù)據(jù)的9種將來可能的采樣路徑的模擬。每個樣本路徑覆蓋了觀測數(shù)據(jù)之后的未來20年。
plot(dat_ts) + autolayer(sim)

如果執(zhí)行此操作幾百或數(shù)千次,則可以很好地了解預(yù)測分布。預(yù)測區(qū)間:
?
plot(fcast)

模擬次數(shù)為1000。默認(rèn)情況下,誤差來自于正態(tài)分布。

?

?


最受歡迎的見解
1.用于NLP的Python:使用Keras的多標(biāo)簽文本LSTM神經(jīng)網(wǎng)絡(luò)分類
2.Python中利用長短期記憶模型LSTM進行時間序列預(yù)測分析 – 預(yù)測電力消耗數(shù)據(jù)
3.python在Keras中使用LSTM解決序列問題
4.Python中用PyTorch機器學(xué)習(xí)分類預(yù)測銀行客戶流失模型
5.R語言多元Copula GARCH 模型時間序列預(yù)測
6.在r語言中使用GAM(廣義相加模型)進行電力負(fù)荷時間序列分析
7.R語言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于預(yù)測時間序列數(shù)
8.R語言估計時變VAR模型時間序列的實證研究分析案例
9.用廣義加性模型GAM進行時間序列分析
?