【发布时间】:2021-04-02 00:48:02
【问题描述】:
我对我的数据使用了 TBATS 模型,当我应用 forecast() 函数时,它会自动预测未来两年。我没有指定任何训练集或测试集,那么我怎么知道它使用了多少数据来预测未来两年?
我要处理的数据是 2016 年 1 月到 2020 年 1 月的 Uber 出行时间数据。我有 18 个城市的每日数据(采样频率 = 1),每个城市都有不同的样本量(范围从 1422 天到1459 天)。
我已将旅行时间向量设置为msts 对象,因为它具有多个季节性,用于 TBATS 模型。
当我计算 RMSE、MAE、MAPE 和 MSE 时,我通常会得到非常低的值,那么我如何知道 TBATS 正在训练哪些数据?
这是我的代码:
data <- read.csv('C:/users/Datasets/Final Datasets/final_a.csv', TRUE, ",")
y <- msts(data$MeanTravelTimeSeconds, start=c(2016,1), seasonal.periods=c(7.009615384615385, 30.5, 91.3, 365.25))
fit <- tbats(y)
plot(fit)
fc <- forecast(fit)
autoplot(fc, ylab = "Travel Time in Seconds")
# Check residuals (ACF and histogram)
checkresiduals(fc)
# RMSE
rmse <- sqrt(fit$variance)
# MAE
res <- residuals(fit)
mae <- mean(abs(res))
# MAPE
pt <- (res)/y
mape <- mean(abs(pt))
# MSE (Mean Squared Error)
mse <- mean(res^2)
TBATS 模型在阿姆斯特丹的性能结果是:
RMSE: 0.06056063
MAE: 0.04592825
MAPE: 6.474616e-05
MSE: 0.00366759
如果我必须手动选择测试集和训练集,我应该如何修改我的代码才能这样做?
【问题讨论】:
-
见
help("forecast.tbats"),论据h。 -
谢谢!所以 fc$fitted - y 会给我预测和真实值之间的距离,不是吗?
help("forecast.tbats")告诉我训练集的大小是最大季节性的两倍,但它是在我的数据集的哪个 sn-p 上训练的?可能是前两年,中间两年或最后两年。
标签: r time-series dataset training-data forecast