2016-07-29 3 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は、トレーニングデータで計算されたスケーリング係数を使用します。季節データの場合、デフォルトのスケーリング係数は絶対的な季節差の平均です。 1年間のデータでは、季節差を計算することはできないため、スケーリング係数はNaNです。しかし

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

私はちょうどdD引数は無視されている意味accuracy()にバグがあることに気づいた、次のように

はあなたではなく、最初の差に基づいて、スケーリング係数を使用することができます。これで修正され、githubのバージョンは指定された引数を使用します。

+0

スケーリング係数を計算するための最小データサイズはどのくらいですか?毎月のデータは2年ですか? – iatowks

+0

季節の長さの1つ以上。毎月のデータは13です。 –

関連する問題