r语言S-W和K-S两种正态性检验

Shapiro-Wilk检验

Shapiro-Wilk检验用来检验是否数据符合正态分布,类似于线性回归的方法一样,是检验其于回归曲线的残差。该方法作者推荐在样本量很小的时候使用,比如N<20。但是也有作者推荐在大数据集上使用。该作者将这种修改后的方法运用在R语言的stats包中的shapiro.test函数中。

W =\frac{ \sum a_iy_i^2}{\sum(y_i-\bar{y})^2}

y_i为排序后的样本数据,a_i为待估常量,假设样本数据确实符合一个未知均值\mu、标准差\sigma的正态分布,那么样本数据就会满足下列一次函数式:
y_i = \mu + \sigma x_i, i =1,2,3,……,n
其中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检验得到的正态性检验结果;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容