@[toc]
正态记分推断基本思想
- 将数据
的秩按升幂排列,记为
- 用相应的正态记分代替这些秩,并加上相应的
的符号,称为符号正态记分,即
- 记
为正负正态记分之差,正态记分检验统计量
- 原假设为真时,认为观测值的总体分布接近正态,或者在大样本情况下𝑻近似标准正态分布
- 当|𝑻|很大时,可以考虑拒绝原假设,即检验的𝒑值=𝟐(𝟏−𝚽(|𝐓|));若𝒑值大于𝜶,接受原假设;否则拒绝原假设
示例,自己编写函数
NScoreTest<-function(wd,med.val=0,alternative='two.sided'){
n<length(wd)
wd.diff<-wd-med.val
wd.absdiff<-abs(wd.diff)
wd.rank<-rank(wd.absdiff)
wd.sign<-sign(wd.diff)
wd.nscore<-qnorm((1+wd.rank/(n+1))/2,0,1)*wd.sign
df<-data.frame(value=wd,absvalue=wd.absdiff,rank=wd.rank,sign=wd.sign,nscore=wd.nscore)
index<-order(wd.absdiff)
df<-df[index,]
w<-sum(wd.nscore)
Tval<-w/sqrt(sum(wd.nscore^2))
if(alternative=='two.sided'){pval<-2*(1-pnorm(abs(Tval),0,1))}
if(alternative=='less'){pval<-pnorm(Tval,0,1)}
if(alternative=='greater'){pval<-1-pnorm(Tval,0,1)}
list(df=df,w=w,Tval=Tval,pval=pval)
}
DeadNum<-c(4,6,9,15,31,33,36,65,77,88)
NScoreTest(DeadNum,34,'less')
NScoreTest(DeadNum,16,'greater')
> NScoreTest(DeadNum,34,'less')
$df
value absvalue rank sign nscore
6 33 1 1 -1 -0.06601181
7 36 2 2 1 0.13231285
5 31 3 3 -1 -0.19920132
4 15 19 4 -1 -0.26699413
3 9 25 5 -1 -0.33603814
2 6 28 6 -1 -0.40672425
1 4 30 7 -1 -0.47950565
8 65 31 8 1 0.55492294
9 77 43 9 1 0.63364000
10 88 54 10 1 0.71649750
$w
[1] 0.282898
$Tval
[1] 0.2072131
$pval
[1] 0.5820783
> NScoreTest(DeadNum,16,'greater')
$df
value absvalue rank sign nscore
4 15 1 1 -1 -0.06601181
3 9 7 2 -1 -0.13231285
2 6 10 3 -1 -0.19920132
1 4 12 4 -1 -0.26699413
5 31 15 5 1 0.33603814
6 33 17 6 1 0.40672425
7 36 20 7 1 0.47950565
8 65 49 8 1 0.55492294
9 77 61 9 1 0.63364000
10 88 72 10 1 0.71649750
$w
[1] 2.462808
$Tval
[1] 1.803923
$pval
[1] 0.03562168
示例,调用函数
library('snpar')
ns.test(DeadNum,q=34,alternative='less')
ns.test(DeadNum,q=16,alternative='greater')
> ns.test(DeadNum,q=34,alternative='less')
One-sample normal score test
data: DeadNum
statistic = 0.40853, p-value = 0.6586
alternative hypothesis: true location is less than 34
> ns.test(DeadNum,q=16,alternative='greater')
One-sample normal score test
data: DeadNum
statistic = 1.8442, p-value = 0.03258
alternative hypothesis: true location is greater than 16
K-S检验
ks.test(x, pnorm, mean, sd, alternative) #(已知的正态分布)
ks.test(x, pnorm, sample mean, sample sd, alternative) #(未知正态分布,样本均值和样本标准差替代𝝁, 𝝈)、lillie.test(x) (nortest package for more normality test)
原假设:该分布可以认为是正态分布(和正态分布没有差异)
p<0.5,拒绝原假设,也就是不能认为该分布是正态分布;
p>0.5,不能拒绝原假设,也就是不能否认该分布是正态分布。
blood<-c(87,77,92,68,80,78,84,77,81,80,80,77,
92,86,76,80,81,75,77,72,81,90,84,86,
80,68,77,87,76,77,78,92,75,80,78)
hist(blood)
ks.test(blood,pnorm,80,6)
ks.test(blood,pnorm,mean(blood),sd(blood))
> ks.test(blood,pnorm,80,6)
One-sample Kolmogorov-Smirnov test
data: blood
D = 0.1481, p-value = 0.4264
alternative hypothesis: two-sided
> ks.test(blood,pnorm,mean(blood),sd(blood))
One-sample Kolmogorov-Smirnov test
data: blood
D = 0.16523, p-value = 0.2949
alternative hypothesis: two-sided
网友评论