我想对线性模型的残差进行 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()
会更好?
干杯,汤姆