了解 R 中的 durbin-watson 测试

understanding durbin-watson test in R

我似乎误解了 the lmtest packagedwtest 在 R 中是如何工作的。

> r1 <- runif(1000, 0.0, 1.0)
> r2 <- runif(1000, 0.0, 1.0)
> dwtest(lm(r2 ~ r1 ))

    Durbin-Watson test

data:  lm(r2 ~ r1)
DW = 1.9806, p-value = 0.3789
alternative hypothesis: true autocorrelation is greater than 0

> 
> r1 <- seq(0, 1000, by=1)
> r2 <- seq(0, 1000, by=1)
> dwtest(lm(r2 ~ r1 ))

    Durbin-Watson test

data:  lm(r2 ~ r1)
DW = 2.2123, p-value = 0.8352

当我理解一切正确时,我首先测试 2 组随机数(它们不相关 - 正确)

然后我将 1 到 1000 的数字与它们自身相关联(这不相关 - 嗯......什么)

有人可以指出我犯的明显错误吗?

在维基百科上看,Durbin-Watson 测试似乎是针对残差的自相关,而不是相关性。所以,如果我定义 r2 <- r1 + sin(r1),那么我会从 DW 测试中得到一个重要的结果:

> r1 <- seq(0, 1000, by=1)
> r2 <- r1 + sin(r1)
> dwtest(lm(r2 ~ r1))
    Durbin-Watson test
data:  lm(r2 ~ r1)
DW = 0.91956, p-value < 2.2e-16
alternative hypothesis: true autocorrelation is greater than 0

原因如下。从线性模型预测的 r2[i] 的值是 r1[i]。 "residual",即实际值与预测值之差,为r2[i]-r1[i]。如果这大于零,那么 r2[i+1]-r1[i+1] 可能也大于零,因为它们是正弦函数的相邻值。因此,残差中有 "autocorrelation",这意味着相邻值之间存在相关性。