我刚开始学习 R 和时间序列预测。 我正在预测 1 个变量(消费)和一个外生变量(收入)。这是季度数据。 当我用 R 代码运行模型时,
#train_exp <- exp_trial[,1][1:150]
#train_inc <- exp_trial[,2][1:150]
model_train_exp <- arima(train_exp,order = c(0,2,6),seasonal = list(order=c(0,1,1),period = 4), xreg = train_inc)
这个模型没有错误。但是,当我预测它时,出现错误 xreg' and 'newxreg' have different numbers of columns
forcasted_arima <- forecast.Arima(model_train_exp, h=14)
关于 forecast.arima 的争论有很多。我不熟悉那些。 谁能告诉我它的代码应该是什么?
最佳答案
模型使用train_inc
制作模型。它需要更多的 train_inc
值才能完成预测。这样想,您以 train_exp_t0 = b1 + b2*train_exp_t-1 + b3*train_inc_t0
的形式构建模型。有了这个模型,如果有人为 train_exp_t-1
(昨天的消费)和 train_inc_t0
(今天的收入值)提供一个值,该模型将返回一个 train_exp_t0
(今天的消费)。您需要为其提供一些 train_inc
值才能得到结果。
示例
train_exp = rnorm(20)
train_inc = 1 + rnorm(20)
fit <- arima(train_exp, xreg=train_inc)
predict(fit, h=14)
# Error in predict.Arima(fit, h = 14) :
# 'xreg' and 'newxreg' have different numbers of columns
我们遇到了与您遇到的相同的错误。但是,当我们为 train_inc
提供新值时,它就起作用了!
new_train_inc <- rnorm(14)
predict(fit, newxreg=new_train_inc)
# $pred
# Time Series:
# Start = 21
# End = 34
# Frequency = 1
# [1] -0.2444872 -0.1583624 -0.2042488 -0.2143231 -0.1992276 -0.2047153 -0.2431517 -0.1887002 -0.2480745 -0.2118920
# [11] -0.1281492 -0.2067001 -0.2202669 -0.2166019
#
# $se
# Time Series:
# Start = 21
# End = 21
# Frequency = 1
# [1] 1.153433
如果仍然没有意义,请记住您正在预测 train_exp
,而不是 train_inc
。
如果您想进行更正式的讨论 see here at Cross Validated
关于r - 收到错误 "' xreg' 和 'newxreg' 有不同的列数”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37642335/