一、正态性检验与判断

正态性检验(Normality test),是利用观测数据判断总体是否服从正态分布的检验称为正态性检验
常用的正态性检验的方法有Kolmogorov-Smirnov(K-S)法和Shapiro-Wilk(S-W)法。
本文将使用iris数据集为例,对数据进行正态性检验。

1. 数据集

iris$Sepal.Width数据集为例。

> iris$Sepal.Length
[1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9 5.4 4.8 4.8 4.3 5.8 5.7 5.4 5.1
[19] 5.7 5.1 5.4 5.1 4.6 5.1 4.8 5.0 5.0 5.2 5.2 4.7 4.8 5.4 5.2 5.5 4.9 5.0
[37] 5.5 4.9 4.4 5.1 5.0 4.5 4.4 5.0 5.1 4.8 5.1 4.6 5.3 5.0 7.0 6.4 6.9 5.5
[55] 6.5 5.7 6.3 4.9 6.6 5.2 5.0 5.9 6.0 6.1 5.6 6.7 5.6 5.8 6.2 5.6 5.9 6.1
[73] 6.3 6.1 6.4 6.6 6.8 6.7 6.0 5.7 5.5 5.5 5.8 6.0 5.4 6.0 6.7 6.3 5.6 5.5
[91] 5.5 6.1 5.8 5.0 5.6 5.7 5.7 6.2 5.1 5.7 6.3 5.8 7.1 6.3 6.5 7.6 4.9 7.3
[109] 6.7 7.2 6.5 6.4 6.8 5.7 5.8 6.4 6.5 7.7 7.7 6.0 6.9 5.6 7.7 6.3 6.7 7.2
[127] 6.2 6.1 6.4 7.2 7.4 7.9 6.4 6.3 6.1 7.7 6.3 6.4 6.0 6.9 6.7 6.9 5.8 6.8
[145] 6.7 6.7 6.3 6.5 6.2 5.9

2. 可视化

直方图
使用hist()函数,对数据分布有初步认识

> hist(iris$Sepal.Width)

hist绘制直方图
Q-Q图
Q-Q图是以变量的分位数作为x轴,以指定分布的分位数为y轴。

> qqnorm(iris$Sepal.Length)
> qqline(iris$Sepal.Length)

Q-Q图标准直线为上下四分位数的连线。

P-P图
P-P图是以变量的累积比例作为x轴,以指定分布的累积比例为y轴。

> data <- iris$Sepal.Length
> m=mean(data)
> sd=sd(data)
> plot((rank(data)-0.5)/length(data), pnorm(data,mean=m, sd=sd),main=('Normal P-P Plot'))
> abline(0,1) # 画y=0+1x直线

P-P图标准直线为y=x

3. 正态性检验

正态性检验的问题:

  • H0:总体服从正态分布;
  • H1:总体不服从正态分布。

S-W检验方法

也叫做W检验,一般在小样本条件下选用SW检验方法(n<50),最重要的是看p值。

> shapiro.test(iris$Sepal.Width)

        Shapiro-Wilk normality test

data:  iris$Sepal.Width
W = 0.98492, p-value = 0.1012

结果将返回3个值:

  • 数据名称(data)
  • Shapiro-Wilk统计量的值(W)
  • p值(p-value)

可以得出,p值为0.1012 > 0.05,故不拒接H0,样本服从正态分布。

K-S检验方法:

K-S法,只能检验是否一个样本来自于一个已知样本,可以进行单样本,或者两样本的正态分布检验。

  • 单样本正态分布检验,是检验样本是否与正态分布相同。
  • 两样本正态分布检验,是比较一个频率分布f(x)与理论分布g(x)或者两个观测值分布的检验方法。
> m=mean(iris$Sepal.Length)
> sd=sd(iris$Sepal.Length)
> ks.test(iris$Sepal.Length,rnorm(n=1000,mean = m, sd = sd)) # 使用数据与均数方差相等的正态分布比较

        Two-sample Kolmogorov-Smirnov test

data:  iris$Sepal.Length and rnorm(n = 1000, mean = m, sd = sd)
D = 0.097333, p-value = 0.1688
alternative hypothesis: two-sided

Warning message:
In ks.test(iris$Sepal.Length, rnorm(n = 1000, mean = m, sd = sd)) :
  并列的时候P-值将近似

可以发现,p值=0.1688 > 0.05,故不拒接H0,样本服从正态分布。
此处报错,有待深入研究。

更多推荐