指数平滑是用于非因果时间序列预测的经典技术。只要您仅在直接预测中使用它并且不使用样本内平滑拟合作为另一个数据挖掘或统计算法的输入,Briggs 的批评并不适用。(因此,正如维基百科所说,我对使用它“生成用于演示的平滑数据”持怀疑态度——这很可能会产生误导,因为它隐藏了平滑的可变性。)
这是一本关于指数平滑的教科书介绍。
这是一篇(已有 10 年历史,但仍然相关的)评论文章。
编辑:似乎对布里格斯批评的有效性有些怀疑,可能受到其包装的影响。我完全同意布里格斯的语气可能很粗暴。但是,我想说明为什么我认为他有观点。
下面,我正在模拟 10,000 对时间序列,每对有 100 个观察值。所有系列都是白噪声,没有任何相关性。因此,运行标准相关性测试应该会产生在 [0,1] 上均匀分布的 p 值。就像它一样(左下角的直方图)。
但是,假设我们首先对每个系列进行平滑处理,并将相关性检验应用于平滑后的数据。出现了一些令人惊讶的事情:因为我们已经从数据中消除了很多可变性,所以我们得到的 p 值太小了。我们的相关性测试有很大的偏差。因此,我们将过于肯定原始系列之间的任何关联,这就是布里格斯所说的。
问题实际上取决于我们是否使用平滑数据进行预测,在这种情况下平滑是有效的,或者我们是否将其作为某种分析算法的输入,在这种情况下,消除可变性将模拟我们数据中比保证更高的确定性。输入数据中这种毫无根据的确定性会延续到最终结果,需要加以考虑,否则所有推论都将过于确定。(当然,如果我们使用基于“夸大确定性”的模型进行预测,我们也会得到太小的预测区间。)
n.series <- 1e4
n.time <- 1e2
p.corr <- p.corr.smoothed <- rep(NA,n.series)
set.seed(1)
for ( ii in 1:n.series ) {
A <- rnorm(n.time)
B <- rnorm(n.time)
p.corr[ii] <- cor.test(A,B)$p.value
p.corr.smoothed[ii] <- cor.test(lowess(A)$y,lowess(B)$y)$p.value
}
par(mfrow=c(1,2))
hist(p.corr,col="grey",xlab="",main="p values\nunsmoothed data")
hist(p.corr.smoothed,col="grey",xlab="",main="p values\nsmoothed data")
