2016-04-28 3 views
0

以下のコードは、ある範囲のパラメータセットに対してすべての組み合わせを作成し、それらの注文パラメータの組み合わせに対してすべてのArimaモデルを作成し、すべてのモデルの予測を作成します。その後、予測のそれぞれについて、マープ(エラー指標)を計算します。リストから最も低い値を返すモデル

lapplyを正しく使用してモデルを予測し、各モデルのマープを計算することができたら、私は不思議ですか?私はそれほど礼儀正しくは使用していない。

最後のステップでは、最も低いマープで予測を作成するモデルまたは注文パラメータを返信したいと思います。誰かがそれを行う方法を示唆することができる、または同様の例を指摘すれば私は感謝します。

コード:

library("fpp") 

## Partition Data 
tsTrain <- window(hsales,end=1989.99) 
tsTest <- window(hsales,start=1990) 

## Set Ranges for parameters 
pvar<-1:10 
dvar<-1:2 
qvar<-1:7 

## Create all combinations of parameters 
OrderGrid<-expand.grid(pvar,dvar,qvar) 

## Create model for each combination of parameters 
aFit <- function(a,b,c) {Arima(tsTrain, order=c(a,b,c),method="ML")} 
ModFit <- do.call(Vectorize(aFit, SIMPLIFY=FALSE), unname(OrderGrid)) 

## Forecast Models 
funcCast<-function(x){forecast(x,h=71)$mean} 
ModCast<-lapply(ModFit,funcCast) 

## Calculate Mape for Models 
ModAcc<-function(x){accuracy(x,tsTest)[1,5]} 
TestAcc<-lapply(ModCast,ModAcc) 

答えて

1

は、ここでは、

Acc_res<-do.call(rbind,TestAcc) 
res_num <- which(Acc_res==min(Acc_res)) 
res_model<-ModFit[[res_num]] 
class(res_model) 

は、それはあなたが必要なものであれば、私に教えてください、あなたのモデルを返すことができます方法です。最後の行は、それが実際に正しいクラスであることを確認するためのものです。

+0

ありがとうございます!これはまったくトリックでした。 – user3476463