假设我们运行一个简单的线性回归,保存残差并绘制残差分布的直方图。如果我们得到一个看起来很熟悉的分布,我们可以假设我们的误差项有这个分布吗?比如说,如果我们发现残差类似于正态分布,那么假设总体误差项的正态性是否有意义?我认为这是明智的,但它怎么能说得通呢?
确认线性回归中残差的分布
这完全取决于您如何估计参数。通常,估计量是线性的,这意味着残差是数据的线性函数。当误差具有正态分布时,数据也是如此,因此残差也是如此(索引数据案例)。
可以想象(并且在逻辑上可能),当残差似乎具有近似正态(单变量)分布时,这是由误差的非正态分布引起的。然而,对于估计的最小二乘(或最大似然)技术,计算残差的线性变换是“温和的”,因为残差的(多元)分布的特征函数与误差的 cf 差别不大.
在实践中,我们永远不需要误差完全正态分布,所以这是一个不重要的问题。对错误更重要的是(1)他们的期望应该都接近于零;(2)它们的相关性应该很低;(3) 应该有可接受的少量异常值。为了检查这些,我们将各种拟合优度检验、相关检验和异常值检验(分别)应用于残差。仔细的回归建模总是包括运行这样的测试(其中包括残差的各种图形可视化,例如plot
在应用于lm
类时由 R 的方法自动提供)。
解决这个问题的另一种方法是从假设的模型中进行模拟。这是一些(最少的,一次性的)R
代码来完成这项工作:
# Simulate y = b0 + b1*x + u and draw a normal probability plot of the residuals.
# (b0=1, b1=2, u ~ Normal(0,1) are hard-coded for this example.)
f<-function(n) { # n is the amount of data to simulate
x <- 1:n; y <- 1 + 2*x + rnorm(n);
model<-lm(y ~ x);
lines(qnorm(((1:n) - 1/2)/n), y=sort(model$residuals), col="gray")
}
#
# Apply the simulation repeatedly to see what's happening in the long run.
#
n <- 6 # Specify the number of points to be in each simulated dataset
plot(qnorm(((1:n) - 1/2)/n), seq(from=-3,to=3, length.out=n),
type="n", xlab="x", ylab="Residual") # Create an empty plot
out <- replicate(99, f(n)) # Overlay lots of probability plots
abline(a=0, b=1, col="blue") # Draw the reference line y=x
对于 n=32 的情况,99 组残差的重叠概率图显示它们倾向于接近误差分布(这是标准正态分布),因为它们均匀地切割到参考线上:
对于 n=6 的情况,概率图中较小的中值斜率暗示残差的方差略小于误差,但总体而言,它们往往是正态分布的,因为它们中的大多数都足够好地跟踪参考线(假设的小值):
让我们回忆一下最小二乘的几何:我们有基本方程
写成矩阵形式为
我们从中推导出残差
其中是投影矩阵或帽子矩阵。我们看到每个单独的残差是潜在的大对角线值乘以它自己的残差和一堆小幅度非对角线值乘以它们的残差
如果我们得到一个看起来很熟悉的分布,我们可以假设我们的误差项有这个分布吗?
我认为你不能,因为如果关于错误的正态假设不成立,你刚刚拟合的模型是无效的。(从某种意义上说,分布的形状明显是非正态的,例如 Cauchy 等)
通常的方法不是假设 fe Poisson 分布误差,而是执行某种形式的数据转换,例如 log y 或 1/y 以标准化残差。(真实模型也可能不是线性的,这会使绘制的残差出现奇怪的分布,即使它们实际上是正常的)
比如说,如果我们发现残差类似于正态分布,那么假设总体误差项的正态性是否有意义?
一旦拟合了 OLS 回归,您就假定了错误的正态性。您是否必须为该主张提供论据,取决于您工作的类型和水平。(查看该领域公认的做法通常很有用)
现在,如果残差确实看起来是正态分布的,你可以在背后宠爱自己,因为你可以用它作为你之前假设的经验证明。:)
是的,这是明智的。残差是误差。您还可以查看正常的 QQ 图。