Rのパッケージを使用してベクトル自己回帰モデルを学習しようとしていvars
ます。このパッケージには、返されたモデルの精度を測定する方法がありません。
accuracy
具体的には、Rのパッケージの関数で定義されているように MASE を使用してforecast
、VAR を使用した予測と、各コンポーネントの時系列での Arima モデルを使用した予測を比較したいと考えています (相関する可能性のある 4 つの時系列を使用しています)。によって返されたオブジェクトaccuracy
を認識しません。各予測コンポーネントの MASE を取得するにはどうすればよいですか? サンプル内精度とサンプル外精度の両方を計算したいvarest
vars
コード例:
library(vars)
library(forecast)
data(Canada)
v<- VAR(window(Canada, end=c(1998,4)), p=2)
accuracy(v$varresult[[1]])
の引数accuracy
は lm オブジェクトであり、シリーズ 1 のトレーニング精度を次のように返します。
ME RMSE MAE MPE MAPE MASE
Training set 1.536303e-15 0.3346096 0.2653946 -1.288309e-05 0.0281736 0.03914555
次のようなものを使用してサンプル外のテスト精度を取得したい (予測期間を指定する必要があるため、正確にはこれとは異なる):
accuracy(v$varresult[[1]], window(Canada[,1], start=c(1999,1)))
ただし、これは lm オブジェクトではサポートされておらず、エラーが返されます
Error in testaccuracy(f, x, test) : Unknown list structure
また、次のように値を直接使用すると、トレーニング セットに関する情報を必要とする MASE を取得できません。ts
これは、オブジェクトではなく値が使用されるため、off-by-one エラーが発生しやすくaccuracy
、保存された時間と直接一致します。
p<-predict(v, n.ahead=8)
accuracy(p$fcst[[1]][,"fcst"],window(Canada[,1], start=c(1999,1)))
ME RMSE MAE MPE MAPE ACF1 Theil's U
Test set -0.1058358 0.8585455 0.7385238 -0.01114099 0.07694492 0.5655117 1.359761
理想的には、次のように予測する必要があります。
fr<-forecast(v$varresult[[1]], h=8)
しかし、予測のために他のシリーズが必要なため、これは機能しません。
Error in eval(expr, envir, enclos) : object 'datamat' not found
etcの機能をコピーしてパッケージを作成することもできますが、もっと簡単な方法はありますか?forecast.Arima
forecast.varresult