代码之家  ›  专栏  ›  技术社区  ›  BadPractice

了解R中的durbin-watson测试

  •  1
  • BadPractice  · 技术社区  · 6 年前

    我似乎误解了 dwtest 属于 the lmtest package 在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
    

    当我正确理解所有内容时,我首先测试两组随机数(不相关-正确)

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

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   user54038    6 年前

    从维基百科上看,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]可能也大于零,因为它们是正弦函数的相邻值。因此,残差中存在“自相关”,即相邻值之间的相关性。

    推荐文章