【问题标题】:R: Displaying ARIMA forecast as extension of past data after log transformationR:在对数转换后将 ARIMA 预测显示为过去数据的扩展
【发布时间】:2018-06-26 19:05:30
【问题描述】:

我的目标:我想了解一个时间序列,一个强自回归的序列(ACF 和 PACF 输出告诉我)并进行预测。

所以我首先将数据转换为 ts,然后分解时间序列,检查其平稳性(序列不是平稳的)。然后我进行了对数转换,找到了一个最适合数据的 Arima 模型 - 我用 accuracy(x) 检查了准确度 - 我选择了准确度输出最接近 0 的模型。

这是正确的程序吗?我是统计数据和 R 的新手,如果不正确,我将不胜感激。

在构建 Arima 模型时,我使用了以下代码:

ARIMA <- Arima(log(mydata2), order=c(2,1,2), list(order=c(0,1,1), period=12))

我收到的结果是一个日志函数,过去的数据(我用来构建模型的数据)没有显示在图表中。因此,为了将日志转换为原始比例,我使用了以下代码:

ARIMA_FORECAST <- forecast(ARIMA, h=24, lambda=0)

正确吗?我在网上的某个地方找到了它,但不是很明白。

现在我的主要问题是:如何在一张图中绘制原始数据和 ARIMA_FORECAST?我的意思是,如果不进行对数转换,则以显示预测的方式显示它——预测应该显示为过去数据的扩展,置信区间也应该存在。

【问题讨论】:

    标签: r plot time-series forecasting arima


    【解决方案1】:

    最简单的方法是在建模函数中设置 Box-Cox 变换参数 $\lambda=0$,而不是采用显式对数(参见 https://otexts.org/fpp2/transformations.html)。然后,在生成预测时,转换将自动反转。这比@markus 描述的方法更简单。例如:

    library(forecast)
    
    # estimate an ARIMA model to log data
    ARIMA <- auto.arima(AirPassengers, lambda=0)
    
    # make a forecast 
    ARIMA_forecast <- forecast(ARIMA)
    
    # Plot forecasts and data
    plot(ARIMA_forecast)
    

    或者,如果您更喜欢 ggplot 图形:

    library(ggplot2)
    autoplot(ARIMA_forecast)
    

    【讨论】:

    • 非常感谢 markus 和 Rob!我不知道它可以简化到那种程度。但我很高兴我现在使用您的方法收到的结果与我之前使用“手动”方法创建日志然后取消日志时收到的结果非常相似。
    • @RobHyndman 我不敢相信有人投票赞成我的答案,但不是你的。我希望通过我的(不太好的)回答,您的回答会更有效。 (+1)
    【解决方案2】:

    forecast 提供了autolayergeom_forecast 函数,可以帮助您绘制所需的绘图。这是使用AirPassengers 数据的示例。我使用函数auto.arima来估计模型。

    library(ggplot2)
    library(forecast)
    
    # log-transform data
    dat <- log(AirPassengers)
    
    # estimate an ARIMA model
    ARIMA <- auto.arima(dat)
    
    # make a forecast 
    ARIMA_forecast <- forecast(ARIMA, h = 24, lambda = 0)
    

    由于您的数据属于 ts 类,您可以使用 ggplot2 中的 autoplot 函数绘制原始数据,并使用 forecast 中的 autolayer 函数添加预测。

    autoplot(AirPassengers) + forecast::autolayer(ARIMA_forecast)
    

    结果如下所示。

    【讨论】:

      猜你喜欢
      • 2014-12-13
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-30
      • 2022-01-20
      • 2023-03-31
      • 1970-01-01
      相关资源
      最近更新 更多