我正在尝试在 R 中使用 ARIMAX 构建预测模型,并需要一些关于如何在 xreg 参数中处理协变量的指导。
据我了解,auto.arima 函数在拟合模型(来自训练期数据)时负责协变量的差异,并且我也不需要差异协变量来生成测试期(未来值)的预测。
然而,当使用 R 中的 Arima() 与自定义 (p, d, q) 和 (P, D, Q)[m] 值(d 或 D 大于 0)拟合模型时,我们是否需要手动对协变量?
如果我进行差分,我会得到这样的问题:差分协变量矩阵的长度小于因变量的数据点的数量。
应该如何处理这个问题呢?
- 我应该按原样发送协变量矩阵吗?即没有差异?
- 我是否应该进行差分但忽略没有差分协变量数据的前几个观察结果?
- 我是否应该保留前几行的实际值,其中差异协变量值不可用,而其余行具有差异值?
- 如果我必须将标志变量 (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))
请建议。