本站分享:AI、大数据、数据分析师培训认证考试,包括:Python培训Excel培训Matlab培训SPSS培训SAS培训R语言培训Hadoop培训Amos培训Stata培训Eviews培训

R语言 Shapiro-Wilk检验_shapiro wilk正态检验

r语言 cdadata 15401℃

R语言 Shapiro-Wilk检验

关键词:shapiro wilk正态检验shapiro wilk检验shapiro wilk检验法shapiro wilk检验原理

分布检验方法比较

²  图示法相对于其他方法而言,比较直观,方法简单,从图中可以直接判断,无需计算,但这种方法效率不是很高,它所提供的信息只是正态性检验的重要补充。

²  经常使用的拟合优度检验和Kolmogorov-Smirnov检验的检验功效较低,在许多计算机软件的Kolmogorov-Smirnov检验无论是大小样本都用大样本近似的公式,很不精准,一般使用Shapiro-Wilk检验和Lilliefor检验。

²  Kolmogorov-Smirnov检验只能检验是否一个样本来自于一个已知样本,而Lilliefor检验可以检验是否来自未知总体。

²  Shapiro-Wilk检验和Lilliefor检验都是进行大小排序后得到的,所以易受异常值的影响。

²  Shapiro-Wilk检验只适用于小样本场合(3n50,其他方法的检验功效一般随样本容量的增大而增大。

²  拟合优度检验和Kolmogorov-Smirnov检验都采用实际频数和期望频数进行检验,前者既可用于连续总体,又可用于离散总体,而Kolmogorov-Smirnov检验只适用于连续和定量数据。

²  拟合优度检验的检验结果依赖于分组,而其他方法的检验结果与区间划分无关。

²  偏度和峰度检验易受异常值的影响,检验功效就会降低。

²  假设检验的目的是拒绝原假设,当p值不是很大时,应根据数据背景再作讨论。  

Shapiro-Wilk检验:

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

该检验原假设为H0:数据集符合正态分布,统计量W为:

R语言 Shapiro-Wilk检验

R语言 Shapiro-Wilk检验为排序后的样本数据,R语言 Shapiro-Wilk检验为待估常量,假设样本数据确实符合一个未知均值R语言 <wbr>Shapiro-Wilk检验、标准差R语言 <wbr>Shapiro-Wilk检验的正态分布,那么样本数据就会满足下列一次函数式:

R语言 Shapiro-Wilk检验

其中R语言 <wbr>Shapiro-Wilk检验是随机正态分布N(0,1)中排序数据。

统计量越大则表示数据越符合正态分布,但是仅凭这一个参数是不够的,在非正态分布的小样本数据中也经常会出现较大的W值。该统计量的分布是未知的,因此需要通过模拟或者查表来估计其概率。由于原假设是其符合正态分布,所以当P值小于指定显著水平时表示其不符合正态分布。

R语言中的Shapiro-Wilk检验

shapiro.test(x)该函数只有一个参数即数据集xx可以是数值型向量,允许存在NA,但是非丢失数据需要在3-5000内。

1

11个随机抽取的样本的体重数据为:

148 154 158 160 161 162 166 170 182 195 236

> k<-c(148 ,154, 158, 160, 161, 162, 166, 170, 182, 195, 236)

> shapiro.test(k) 

        Shapiro-Wilk normality test 

data:  k

W = 0.7888, p-value = 0.006704

结果中W统计量为0.7888非常接近于0,但是其p值小于0.05,所以我们可以拒绝原假设,即该数据不符合正态分布。因此,在这个例子中我们也可发现较大的W统计量的情况下,我们依然可能拒绝其符合正态分布。

2

> shapiro.test(rnorm(100, mean = 5, sd = 3)) 
        Shapiro-Wilk normality test 
data:  rnorm(100, mean = 5, sd = 3)
W = 0.9926, p-value = 0.863
 
> shapiro.test(runif(100, min = 2, max = 4)) 
        Shapiro-Wilk normality test 
data:  runif(100, min = 2, max = 4)
W = 0.9561, p-value = 0.00214

在这个例子中,我们可以发现,第一个命令是检验一个随机生产的100个数据,该数据集符合均值为5、标准差为3的正态分布,其W统计量接近1p值显著大于0.05,所以我们没办法拒绝其符合正态分布。第二个命令检验一个随机产生的100个数据,但是该数据是符合最小值为2,最大值为4的均一分布,其W统计量也是接近1,但是其P值小于0.05,所以我们有足够理由拒绝其符合正态分布。

转载请注明:数据分析 » R语言 Shapiro-Wilk检验_shapiro wilk正态检验

喜欢 (2)or分享 (0)