R中的stl函数无法识别单变量时间序列

时间:2016-09-23 11:47:00

标签: r stl

我使用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()函数中却没有?

1 个答案:

答案 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)

现在一切正常。