Auto.Arima循环和预测

时间:2015-08-14 01:48:07

标签: r

全部, 我有一个看似基本的问题,但我很挣扎。我正在尝试跨两组数据使用Auto.Arima功能。有两个标签:

GO.DIBTWS003_BATT_VOLT and GO.MIPLES004_BATT_AVE

数据是:

                          tag                time value
1  GO.DIBTWS003_BATT_VOLT 2015-08-05 04:00:00  8.51
2  GO.DIBTWS003_BATT_VOLT 2015-08-05 08:00:00  8.51
3  GO.DIBTWS003_BATT_VOLT 2015-08-05 08:15:00  8.46
4  GO.DIBTWS003_BATT_VOLT 2015-08-05 08:30:00  8.51
5   GO.MIPLES004_BATT_AVE 2015-08-05 07:00:00  7.70
6   GO.MIPLES004_BATT_AVE 2015-08-05 08:30:00  7.70
7   GO.MIPLES004_BATT_AVE 2015-08-05 08:45:00  7.59
8   GO.MIPLES004_BATT_AVE 2015-08-05 09:00:00  7.66
9   GO.MIPLES004_BATT_AVE 2015-08-05 09:15:00  7.72
10  GO.MIPLES004_BATT_AVE 2015-08-05 09:30:00  7.72
11  GO.MIPLES004_BATT_AVE 2015-08-05 09:45:00  7.73

我想运行一个脚本来为每个模型找到最佳的Arima模型,然后绘制他们的预测。打破这两个数据集的最佳方法是什么,运行auto.arima和预测?

1 个答案:

答案 0 :(得分:0)

鉴于没有足够的信息来推断您的预测意图的详细信息,并假设有关arima的知识,我将提供您可能必须适应您的数据和需求的示例代码:

library(dplyr)
preds <-  data %>%    
           group_by(tag) %>%   
           do( {
                xt <- ts( .[,3], frequency=12)
                fit <-     arima(xt ,
                                 order= c(3,0,0),  
                                 method="ML"
                                )
                pred <- forecast(fit, h=12)
                data.frame(.,pred)
              }) 

您实际上在做的是使用dplyr的链接运算符%&gt;%来链接操作。您可以参考Stackoverflow线程:Accessing grouped data in dplyr以更好地理解do()函数如何工作,但实质上,您将每个数据子集传递给do()函数。 do函数将数据转换为timeseries对象(您必须根据需要定义频率),适合arima模型(如果需要,可以将auto.arima()置于此处),然后预测(再次适应您的需求) ,最后返回预测。玩得更好理解。