统计学中的t检验法和F检验法的应用条件是样本都来自正态总体或近似正态总体,只有符合这个条件,才能用它们来检验各样本所属的总体参数的差异显著性。
一、非参数检验
1、Kolmogorov-Smirnov正态性检验(单样本)
检验单一样本是否来自某一特定分布。比如检验一组数据是否为正态分布。它的检验方法是以样本数据的累积频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。即对于假设检验问题:
H0:样本所来自的总体分布服从某特定分布
H1:样本所来自的总体分布不服从某特定分布
Fn(X)表示一组随机样本的累计概率函数,F0(X)表示分布的分布函数。
当原假设为真时,D的值应较小,若过大,则怀疑原假设,从而,拒绝域为
对于给定的又,
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 2.1 shapiro.test()实现
二、图示法 Q-Q图:以样本的分位数作为横坐标,以按照正态分布计算的相应分位点作为纵坐标,把样本表现为直角坐标系的散点。如果数据服从正态分布,则样本点应围绕第一象限的对角线分布。 w <- c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 63.5, 可以发现:基本上呈正态分布。
在R中,shpiro.test()函数限制为3-5000个样本之间> shapiro.test(x)
Shapiro-Wilk normality test
data: x
W = 0.9997, p-value = 0.9494
2.2 fBasics包里的shapiroTest()
> shapiroTest(x)
Title:
Shapiro - Wilk Normality Test
Test Results:
STATISTIC:
W: 0.9997
P VALUE:
0.9494
66.6, 64.0, 57.0, 69.0, 56.9, 50.0, 72.0)
qqnorm(w); qqline(w)