2016-04-28 6 views
0

У меня есть код, который, как я думаю, создает каждую комбинацию для набора параметров с заданными диапазонами, затем создает все модели Arima для этих комбинаций параметров порядка, затем создает прогнозы для всех моделей и затем вычисляет карту, (которая является мерой ошибки) для каждого из прогнозов.Модель возврата с наименьшим значением из списка

Мне любопытно, если я правильно использовал прогнозы, чтобы предсказать модели и вычислить карту для каждой модели? Я не так много использовал.

Для последнего шага я хотел бы вернуть параметры модели или порядка, которые создают прогноз с самым низким значением mape. Если кто-нибудь может предложить, как это сделать, или указать аналогичный пример, я был бы благодарен.

Код:

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