在传递给 R 中 Arima() 的 xreg 参数之前,我们是否需要对外生变量进行微分?



我正在尝试在 R 中使用 ARIMAX 构建一个预测模型,并需要一些关于如何在 xreg 参数中处理协变量的指导。

我知道,auto.arima 函数在拟合模型(从训练周期数据)时负责协变量的差分,我也不需要差分协变量来生成测试周期(未来值)的预测。 但是,在 R 中使用自定义 (p, d, q) 和 (P, D, Q)[m] 值与 d 或 D 大于 0 的 Arima() 拟合模型时,我们是否需要手动对协变量进行差分? 如果我进行差分,我会遇到一个问题,即差分协变量矩阵的长度小于因变量的数据点数。

应该如何处理这个问题?

  • 我应该按原样发送协变量矩阵,即没有差分吗?
  • 我是否应该进行差分但省略前几个没有差分协变量数据的观测值?
  • 我是否应该保留差异协变量值不可用的前几行的实际值,而其余行具有差异值?
  • 如果我必须将标志变量 (1/0) 传递给 xreg 矩阵,我是否也应该对这些变量进行差分,或者将标志变量的实际值与剩余变量的差异值绑定?

此外,在生成未来期间的预测时,如何传递协变量值(原样或差分后)?

我正在使用以下代码:

ndiff <- ifelse(((pdq_order == "auto") || (PDQ_order == "auto")), ndiffs(ts_train_PowerTransformed), pdq_order[2])
nsdiff <- ifelse(((pdq_order == "auto") || (PDQ_order == "auto")), nsdiffs(ts_train_PowerTransformed), PDQ_order$order[2])
# Creating the appropriate covariates matrix after doing differencing
ifelse(nsdiff >= 1
, ifelse(ndiff >= 1
, xreg_differenced <- diff(diff(ts_CovariatesData_TrainingPeriod, lag =  PDQ_order$period, differences = nsdiff),  lag = 1, differences = ndiff)
, xreg_differenced <- diff(ts_CovariatesData_TrainingPeriod , lag =  PDQ_order$period, differences = nsdiff)
)
, ifelse(ndiff >= 1
, xreg_differenced <- diff( ts_CovariatesData,  lag = 1, differences = ndiff)
, xreg_differenced <- ts_CovariatesData
)
# Fitting the model
model_arimax <- Arima(ts_train_PowerTransformed, order = pdq_order, seasonal = PDQ_order, xreg = xreg_differenced)) 
# Generating Forecast for the test period
fit.test <- model_arimax %>% forecast(h=length(ts_test), 
xreg = as.data.frame(diff(diff(ts_CovariatesData_TestPeriod, lag =  PDQ_order$period, differences = nsdiff),  lag = 1, differences = ndiff))

恳请建议。

Arima将区分顺序和季节性参数中指定的响应变量和 xreg 变量。你永远不需要自己做差异。

相关内容

最新更新