當ARIMA模型包括其它時間序列作為輸入變量時,被稱為傳遞函數模型(transfer function model)、多變量時間序列模型(multivariate time series model)、ARIMAX模型或Box-Tiao模型。傳遞函數模型是ARIMA模型的自然推廣,Pankratz統稱這種包含其它時間序列作為輸入變量的ARIMA模型為動态回歸。
用于預測的 Arima
加載相關包和資料
1. bata<-read.csv
2. colnames(bata)
3. bata<-bata[order(as.Date,]
4. bata<-bata[order(as.Date,]
5. bata$workda<-as.factor
6. head(bata)
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAnYldHL0FWby9mZvwFN4ETMfdHLkVGepZ2XtxSZ6l2clJ3LcV2Zh1Wa9M3clN2byBXLzN3btgHL9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsQTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SO2QDO5MTNhZTOhRDNzImNzYzXyAjMwMTM5AzLcFTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
将資料劃分為訓練集和測試集
1. #ARIMA 程式設計開始
2. ## 75% 的樣本量
3. smsize <- floor(0.95 * nrow)
4. print(smze)
1. ## 設定種子可重制
2. set.seed(123)
3. traid <- sample
4. trn <- bata[1:smize, ]
5. tet <- baata[smp_size+1:nrow, ]
6. tet<-na.omit
建立預測矩陣
1. xreg <- cbind(as_workday=model.matrix,
2. Temp,
3. Humid,
4. Winds
5. )
6.
7. # 删除截距
8. xg <- xg[,-1]
9.
10. # 重命名列
11. colnames<- c("Aldays","Tep","Humty","Wined")
12.
13. #為測試資料建立相同的
14.
15. xrg1 <- cbind
16. # 删除截距
17. xreg1 <- xre1[,-1]
18.
19. # 重命名列
20. colnames <- c("Aays","Te","uiiy","Wnsed")
為 arima 預測的訓練資料建立時間序列變量
Cont <- ts
推論:由于資料是每天的,頻率為 365,開始日期為 2016-7-7
用季節性拟合 ARIMA 模型
Fo_aes<-forecast
計算測試資料集 MSE
mean((tt - Finlues)^2)
在去除季節性之前繪制預測值
- library(ggplot2)
無季節性拟合 ARIMA
去除季節性資料集和繪圖
decata = decompos
### 查找去季節資料的 ARIMAX 模型
moesea
Foecs<-forecast
去除季節性後繪制預測值
- library(ggplot2)
- plot(Co, series="Data") +
- autolayer+
- autolayer
均方誤差分量
mean((tount - Fis_des)^2)
通過采用滞後變量的輸出以及滞後 1,2 的輸入進行動态回歸
1. x<-train[order,]
2.
3. ti_ag <- x %>%
4. mutate
5. x1<-test
6. testg <- x1 %>%
7. mutate
使用動态滞後變量的 OLS 回歸
mlm <- lm
推論:僅保留 P 值 <0.05 的重要變量并删除其他變量
僅保留重要變量的情況下重新建立 OLS 回歸
- Myal <-lm
- summary(Myal )
在測試資料上預測相同以計算 MSE
1. prynm<-predict
2.
3.
4. # 動态回歸的均方誤差
5. mean((teunt - tPrecd)^2)
繪制預測與實際
- plot
- abline