R语言学习笔记一:正态性检验与判断
·
一、正态性检验与判断
正态性检验(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)

Q-Q图:
Q-Q图是以变量的分位数作为x轴,以指定分布的分位数为y轴。
> qqnorm(iris$Sepal.Length)
> qqline(iris$Sepal.Length)
标准直线为上下四分位数的连线。
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直线
标准直线为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,样本服从正态分布。
此处报错,有待深入研究。
更多推荐
所有评论(0)