1

我似乎误解了R 中dwtestlmtest工作原理。

> 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

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

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

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

4

1 回答 1

1

查看 Wikipedia,似乎 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]。“残差”,即实际值和预测值之间的差异,是 r2[i]-r1[i]。如果它大于零,那么 r2[i+1]-r1[i+1] 也可能大于零,因为它们是正弦函数的相邻值。因此,残差中存在“自相关”,即相邻值之间的相关性。

于 2018-03-18T17:40:59.170 回答