如何让tsclean在多个时间序列的数据框架上工作

时间:2017-11-26 20:37:07

标签: r time-series forecasting

我正在基于hts包创建预测,但在此之前我需要清除异常值和缺失值的数据。

为此我想到了在预测包中使用tsclean函数。我将我的数据存储在数据框中,其中包含我想要清理的多列(时间序列)。只有一次性系列时,我可以使用该功能,但由于我确实有很多,我正在寻找一种聪明的方法来做到这一点。

运行代码时:

SFA5 <- ts(SFA4, frequency=12, start=c(2012,1), end=c(2017,10)) 
ggt <- tsclean(SFA5[1:70, 1:94], replace.missing = TRUE)

我收到此错误消息:

Error in na.interp(x, lambda = lambda) : The time series is not univariate.

数据在这里:

https://www.dropbox.com/s/dow2jpuv5unmtgd/Data1850.xlsx?dl=0

我的问题是:我做错了什么,或者是做循环序列的唯一解决方案

1 个答案:

答案 0 :(得分:3)

错误消息表明该函数仅将单变量时间序列作为其第一个参数。因此,您需要将tsclean应用于每列,您可能已经猜到了。

library(forecast)
ggt <- sapply(X = SFA5[1:70, 1:94], FUN = tsclean)