我使用R从Excel读取时间序列(使用XLConnect),然后在该时间序列上运行一些预测模型,然后将结果输出回Excel。这是一个很长的故事,但我正在做研究硕士课程的公司希望继续使用Excel!无论如何,我可以从Excel中提取我想要的时间序列。我使用ts()使它成为一个时间序列。然后,我使用(按此顺序)ets()
,auto.arima()
,tbats()
,mapaest()
,theta()
以及最后stlf()
对该系列进行预测。为了检查它是否正在进行预测,我得到R来打印预测结果。它可以很好地运行所有预测模型,直到达到stlf()
预测功能。当我收到此错误时:
stl中的错误(x,s.window = s.window,t.window = t.window,robust = 强大的):只允许单变量系列
我的问题是时间序列(它是单变量的)如何在其他预测函数中正常工作,但在stlf()
函数中却没有?
答案 0 :(得分:0)
我在做了更多的挖掘后现在已经弄明白了。事实证明,我传递的时间序列也是stlf()
函数的矩阵。其他预测函数似乎并不介意给出一个也是矩阵的时间序列,但出于某种原因stlf()
不喜欢它。
我使用as.vector()
将原始数据转换为矢量,然后将该矢量转换为ts()
对象。然后将其传递到stlf()
函数。虽然我之前最初将ts()
对象传递给stlf()
,但并不确定这是如何工作的。对R来说相当新,但我会进一步研究这个......
这是我使用的代码;
altVector <- as.vector(t(rawdata))
tsy2 <- ts(altVector, start=1, end=c(3,9), frequency=12)
f.stlf <- stlf(tsy2, method="arima", h=3)
现在一切正常。