当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)
将数据划分为训练集和测试集
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