【问题标题】:Auto.Arima Loop and ForecastAuto.Arima 循环和预测
【发布时间】:2015-08-14 01:48:07
【问题描述】:

所有, 我有一个看似基本的问题,但我很挣扎。我正在尝试在两组数据中使用 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 和预测的最佳方法是什么?

【问题讨论】:

  • 注意到我在这里被否决了。如果有不清楚的地方,请告诉我,以便我帮助澄清问题。

标签: r


【解决方案1】:

鉴于没有足够的信息来推断您的预测意图的详细信息,并且假设您了解 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 的链接运算符 %>% 链接操作。您可以参考 Stackoverflow 线程:Accessing grouped data in dplyr 以更好地理解 do() 函数的工作原理,但本质上,您将每个数据子集传递给 do() 函数。 do 函数将数据转换为时间序列对象(您必须根据需要定义频率),拟合 arima 模型(如果需要,您可以将 auto.arima() 放在这里),然后预测(再次适应您的需要) ,最后返回预测。玩玩以获得更好的理解。

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 2019-12-28
    • 1970-01-01
    • 2021-10-18
    • 2013-04-09
    • 2018-04-11
    • 2019-03-19
    • 2018-09-08
    相关资源
    最近更新 更多