Shapiro-Wilk检验
Shapiro-Wilk检验用来检验是否数据符合正态分布,类似于线性回归的方法一样,是检验其于回归曲线的残差。该方法作者推荐在样本量很小的时候使用,比如N<20。但是也有作者推荐在大数据集上使用。该作者将这种修改后的方法运用在R语言的stats包中的shapiro.test函数中。
为排序后的样本数据,
为待估常量,假设样本数据确实符合一个未知均值
、标准差
的正态分布,那么样本数据就会满足下列一次函数式:
其中xi是随机正态分布N(0,1)中排序数据。
统计量越大则表示数据越符合正态分布,但是仅凭这一个参数是不够的,在非正态分布的小样本数据中也经常会出现较大的W值。该统计量的分布是未知的,因此需要通过模拟或者查表来估计其概率。由于原假设是其符合正态分布,所以当P值小于指定显著水平时表示其不符合正态分布。
R语言中的Shapiro-Wilk检验
x<-c(148 ,154, 158, 160, 161, 162, 166, 170, 182, 195, 236)
shapiro.test(x)
Shapiro-Wilk normality test
data: x
W = 0.78881, p-value = 0.006704
主要分析p-value,由于原假设H0假定数据和正态分布没有差异,p<0.05否定原假设,说明数据不符合正态分布。
换一组数据
y <- c(74, 76, 63, 72, 60, 68, 80, 68, 70, 73, 50, 87, 78,
67, 55, 78, 78, 60, 60, 50, 68, 69, 70, 68, 56, 60, 71, 60)
shapiro.test(y)
Shapiro-Wilk normality test
data: y
W = 0.97353, p-value = 0.6776
由于原假设H0假定数据和正态分布没有差异,p显著大于0.05,不能否定原假设,说明可认为数据符合正态分布。
K-S检验
ks.test(x, y,alternative = c("two.sided", "less", "greater"),exact = NULL)
> ks.test(grades,"pnorm")
One-sample Kolmogorov-Smirnov test
data: grades
D = 1, p-value < 2.2e-16
alternative hypothesis: two-sided
由于原假设H0假定数据和正态分布没有差异,p显著小于0.05,否定原假设,说明数据不符合正态分布。
当分析小于50行的小样本数据时,我们倾向于看S-W检验得到的正态性检验结果;
当分析大于50行的大样本数据时,我们倾向于看K-S检验得到的正态性检验结果;