2016-07-29 38 views
0

看到这个月度数据:R:为什么当一个预测模型的MASE是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) 

enter image description here

然后,我分裂串联成培训和试台:

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

+0

我怀疑你的缩放数据太少 –

回答

1

MASE使用计算在训练数据上的比例因子。对于季节性数据,默认比例因子是绝对季节差异的平均值。只有一年的数据,你不能计算季节差异,所以缩放因子是NaN。

你可以使用基于第一差异的比例因子代替如下:

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

不过,我只是注意到,有在accuracy()这意味着dD参数被忽略的错误。它现在已经修复,并且github上的版本将使用指定的参数。

+0

计算缩放因子的最小数据量是多少? 2年的月度数据? – iatowks

+0

比季节性更长。所以每月数据13。 –

相关问题