2

我正在尝试在我创建的时间序列对象上使用预测包 v4.06 中的预测功能。根据我传递给时间序列函数以生成时间序列对象的向量的大小,我将在后续调用预测时抛出异常。

例如,创建一个长度为 6 的向量的时间序列对象,如下所示:

tsObj <- ts(tsVector[1:6], frequency=12, start=c(2013,4))

然后在该时间序列对象上调用预测函数:

pred <- forecast(tsObj, 1)

生成以下异常:

Error in lsfit(1:maxn, y.sa[1:maxn]) : 0 responses, but only 2 variables
In addition: Warning message:
In lsfit(1:maxn, y.sa[1:maxn]) : 6 missing values deleted

事实上,向量长度为​​ 4 到 11 会产生此错误,但长度为 1、2、3 或 >=12 的向量会成功生成适当的预测。对异常的任何见解将不胜感激。谢谢你的时间!

==================================================== ===============================

我相信我找到了 lsfit 的来源并找到了生成此异常的位置:

## check for compatible lengths
nrx <- NROW(x)
ncx <- NCOL(x)
nry <- NROW(y)
ncy <- NCOL(y)
nwts <- length(wt)
if(nry != nrx) stop(paste("X matrix has", nrx, "responses, Y",
   "has", nry, "responses."))
if(nry < ncx) stop(paste(nry, "responses, but only", ncx,     "variables"))

看起来 x 和 y 向量之间的行数不匹配。但是,我找不到在预测包中调用 lsfit 的位置来确定在这种情况下“y”是什么。感谢您的任何/所有帮助!

4

1 回答 1

0

tsVector问题是您将频率设置为 12,但使用少于相同数量的输入无法估计。因此,您可以设置的最小频率是向量中的对象数量。

这两个代码块都对我有用:

tsVector <- c(1,2,3,4,5, 6)
tsObj <- ts(tsVector, frequency = 5, start = c(2013, 4))
pred <- forecast(tsObj, 1)

tsVector <- c(1,2,3,4,5, 6, 7, 8, 9 , 10, 11, 12)
tsObj <- ts(tsVector, frequency = 12, start = c(2013, 4))
pred <- forecast(tsObj, 1)

希望这可以帮助!

于 2013-09-21T20:02:56.760 回答