R,时间序列,在R

时间:2016-11-15 08:07:21

标签: r for-loop time-series

我有一个包含79个项目的数据集,其中列id_numberid_sales每个id_number有37个月的数据。 另一个数据集是id_no,它在前面提到的数据集中只有唯一的79个id_numbers,对于我想要从3个不同的预测模型(存储在名为model的数据集中)和所有alpha值从0到0.9(存储在名为alpha_val的数据集) 。最后,使用rbind将id_number,模型名称,alpha值及其对应的mape值连续存储在数据集(名为mape_table_final)中。我使用以下代码:

  for(k in 0:length(id_no))
{  
for(i in 0:length(model))
   {
    for(j in 0:length(alpha_val))
      {
        sales_idwise <- test_1[test_1$id_number== id_no[k],]
        sales_pre_ts<- ts(sales_idwise$id_sales, frequency = 12)
        sales_pre_ets <- ets(sales_pre_ts, model = model[i],alpha= alpha_val[j])
        sales_fc <- forecast.ets(sales_pre_ets,h=7)
        acc <- accuracy(sales_fc)
        mape_table <- data.frame("id_number"="09873564", "modelname" = "AAA", 
                 "alphavalue" = 0.1, "mapevalue" = acc[[5]]) # Number 5 indicates the position of MAPE in the accuracy list
        mape_table_final <- rbind(mape_table_final,mape_table)

       }

    }
}

一旦我运行循环,我的第一个时间序列创建的行就会出错,即

sales_pre_ts<- ts(sales_idwise$id_sales, frequency = 12)

说:

  

'ts' object must have one or more observations

任何人都可以帮我解决此错误或帮助修改代码吗?我很长时间都在努力解决这个问题。我正在使用的包是plyr,预测,动物园。

提前致谢

0 个答案:

没有答案