欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

R语言中执行KS检验

程序员文章站 2022-07-15 16:04:42
...

说明

ks-Kolmogorov-Smirnow,这种检测常被用来应用于比较样本是否符合某个已知分布,而双样本的KS检测两个数据集累积分布的比较。

生成正态分布样本数据(单样本)

检测数据集X是否符合正态分布,100个数
x = rnorm(100)
ks.test(x,"pnorm)     
One-sample Kolmogorov-Smirnov test

data:  x
D = 0.12261, p-value = 0.09889
alternative hypothesis: two- sided 
检测数据集X是否符合正态分布,1000个数
x = rnorm(1000)
ks.test(x,"pnorm)  
One-sample Kolmogorov-Smirnov test

data:  x
D = 0.018507, p-value = 0.8832
alternative hypothesis: two-sided
#分析得,H0:u=u0;H1:u!=u0,前者为符合正态分布,后者为不符合正态分布
随着个数的增加,就更加接近可以于正态分布。

生成均匀分布样本数据(双样本)

set.seed(3)
x=runif(n=20,min = 0,max = 20)
y=runif(n=20,min = 0,max = 20)
plot(ecdf(x),do.points=FALSE,verticals = T,xlim = c(0,20))
lines(ecdf(y),lty=3,do.points=FALSE,verticals = T)

R语言中执行KS检验

#p-value 的值小于0.05,故双方累积分布差异不显著
 ks.test(x,y)

    Two-sample Kolmogorov-Smirnov test

data:  x and y
D = 0.3, p-value = 0.3356
alternative hypothesis: twd-sided   `
#两级变化率相同,p值为1
x = c(1:100)
y = c(1:100)
ks.test(x,y)
ks.test(x,y)

    Two-sample Kolmogorov-Smirnov test

data:  x and y
D = 0, p-value = 1
alternative hypothesis: two-sided

总结

ks检验是一种非参数的统计检验方法,常被用来比较连续概率分布间的相似性,用来判断某个样本是否符合已知概率分布(单样本KS检验),或者对于两个样本数据集的直接比较(双样本KS检验),检验基于经验分布函数ecdf。