R:检验线性模型残差的正态性——使用哪些残差

机器算法验证 r 回归 残差 正态假设 流明
2022-03-14 22:22:50

我想对线性模型的残差进行 Shapiro Wilk 的 W 检验和 Kolmogorov-Smirnov 检验以检查正态性。我只是想知道应该使用什么残差——原始残差、皮尔逊残差、学生化残差或标准化残差?对于 Shapiro-Wilk 的 W 检验,原始残差和 Pearson 残差的结果似乎相同,但其他残差的结果不同。

fit=lm(mpg ~ 1 + hp + wt, data=mtcars)
res1=residuals(fit,type="response")
res2=residuals(fit,type="pearson")
res3=rstudent(fit)
res4=rstandard(fit)
shapiro.test(res1) # W = 0.9279, p-value = 0.03427
shapiro.test(res2) # W = 0.9279, p-value = 0.03427
shapiro.test(res3) # W = 0.9058, p-value = 0.008722
shapiro.test(res4) # W = 0.9205, p-value = 0.02143

KS 的相同问题,以及是否应针对正态分布(pnorm)测试残差,如

ks.test(res1, "pnorm") # D = 0.296, p-value = 0.005563

或具有 nk-2 自由度的 t-student 分布,如

ks.test(res3, "pt",df=nrow(mtcars)-2-2) 

有什么建议吗?此外,为了使分布足够接近正态性并且不会对您的推理产生太大影响,测试统计量 W (>0.9?) 和 D 的推荐值是多少?

最后,这种方法是否考虑到拟合 lm 系数的不确定性,或者在这方面cumres()封装功能gof()会更好?

干杯,汤姆

1个回答

太长了,无法发表评论。

  1. 对于普通的回归模型(例如将由 拟合lm),您考虑的前两种残差类型之间没有区别;type="pearson"与非高斯 GLM 相关,但与response高斯模型相同。

  2. 您应用测试的观察结果(某种形式的残差)不是独立的,因此通常的统计数据没有正确的分布。此外,严格来说,您考虑的残差都不会完全正常,因为您的数据永远不会完全正常。[正式测试回答了错误的问题——一个更相关的问题是“这种非正态性对我的推论有多大影响?”,通常拟合优度假设检验没有回答的问题。]

  3. 即使您的数据完全正常,第三种或第四种残差也不会完全正常。然而,人们检查那些(比如通过 QQ 图)比原始残差更常见。

  4. )为条件的模拟来克服 2. 和 3. 中的一些问题(残差的依赖性以及标准化残差的非正态性),这意味着您可以使用您喜欢的任何残差(但是你不能以这种方式处理“回答一个你已经知道答案的无用问题”问题)。X