两个时间序列之间的关系:ARIMA

机器算法验证 回归 时间序列 有马
2022-03-10 09:06:26

给定以下两个时间序列(xy;见下文),对这些数据中的长期趋势之间的关系进行建模的最佳方法是什么?

当建模为时间函数时,这两个时间序列都具有显着的 Durbin-Watson 检验,并且都不是静止的(正如我理解的术语,或者这是否意味着它只需要在残差中是静止的?)。有人告诉我,这意味着我应该对每个时间序列进行一阶差分(至少,甚至可能是二阶),然后才能将一个时间序列建模为另一个时间序列的函数,本质上是利用 arima(1,1,0 ), arima(1,2,0) 等。

我不明白为什么在建模之前需要去趋势。我理解对自相关建模的必要性,但我不明白为什么需要差分。对我来说,似乎通过差分来消除趋势正在消除我们感兴趣的数据中的主要信号(在这种情况下是长期趋势),并留下高频“噪声”(松散地使用术语噪声)。实际上,在模拟中,我在一个时间序列和另一个时间序列之间创建了几乎完美的关系,没有自相关,区分时间序列给我的结果对于关系检测目的是违反直觉的,例如,

a = 1:50 + rnorm(50, sd = 0.01)
b = a + rnorm(50, sd = 1)
da = diff(a); db = diff(b)
summary(lmx <- lm(db ~ da))

在这种情况下,ba密切相关,但b具有更多噪声。对我来说,这表明差分在检测低频信号之间关系的理想情况下不起作用。我知道差分通常用于时间序列分析,但它似乎对确定高频信号之间的关系更有用。我错过了什么?

示例数据

df1 <- structure(list(
x = c(315.97, 316.91, 317.64, 318.45, 318.99, 319.62, 320.04, 321.38, 322.16, 323.04, 324.62, 325.68, 326.32, 327.45, 329.68, 330.18, 331.08, 332.05, 333.78, 335.41, 336.78, 338.68, 340.1, 341.44, 343.03, 344.58, 346.04, 347.39, 349.16, 351.56, 353.07, 354.35, 355.57, 356.38, 357.07, 358.82, 360.8, 362.59, 363.71, 366.65, 368.33, 369.52, 371.13, 373.22, 375.77, 377.49, 379.8, 381.9, 383.76, 385.59, 387.38, 389.78), 
y = c(0.0192, -0.0748, 0.0459, 0.0324, 0.0234, -0.3019, -0.2328, -0.1455, -0.0984, -0.2144, -0.1301, -0.0606, -0.2004, -0.2411, 0.1414, -0.2861, -0.0585, -0.3563, 0.0864, -0.0531, 0.0404, 0.1376, 0.3219, -0.0043, 0.3318, -0.0469, -0.0293, 0.1188, 0.2504, 0.3737, 0.2484, 0.4909, 0.3983, 0.0914, 0.1794, 0.3451, 0.5944, 0.2226, 0.5222, 0.8181, 0.5535, 0.4732, 0.6645, 0.7716, 0.7514, 0.6639, 0.8704, 0.8102, 0.9005, 0.6849, 0.7256, 0.878),
ti = 1:52), 
.Names = c("x", "y", "ti"), class = "data.frame", row.names = 110:161)

ddf<- data.frame(dy = diff(df1$y), dx = diff(df1$x))
ddf2<- data.frame(ddy = diff(ddf$dy), ddx = diff(ddf$dx))
ddf$ti<-1:length(ddf$dx); ddf2$year<-1:length(ddf2$ddx)
summary(lm0<-lm(y~x, data=df1))      #t = 15.0
summary(lm1<-lm(dy~dx, data=ddf))    #t = 2.6
summary(lm2<-lm(ddy~ddx, data=ddf2)) #t = 2.6
3个回答

马特,您对使用不必要的差异结构提出的担忧是非常正确的。为了为您的数据确定一个合适的模型,从而产生显着的结构,同时呈现一个 ACF 为在此处输入图像描述的高斯误差过程在此处输入图像描述在此处输入图像描述传递函数识别建模过程需要(在这种情况下)适当的差分来创建静止的代理序列,因此可用于识别关系商店。在此,IDENTIFICATION 的差分要求是 X 的双差分和 Y 的单差分。此外,双差分 X 的 ARIMA 过滤器被发现是 AR(1)。将此 ARIMA 滤波器(仅用于识别目的!)应用于两个固定序列产生以下互相关结构。在此处输入图像描述暗示一种简单的同时代关系。在此处输入图像描述. 请注意,虽然原始序列表现出非平稳性,但这并不一定意味着因果模型中需要差分。最终模型在此处输入图像描述和最终 acf 支持这个在此处输入图像描述. 除了经验确定的电平变化(真正的截距变化)之外,关闭最后一个方程是

 Y(t)=-4.78 + .192*X(t) - .177*X(t-1) which is NEARLY equal to 

 Y(t)=-4.78 + .192*[X(t)-X(t-1)] which means that changes in X effect the level of Y

最后注意建议模型的特征。在此处输入图像描述

Level Shift 系列 (0,0,0,0,0,0,0,0,0,1,1,........,1) 表明,如果不加以处理,模型残差将呈现出一个水平在时间段 10 或前后移动 因此,基于“-4.10 的 t 检验”,对前 10 个残差和后 42 个残差之间的公共残差平均值假设的检验在 alpha=.0002 时将是显着的。请注意,包含一个常数可以保证残差的总体平均值与零没有显着差异,但这并不一定适用于所有子集时间间隔。下图清楚地显示了这一点(假设您被告知要查看!)。实际/适合/预测非常有启发性在此处输入图像描述统计就像灯柱,有些人用它们来依靠,有些人用它们来照明。

我也不明白这个建议。差分消除多项式趋势。如果由于趋势差异而导致系列相似,则基本上消除了这种关系。如果您期望去趋势的组件是相关的,您只会这样做。如果相同的差分阶导致残差的 acfs 看起来可能来自包含白噪声的静止 ARMA 模型,这可能表明两个序列具有相同或相似的多项式趋势。

我理解它的方式,区分在互相关函数中给出了更清晰的答案。比较ccf(df1$x,df1$y)ccf(ddf$dx,ddf$dy)