考虑使用循环神经网络进行时间序列预测。与使用线性自回归的 ARMA 和 ARIMA 模型相比,它们基本上实现了一种广义的非线性自回归。
如果我们正在执行非线性自回归,时间序列是否仍然需要静止,我们是否需要像在 ARIMA 模型中那样执行差分?
还是模型的非线性特性使其能够处理非平稳时间序列?
换一种说法:ARMA 和 ARIMA 模型的平稳性要求(均值和方差)是因为这些模型是线性的,还是因为其他原因?
考虑使用循环神经网络进行时间序列预测。与使用线性自回归的 ARMA 和 ARIMA 模型相比,它们基本上实现了一种广义的非线性自回归。
如果我们正在执行非线性自回归,时间序列是否仍然需要静止,我们是否需要像在 ARIMA 模型中那样执行差分?
还是模型的非线性特性使其能够处理非平稳时间序列?
换一种说法:ARMA 和 ARIMA 模型的平稳性要求(均值和方差)是因为这些模型是线性的,还是因为其他原因?
如果您的模型的目的是预测和预测,那么简短的回答是肯定的,但平稳性不需要在水平上。
我会解释的。如果您将预测归结为最基本的形式,它将提取不变量。考虑一下:您无法预测正在发生的变化。如果我告诉你明天在每个可以想象的方面都与今天不同,你将无法做出任何预测。
只有当您能够将某事从今天扩展到明天时,您才能做出任何类型的预测。我给你举几个例子。
在每一种合理预测的情况下,我们首先从过程中提取一些不变的东西,并将其扩展到未来。因此,我的回答是:是的,如果方差和均值是您要从历史扩展到未来的不变量,那么时间序列需要是平稳的。此外,您还希望与回归变量的关系保持稳定。
只需确定模型中的不变量是什么,它是平均水平、变化率还是其他什么。如果您希望您的模型具有任何预测能力,这些事情需要在未来保持不变。
评论中提到了 Holt Winters 过滤器。它是平滑和预测某些类型的季节性序列的流行选择,它可以处理非平稳序列。特别是,它可以处理平均水平随时间线性增长的系列。换句话说,坡度是稳定的。用我的术语来说,斜率是这种方法从系列中提取的不变量之一。让我们看看当坡度不稳定时它是如何失效的。
在这个图中,我展示了具有指数增长和附加季节性的确定性序列。换句话说,斜率随着时间的推移变得越来越陡:
您可以看到过滤器似乎非常适合数据。拟合线为红色。但是,如果您尝试使用此过滤器进行预测,它会惨遭失败。真线是黑色的,如果在下一个图上符合蓝色置信界限,则为红色:
通过检查Holt Winters 模型方程很容易看出它失败的原因。它从过去提取斜率,并延伸到未来。这在斜率稳定时效果很好,但当它持续增长时,过滤器无法跟上,它落后了一步,效果累积成一个不断增加的预测误差。
代码:
t=1:150
a = 0.04
x=ts(exp(a*t)+sin(t/5)*sin(t/2),deltat = 1/12,start=0)
xt = window(x,0,99/12)
plot(xt)
(m <- HoltWinters(xt))
plot(m)
plot(fitted(m))
xp = window(x,8.33)
p <- predict(m, 50, prediction.interval = TRUE)
plot(m, p)
lines(xp,col="black")
在此示例中,您可以通过简单地获取系列日志来提高过滤器性能。当你对指数增长的序列取对数时,你可以让它的斜率再次稳定,并给这个过滤器一个机会。这是示例:
代码:
t=1:150
a = 0.1
x=ts(exp(a*t)+sin(t/5)*sin(t/2),deltat = 1/12,start=0)
xt = window(log(x),0,99/12)
plot(xt)
(m <- HoltWinters(xt))
plot(m)
plot(fitted(m))
p <- predict(m, 50, prediction.interval = TRUE)
plot(m, exp(p))
xp = window(x,8.33)
lines(xp,col="black")