我刚开始使用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&#39;和&#39; newxreg&#39;列数不同
forcasted_arima <- forecast.Arima(model_train_exp, h=14)
有很多关于forecast.arima的论据。我不熟悉那些。 有人可以告诉我它应该是什么代码吗?
答案 0 :(得分:2)
模型使用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