1

我的目标:我想了解一个时间序列,一个强自回归的序列(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?我的意思是如果不进行对数转换,则以显示预测的方式显示它——预测应该显示为过去数据的扩展,置信区间也应该存在。

4

2 回答 2

2

最简单的方法是在建模函数中设置 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)

在此处输入图像描述

于 2018-01-17T21:54:23.393 回答
1

该包forecast提供的功能autolayer可能geom_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,您可以使用autoplot函数 fromggplot2绘制原始数据并使用函数 from 添加autolayer预测forecast

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

结果如下所示。

在此处输入图像描述

于 2018-01-17T21:04:30.880 回答