我正在尝试批量处理包含异常值和缺失值的大量时间序列。 tsclean函数非常有效,但偶尔会产生非常奇怪和有问题的结果,我想要理解,所以我可以包含逻辑来避免它们。这是一个结果:
data <- c(2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4.3, NA, NA, 1, 1, 1, 1, 1, 1, NA, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, NA)
ts <- ts(data, frequency = 52)
ts_cleaned <- tsclean(ts)
ts_cleaned的圆形输出:
0, -48, -35, -31, -27, -24, -20, -17, -14, -12, -10, -7, -6, -4, -2, -1, 0, 1, 2, 2, 3, 3, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 1, 1, 1, 1, 1, 1, -7, 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 0, 1, 1, 1, 2, 3, 4, 6, 7, 9, 11, 13, 18, 19, 22, 24, 28, 31, 35, 39, 50, 90, 2
这显然与原始数据不同,在预测时会导致严重问题。我可以做些什么来避免这种程序化程度?
答案 0 :(得分:0)
您可以尝试在tsclean()函数中使用Box-Cox参数:
data <- c(2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4.3, NA, NA, 1, 1, 1, 1, 1, 1, NA, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, NA)
ts <- ts(data, frequency = 52)
lambda <- BoxCox.lambda(data)
ts_cleaned <- tsclean(ts, lambda = lambda)
ts_cleaned