首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在传递给R中Arima()的xreg参数之前,我们需要对外生变量进行差分吗?

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

Stack Overflow用户
提问于 2018-03-21 10:39:52
回答 1查看 1.6K关注 0票数 2

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

据我所知,auto.arima函数在拟合模型时考虑协变量的差异(根据训练期间的数据),也不需要对协变量进行差异来生成测试期的预测(未来值)。然而,在R中使用Arima()模型拟合自定义(p,d,q)和(P,D,Q)m值时,当d或D大于0时,是否需要手工进行协变量的差分?如果进行差分,则得到的问题是,差分协变量矩阵的长度小于因变量的数据点数。

我们该如何处理这件事?

  • 我应该发送协变量矩阵作为它是,即没有差?
  • 我是否应该做差分,但忽略前几次观测,对于那些差异的协变量数据是不可得的?
  • 对于不存在差异协变量值的前几行,是否应该保留实际值,而其余行是否保留有不同值的行?
  • 如果我必须将标志变量(1/0)传递给xreg矩阵,我也应该对这些变量进行差分,还是用剩余变量的差值来绑定标志变量的实际值?

此外,在生成未来期间的预测时,我如何传递协变量值(按其本身或差异后)?

我使用以下代码:

代码语言:javascript
运行
复制
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))

请给我建议。

EN

回答 1

Stack Overflow用户

发布于 2018-03-22 11:03:51

Arima将按照顺序和季节性参数中指定的响应变量和xreg变量进行区别。你不应该做你自己的区别。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49404108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档