如果残差是正态分布的,但 y 不是?

机器算法验证 回归 残差 错误 正态假设
2022-01-20 18:08:28

我有一个奇怪的问题。假设您有一个小样本,其中您要使用简单线性模型分析的因变量高度左偏。因此,您假设不是正态分布的,因为这将导致正态分布但是当您计算 QQ 正态图时,有证据表明残差是正态分布的。因此任何人都可以假设误差项是正态分布的,尽管不是。那么,当误差项似乎是正态分布但不是正态分布时,这意味着什么?uyyy

3个回答

回归问题中的残差呈正态分布是合理的,即使响应变量不是。考虑一个单变量回归问题,其中使得回归模型是合适的,并进一步假设的真实值。在这种情况下,虽然真实回归模型的残差是正态的,但的分布取决于的条件均值是的函数如果数据集有很多接近于零的 x 值,并且 x 的值越高越少分布yN(βx,σ2)β=1yxyxxxy将向右倾斜。如果的值是对称分布的,那么将是对称分布的,以此类推。对于回归问题,我们只假设响应是正态的,取决于的值。xyx

当然,@DikranMarsupial 是完全正确的,但在我看来,说明他的观点可能会很好,特别是因为这种担忧似乎经常出现。具体来说,回归模型的残差应该是正态分布的,以使 p 值正确。但是,即使残差是正态分布的,也不能保证会是(并不重要......);它取决于的分布。 YX

让我们举一个简单的例子(我正在编造)。假设我们正在测试一种治疗单纯收缩期高血压的药物(即最高血压值太高)。让我们进一步规定收缩压在我们的患者群体中呈正态分布,平均值为 160 和 SD 为 3,并且对于患者每天服用的每毫克药物,收缩压下降 1mmHg。也就是说,\beta_0的真实值为为-1,真实数据生成函数为: β0β1

BPsys=1601×daily drug dosage+εwhere εN(0,9)
在我们的虚构研究中,300 名患者被随机分配每天服用 0mg(安慰剂)、20mg 或 40mg 这种新药。(请注意,不是正态分布的。)然后,在药物生效一段足够的时间后,我们的数据可能如下所示: X

在此处输入图像描述

(我抖动了剂量,这样这些点就不会重叠太多以至于难以区分。)现在,让我们检查一下的分布(即,它是边缘/原始分布)和残差: Y

在此处输入图像描述

qq 图向我们展示了不是偏正态的,但残差是相当正态的。核密度图为我们提供了更直观的分布图。很明显三模态的,而残差看起来很像正态分布。 YY

但是拟合回归模型呢,非正态(但正态残差)的影响是什么?为了回答这个问题,我们需要说明在这种情况下回归模型的典型性能我们可能会担心什么。第一个问题是,平均而言,Beta 是不是?(当然,它们会反弹一些,但从长远来看,贝塔的抽样分布是否以真实值为中心?)这是偏差的问题。另一个问题是,我们能相信我们得到的 p 值吗?也就是说,当原假设为真时,YXp<.05只有5%的时间?为了确定这些事情,我们可以模拟上述数据生成过程中的数据,以及药物无效的并行案例,大量次。然后我们可以绘制的采样分布并检查它们是否以真值为中心,并检查在 null 情况下关系“显着”的频率: β1

set.seed(123456789)                       # this make the simulation repeatable

b0 = 160;   b1 = -1;   b1_null = 0        # these are the true beta values
x  = rep(c(0, 20, 40), each=100)          # the (non-normal) drug dosages patients get

estimated.b1s  = vector(length=10000)     # these will store the simulation's results
estimated.b1ns = vector(length=10000)
null.p.values  = vector(length=10000)

for(i in 1:10000){
  residuals = rnorm(300, mean=0, sd=3)
  y.works = b0 + b1*x      + residuals
  y.null  = b0 + b1_null*x + residuals    # everything is identical except b1

  model.works = lm(y.works~x)
  model.null  = lm(y.null~x)
  estimated.b1s[i]  = coef(model.works)[2]
  estimated.b1ns[i] = coef(model.null)[2]
  null.p.values[i]  = summary(model.null)$coefficients[2,4]
}
mean(estimated.b1s)       # the sampling distributions are centered on the true values
[1] -1.000084                  
mean(estimated.b1ns)
[1] -8.43504e-05               
mean(null.p.values<.05)   # when the null is true, p<.05 5% of the time
[1] 0.0532                   

在此处输入图像描述

这些结果表明一切正常。

我不会进行这些动作,但如果正态分布的,否则使用相同的设置,的原始/边缘分布将与残差一样正态分布(尽管具有更大的 SD)。我也没有说明的偏态分布的影响(这是这个问题背后的推动力),但@DikranMarsupial 的观点在这种情况下同样有效,并且可以类似地说明。X YX

在回归模型拟合中,我们应该检查的每个级别 的响应的正态性,但不能作为一个整体检查,因为它对此没有意义如果您确实需要检查的正态性,请检查每个级别。XYX