我试图在R中使用ARIMAX建立一个预测模型,并需要一些关于在xreg参数中如何处理协变量的指导。
据我所知,auto.arima函数在拟合模型时考虑协变量的差异(根据训练期间的数据),也不需要对协变量进行差异来生成测试期的预测(未来值)。然而,在R中使用Arima()模型拟合自定义(p,d,q)和(P,D,Q)m值时,当d或D大于0时,是否需要手工进行协变量的差分?如果进行差分,则得到的问题是,差分协变量矩阵的长度小于因变量的数据点数。
我们该如何处理这件事?
此外,在生成未来期间的预测时,我如何传递协变量值(按其本身或差异后)?
我使用以下代码:
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))
请给我建议。
发布于 2018-03-22 11:03:51
Arima
将按照顺序和季节性参数中指定的响应变量和xreg变量进行区别。你不应该做你自己的区别。
https://stackoverflow.com/questions/49404108
复制相似问题