【问题标题】:Return Model with lowest value from list从列表中返回具有最低值的模型
【发布时间】:2016-04-28 05:44:43
【问题描述】:

我有下面的代码,我认为为一组具有给定范围的参数创建每个组合,然后为这些顺序参数组合创建所有 Arima 模型,然后为所有模型创建预测,然后计算 mape,(是一个误差度量),对于每个预测。

我很好奇我是否正确地使用了 lapply 来预测模型并计算每个模型的 mape?我没用过 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)

【问题讨论】:

    标签: r loops lapply forecasting


    【解决方案1】:

    返回模型的方法如下

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

    如果您需要,请告诉我。最后一行只是用于验证它确实是正确的类。

    【讨论】:

      猜你喜欢
      • 2017-11-24
      • 2023-04-11
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 2016-09-03
      • 2022-11-15
      • 1970-01-01
      相关资源
      最近更新 更多