我想对线性模型的残差进行Shapiro Wilk的W检验和Kolmogorov-Smirnov检验,以检查正态性。我只是想知道应该使用什么残差-原始残差,Pearson残差,学生化残差或标准化残差?对于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的同样问题,以及是否应按照以下方法针对正态分布(范数)测试残差
ks.test(res1, "pnorm") # D = 0.296, p-value = 0.005563
或nk-2自由度的t型学生分布,例如
ks.test(res3, "pt",df=nrow(mtcars)-2-2)
有什么建议吗?另外,为了使分布足够接近正态且不会过多影响您的推论,检验统计量W(> 0.9?)和D的推荐值是多少?
最后,这种方法是否考虑了拟合lm系数的不确定性,或者在这方面cumres()
封装功能gof()
会更好?
干杯,汤姆
9
这种测试很少有任何意义。问问自己,如果残差被证明是“明显”不正常的,您将采取什么具体措施。经验告诉您,这取决于它们与正常水平之间的差异以及差异。这些均不能通过SW,KS或任何其他正式的分布测试直接(或充分地)测量。对于这项工作,您要使用探索性图形,而不是形式化测试。哪些残差可能适合绘制的问题仍然存在,但是其余的问题则无关紧要。
—
ub
是的,我注意到许多统计学家都主张这一立场。但是我仍然想检查这些测试的测试统计信息(例如,检查Shapiro Wilks W的值是否大于0.9)。而且我总是可以进行Box-Cox变换或类似的方法来在出现较大偏差的情况下提高正态性。再者,我的问题在某种程度上也是概念性的-也就是说,即使在实践中正常性并不总是那么重要,这是什么最正确的方式呢?
—
Tom Wenseleers 2014年