我正在尝试在我创建的时间序列对象上使用预测包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”是什么。感谢您的帮助!
答案 0 :(得分:0)
问题在于您将频率设置为12,但无法估算的tsVector
输入数量少于相同数量。因此,您可以设置的最小频率是矢量中的对象数。
这两个代码块都适用于我:
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)
希望这有帮助!