R:为什么说预测模型的 MASE 是 NaN?
R: Why does it mean when the MASE of a forecast model is NaN?
查看这个月度数据:
tsdata <- structure(c(9.55584, 42.31872, 17.064, 54.26352, 79.51824, 44.3664,
82.58976, 129.6864, 70.64496, 102.384, 118.08288, 99.31248, 151.8696,
172.68768, 129.34512), .Tsp = c(2015.25, 2016.41666666667, 12
), class = "ts")
plot(tsdata)
然后,我将系列分成训练集和测试集:
training <- structure(c(9.55584, 42.31872, 17.064, 54.26352, 79.51824, 44.3664,
82.58976, 129.6864, 70.64496, 102.384, 118.08288, 99.31248),
.Tsp = c(2015.25, 2016.16666666667, 12), class = "ts")
test <- structure(c(151.8696, 172.68768, 129.34512), .Tsp = c(2016.25, 2016.41666666667, 12), class = "ts")
最后,我拟合了一个 tbats
模型并计算了 MASE 值
require(forecast)
fit <- tbats(training)
fcast <- forecast(fit)
accuracy(fcast, test)
ME RMSE MAE MPE MAPE MASE ACF1 Theil's U
Training set -0.9012629 20.02206 16.33986 -22.70125 40.40976 NaN -0.3870826 NA
Test set 12.3136351 25.58155 24.77819 6.50544 16.14211 NaN -0.2992376 0.860442
您看到无法计算 MASE。实际上,forecast
包中的所有其他模型也为 MASE 输出 NaN。
为什么? MASE 指标对我来说非常重要,我想用它来比较我的时间序列数据的多个模型。
MASE 使用在训练数据上计算的比例因子。对于季节性数据,默认比例因子是绝对季节性差异的平均值。只有一年的数据,无法计算季节性差异,因此比例因子为 NaN。
您可以使用基于一阶差分的比例因子,而不是如下所示:
accuracy(fcast, test, d=1, D=0)
但是,我刚刚注意到 accuracy()
中存在错误,这意味着 d
和 D
参数被忽略了。现在已修复,github 上的版本将使用指定的参数。
查看这个月度数据:
tsdata <- structure(c(9.55584, 42.31872, 17.064, 54.26352, 79.51824, 44.3664,
82.58976, 129.6864, 70.64496, 102.384, 118.08288, 99.31248, 151.8696,
172.68768, 129.34512), .Tsp = c(2015.25, 2016.41666666667, 12
), class = "ts")
plot(tsdata)
然后,我将系列分成训练集和测试集:
training <- structure(c(9.55584, 42.31872, 17.064, 54.26352, 79.51824, 44.3664,
82.58976, 129.6864, 70.64496, 102.384, 118.08288, 99.31248),
.Tsp = c(2015.25, 2016.16666666667, 12), class = "ts")
test <- structure(c(151.8696, 172.68768, 129.34512), .Tsp = c(2016.25, 2016.41666666667, 12), class = "ts")
最后,我拟合了一个 tbats
模型并计算了 MASE 值
require(forecast)
fit <- tbats(training)
fcast <- forecast(fit)
accuracy(fcast, test)
ME RMSE MAE MPE MAPE MASE ACF1 Theil's U
Training set -0.9012629 20.02206 16.33986 -22.70125 40.40976 NaN -0.3870826 NA
Test set 12.3136351 25.58155 24.77819 6.50544 16.14211 NaN -0.2992376 0.860442
您看到无法计算 MASE。实际上,forecast
包中的所有其他模型也为 MASE 输出 NaN。
为什么? MASE 指标对我来说非常重要,我想用它来比较我的时间序列数据的多个模型。
MASE 使用在训练数据上计算的比例因子。对于季节性数据,默认比例因子是绝对季节性差异的平均值。只有一年的数据,无法计算季节性差异,因此比例因子为 NaN。
您可以使用基于一阶差分的比例因子,而不是如下所示:
accuracy(fcast, test, d=1, D=0)
但是,我刚刚注意到 accuracy()
中存在错误,这意味着 d
和 D
参数被忽略了。现在已修复,github 上的版本将使用指定的参数。