我如何需要从 diff(log(data),1) 进行反转换?

机器算法验证 r 时间序列 数据转换
2022-03-29 11:58:47

我将 ARIMA 应用于时间序列数据集 ( dataset)。

为了归档固定,我应用了以下步骤:

  1. 对数转换log_dataset <- log(dataset)
  2. difflog_dataset <- diff(log_dataset,1)到我的数据集。
  3. 我用 Ljung-Box 测试了静止的。

我完全适合difflog_datasetARIMA(1,0,2)。

fit <- Arima(difflog_dataset, order=c(1,0,2))

我是否需要从fitted(fit)获取y^价值?我怎样才能做到这一点 ?

1个回答

说你的原始系列是yt并定义转换后的系列:

y~t=log(yt)log(yt1)

然后,您预测y~t+1通过使用您的 ARIMA(1,0,2) 模型,给您y~^t+1,但你想要一个预测yt+1. 你可以这样计算:

y^t+1=ytexp(y~^t+1)

更一般地,您可以验证以下伸缩总和:

log(yt)=log(y0)+i=1t(log(yi)log(yi1))

意味着逆变换是:

yt=y0exp(i=1ty~i)

实际上,forecast::Arima如果您在函数调用中指定对数转换和差异,而不是在调用它之前手动执行,那么您正在使用的函数将为您完成所有这些工作:

fit <- Arima(dataset, order=c(1,1,2), lambda=0)