不同方法的正态性检验及R语言实现

统计学中的t检验法和F检验法的应用条件是样本都来自正态总体或近似正态总体,只有符合这个条件,才能用它们来检验各样本所属的总体参数的差异显著性。


一、非参数检验

1、Kolmogorov-Smirnov正态性检验(单样本)

检验单一样本是否来自某一特定分布。比如检验一组数据是否为正态分布。它的检验方法是以样本数据的累积频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。即对于假设检验问题:

H0:样本所来自的总体分布服从某特定分布

H1:样本所来自的总体分布不服从某特定分布


Fn(X)表示一组随机样本的累计概率函数,F0(X)表示分布的分布函数。

当原假设为真时,D的值应较小,若过大,则怀疑原假设,从而,拒绝域为      

对于给定的又,

R实现:

1.1 ks.test()

> x <- rnorm(3000)
> ks.test(x,"pnorm")

	One-sample Kolmogorov-Smirnov test

data:  x
D = 0.0077, p-value = 0.9943
alternative hypothesis: two-sided

若不是正态分布函数的检验,只需要将"pnorm"改成相应地分布函数

当已知分布函数时,如:

> ks.test(x,"pnorm",mean(x),sd(x))

	One-sample Kolmogorov-Smirnov test

data:  x
D = 0.0087, p-value = 0.9768
alternative hypothesis: two-sided

若出现错误或警报,可能是由于:

Warning message:

In ks.test(X, "pnorm", 2.488715,3.012176) :

 ties should not be present for the Kolmogorov-Smirnov test

#若已知可能的分布函数

#样本数据中存在有相同的值,单样本K-S检验要求检验分布是连续的,而连续分布出现相同值的概率为0.如果是出现相同的,则连续分布的假设不成立,则该方法无法使用

1.2  nortest包里的lillie.test()可以实行更精确的Kolmogorov-Smirnov检验
> library(nortest)
> lillie.test(x)

	Lilliefors (Kolmogorov-Smirnov) normality test

data:  x
D = 0.0087, p-value = 0.8408
可以发现此方法的结果和ks.test的第二种方法的结果是一样的

1.3 fBasics包里的normaltest()和ksnormtest()

> ksnormTest(x)

Title:
 One-sample Kolmogorov-Smirnov test

Test Results:
  STATISTIC:
    D: 0.0077
  P VALUE:
    Alternative Two-Sided: 0.9943 
    Alternative      Less: 0.7946 
    Alternative   Greater: 0.7012 

Description:
 Tue Jan 13 21:24:19 2015 by user: 


#建议:大样本、已知总体均数和标准差,选择非参数检验-单样本KS检验号。。但对于样本大小,有说大于50、500、5000的,各有所不同的理解。


2、Shapiro-Wilk(W检验)

统计量为:


当原假设为真时,W的值应接近于1,若值过小,则怀疑原假设,从而拒绝域为R:W

在给定的水平下P{w R实现:

2.1 shapiro.test()实现

> shapiro.test(x)

	Shapiro-Wilk normality test

data:  x
W = 0.9997, p-value = 0.9494
在R中,shpiro.test()函数限制为3-5000个样本之间
2.2 fBasics包里shapiroTest()

> shapiroTest(x)

Title:
 Shapiro - Wilk Normality Test

Test Results:
  STATISTIC:
    W: 0.9997
  P VALUE:
    0.9494 


二、图示法

Q-Q图:以样本的分位数作为横坐标,以按照正态分布计算的相应分位点作为纵坐标,把样本表现为直角坐标系的散点。如果数据服从正态分布,则样本点应围绕第一象限的对角线分布。

w <- c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 63.5,
       66.6, 64.0, 57.0, 69.0, 56.9, 50.0, 72.0)
qqnorm(w); qqline(w)

不同方法的正态性检验及R语言实现_第1张图片

可以发现:基本上呈正态分布。



你可能感兴趣的:(R,Programming,Statistics,R语言,统计学,R包,正态性检验,概率分布)