给定以下两个时间序列(x,y;见下文),在此数据中长期趋势之间的关系建模的最佳方法是什么?
当作为时间的函数进行建模时,两个时间序列都具有显着的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))
在这种情况下,b与a密切相关,但是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