【问题标题】:R: Why does it mean when the MASE of a forecast model is NaN?R:为什么这意味着预测模型的 MASE 是 NaN?
【发布时间】:2016-07-29 01:15:55
【问题描述】:

查看此月度数据:

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 指标对我来说非常重要,我想用它来比较我的时间序列数据的多个模型。

【问题讨论】:

  • 我怀疑您的缩放数据太少

标签: r time-series forecasting


【解决方案1】:

MASE 使用根据训练数据计算的比例因子。对于季节性数据,默认比例因子是绝对季节性差异的平均值。只有一年的数据,您无法计算季节性差异,因此比例因子为 NaN。

您可以使用基于一阶差异的比例因子,如下所示:

accuracy(fcast, test, d=1, D=0)

但是,我刚刚注意到 accuracy() 中有一个错误,这意味着 dD 参数被忽略了。现在已修复,github 上的版本将使用指定的参数。

【讨论】:

  • 计算比例因子的最小数据量是多少?每月数据为 2 年?
  • 比季节性的长度多一个。因此,每月数据为 13。
猜你喜欢
  • 2011-12-28
  • 1970-01-01
  • 2019-05-18
  • 2014-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多