如何检验残差的自相关?

机器算法验证 r 回归 相关性 自相关
2022-01-19 06:43:01

我有一个包含两列价格的矩阵(750)。在下图中,我绘制了以下线性回归的残差:

lm(prices[,1] ~ prices[,2])

看图像,似乎是残差的非常强的自相关。

但是,我如何测试这些残差的自相关性是否很强?我应该使用什么方法?

线性回归的残差

谢谢!

4个回答

可能有很多方法可以做到这一点,但首先想到的是基于线性回归。您可以将连续残差相互回归并测试显着斜率。如果存在自相关,那么连续残差之间应该存在线性关系。要完成您编写的代码,您可以执行以下操作:

mod = lm(prices[,1] ~ prices[,2])
res = mod$res 
n = length(res) 
mod2 = lm(res[-n] ~ res[-1]) 
summary(mod2)

mod2是时间误差与时间误差的线性回归。如果 的系数显着,则表明残差中存在自相关。tεtt1εt1res[-1]

注意:这隐含地假设残差是自回归的,因为在预测是重要的。实际上可能存在更长范围的依赖关系。在这种情况下,我所描述的这种方法应该被解释为对中真实自相关结构的单滞后自回归近似。εt1εtε

使用在lmtest中实现的Durbin-Watson 测试。

dwtest(prices[,1] ~ prices[,2])

DW 检验或线性回归检验对数据中的异常不稳健。如果您有 Pulses、Seasonal Pulses、Level Shifts 或 Local Time Trends,这些测试是无用的,因为这些未经处理的组件会夸大误差的方差,从而使测试向下偏差,从而导致您(正如您所发现的)错误地接受零假设自相关。在可以使用这两个测试或我知道的任何其他参数测试之前,必须“证明”残差的平均值在统计上与 0.0 没有显着差异,否则基本假设是无效的。众所周知,DW 检验的约束之一是它假设回归误差是正态分布的。注意正态分布意味着:没有异常(见http://homepage.newschool.edu/~canjels/permdw12.pdf)。此外,DW 测试仅测试滞后 1 的自相关。您的数据可能具有每周/季节性影响,这将无法诊断,此外,未经处理,会向下偏差 DW 测试。

2021:R 提供自相关函数 -acf

我假设发布的其他答案是acf在 R 中存在该函数之前创建的。

但是,在 2021 年,有一个专门用于计算自相关的函数。

以下是如何使用它:

# calculate the ACF for lags between 1 and 20 (inclusive)
autocorrelation <- acf(your.data.here, lag.max=20, plot=FALSE)

# Plot figure
plot(autocorrelation,
     main="Autocorrelation",
     xlab="Lag Parameter",
     ylab="ACF")

参考:

https://www.datacamp.com/community/tutorials/autocorrelation-r