r - 收到错误 "' xreg' 和 'newxreg' 有不同的列数”

标签 r

我刚开始学习 R 和时间序列预测。 我正在预测 1 个变量(消费)和一个外生变量(收入)。这是季度数据。 当我用 R 代码运行模型时,

    #train_exp <- exp_trial[,1][1:150]    
    #train_inc <- exp_trial[,2][1:150]    

enter image description here

    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/

相关文章:

regex - R 中的正则表达式无效

R 检查两个列表中的排序顺序

r - 将误差线 (geom_errorbar) 水平置于柱 (geom_bar) 上

r - 在 Rscript.exe 中执行表达式

r - 计算向量中左右邻居平均值的矢量化方法

r - 带单选按钮的 Shiny 无功值

c++ - 使用 Rcpp 进行 vector 回收

r - Packrat:快照与恢复的顺序重要吗?

r - 在下三角形内抓取三角形

r - 导入数据集时出现问题: `Error in scan(...): line 1 did not have 145 elements`