R

R,r,forecasting,R,Forecasting,我正在尝试对我创建的时间序列对象使用forecast package v4.06中的forecast函数。根据我传递到时间序列函数以生成时间序列对象的向量的大小,我将从随后的forecast调用中得到一个抛出的异常 例如,创建长度为6的向量的时间序列对象,如下所示: tsObj <- ts(tsVector[1:6], frequency=12, start=c(2013,4)) 事实上,4到11的向量长度会产生此错误,但1、2、3或>=12的长度会成功生成适当的预测。如能深入了解该例外

我正在尝试对我创建的时间序列对象使用forecast package v4.06中的forecast函数。根据我传递到时间序列函数以生成时间序列对象的向量的大小,我将从随后的forecast调用中得到一个抛出的异常

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

tsObj <- ts(tsVector[1:6], frequency=12, start=c(2013,4))
事实上,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"))
##检查长度是否兼容

nrx问题在于您将频率设置为12,但如果输入的
tsVector
数量少于相同数量,则无法进行估计。所以你能设定的最小频率是向量中物体的数量

这两个代码块都适用于我:

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

tsVector参见上文:在原始帖子中添加了注释。您介意为“tsVector”和您创建的任何其他对象提供一个示例吗?这会让你的问题重现,然后我会解决它。@Stathonk太棒了!所以tsVector只是一个数字向量。为了简化操作,您可以将预测函数调用中的tsVector[1:6]替换为c(1,2,3,4)或c(1,2,3,4,5)甚至c(1,2,3,4,5,6),一直替换到11个不同的数字,每个数字都会重现所讨论的错误。再次感谢你的帮助!该错误已在forecast v4.07中修复。
## 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"))
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)