Python | KS检验以及其余非参数检验的实现
Python | KS检验以及其余非参数检验的实现
- 1 什么是KS检验
- 2 KS检验分类?
- 3 KS检验的Python实现
- 3.1 检验指定的数列是否服从正态分布
- 3.2 检验指定的两个数列是否服从相同分布
- 4 其余的非参数检验
- 4.1 Wilcoxon符号秩检验(t检验的非参数版本)
- 4.2 Kruskal-Wallis H检验(方差分析的非参数版本)
- 4.3 Mann-Whitney秩检验
- 5 参考
1 什么是KS检验
定义:检验一个分布f(x)与理论分布g(x)【比如正态分布】是否一致,或两个观测值分布是否有显著差异的检验方法
- 优点:本质上是一种非参数检验方法,无需对数据进行分布假定,尤其是小样本量时经常使用
- 缺点:但代价是当检验的数据分布符合特定的分布时,KS检验的灵敏度没有对应的检验(比如t检验)来的高。
2 KS检验分类?
根据定义,KS检验可以分为两大类:
- 第一种:检验指定数列是否服从特定分布(比如正态分布)
- 第二种:检验指定两个数列是否服从相同分布
对应的原假设和备择假设分别为:
第一种:
H0:指定数列服从特定分布
H1:指定数列不服从特定分布
第二种:
H0:两个数列分布一致
H1:两个数列分布不一致
检验统计量:
D = max|f(x)-g(x)|
当实际检验统计量D>D(n,α) 则拒绝原假设,否则不拒绝;或者使用P值进行判断
3 KS检验的Python实现
3.1 检验指定的数列是否服从正态分布
from scipy.stats import kstest
import numpy as npx = np.random.normal(0,1,1000)
test_stat = kstest(x, 'norm')
test_stat
KstestResult(statistic=0.03366055793439415, pvalue=0.2026106842514801)
P值大于显著性水平,不拒绝原假设,说明指定数列服从正态分布
from scipy.stats import kstest
import numpy as npx = np.random.binomial(0,1,1000)
test_stat = kstest(x, 'norm')
test_stat
KstestResult(statistic=0.5, pvalue=1.064517291557782e-231)
P值小于显著性水平,拒绝原假设,说明指定数列不服从正态分布
3.2 检验指定的两个数列是否服从相同分布
from scipy.stats import ks_2samp
beta=np.random.beta(7,5,1000)
norm=np.random.normal(0,1,1000)
ks_2samp(beta,norm)
KstestResult(statistic=0.573, pvalue=5.500890404235437e-152)
P值小于显著性水平,拒绝原假设,说明两个数列分布不一致
from scipy.stats import ks_2samp
beta=np.random.beta(7,5,1000)
norm=np.random.beta(7,5,1000)
ks_2samp(beta,norm)
KstestResult(statistic=0.048, pvalue=0.19957365535779528)
P值大于显著性水平,不拒绝原假设,说明两个数列分布一致
4 其余的非参数检验
4.1 Wilcoxon符号秩检验(t检验的非参数版本)
from scipy import stats
x = [1, 3, 5, 7, 9]
y = [2, 4, 6, 8, 10]
stats.wilcoxon(x,y)
WilcoxonResult(statistic=0.0, pvalue=0.0625)
P值大于显著性水平,不拒绝原假设,说明两个数列在当前显著性水平下中位数一致
from scipy import stats
x = [1.26, 0.34, 0.70, 1.75, 50.57, 1.55, 0.08, 0.42, 0.50, 3.20, 0.15, 0.49, 0.95, 0.24, 1.37, 0.17, 6.98, 0.10, 0.94, 0.38]
y = [2.37, 2.16, 14.82, 1.73, 41.04, 0.23, 1.32, 2.91, 39.41, 0.11, 27.44, 4.51, 0.51, 4.50, 0.18, 14.68, 4.66, 1.30, 2.06, 1.19]
stats.wilcoxon(x,y)
WilcoxonResult(statistic=58.0, pvalue=0.082550048828125)
stats.ttest_ind(x, y)
Ttest_indResult(statistic=-1.2494667131530823, pvalue=0.2191358879608406)
t检验和W检验都不拒绝原假设,认为两总体均值和中位数相等
4.2 Kruskal-Wallis H检验(方差分析的非参数版本)
from scipy import stats
x = [1, 3, 5, 7, 9]
y = [2, 4, 6, 8, 10]
stats.kruskal(x, y)
KruskalResult(statistic=0.2727272727272734, pvalue=0.6015081344405895)
P值大于显著性水平,不拒绝原假设,说明两组数列在当前显著性水平下中位数一致
4.3 Mann-Whitney秩检验
from scipy import stats
x = [1, 3, 5, 7, 9]
y = [2, 4, 6, 8, 10]
stats.mannwhitneyu(x, y)
MannwhitneyuResult(statistic=10.0, pvalue=0.33805165701157347)
P值大于显著性水平,不拒绝原假设,说明两组数列在当前显著性水平下中位数一致
5 参考
- https://www.cnblogs.com/arkenstone/p/5496761.html
- https://blog.csdn.net/ljzology/article/details/80407704
- https://www.cnblogs.com/chaosimple/p/4090456.html
- https://blog.csdn.net/github_38486975/article/details/88985748
Python | KS检验以及其余非参数检验的实现相关推荐
- python ks检验_python KS-检验(Kolmogorov-Smirnov test) -- 检验数据是否符合某种分布...
python 检验数据分布,KS-检验(Kolmogorov-Smirnov test) – 检验数据是否符合某种分布 Kolmogorov-Smirnov是比较一个频率分布f(x)与理论分布g(x) ...
- python KS检验:检验数据是否服从指定分布;或两份数据源于同一分布
KS检验 原假设:两份数据源于同一分布 拒绝假设:两份数据源于不同的分布 一般当p值低于0.01或0.05时,拒绝原假设,即认为两份数据源于不同的分布. 双样本KS检验 from scipy.stat ...
- python ks检验_python – 使用Scipy的stats.kstest模块进行拟合优度测试
一些例子可能会说明如何使用scipy.stats.kstest.让我们首先设置一些测试数据,例如通常以平均值5和标准差10分布: >>> data = scipy.stats.nor ...
- python ks检验_在python scipy中实现Kolmogorov Smirnov检验
您的数据是以mu = 0.07和sigma = 0.89生成的. 您正在使用平均值0和标准偏差1的正态分布来测试此数据. 零假设(H0)是您的数据是样本的分布等于标准正态分布,平均值为0,标准偏差为1 ...
- python怎么实现检验_用python进行KS检验
简介 Kolmogorov-Smirnov test(KS检验)是一种重要的非参数检验方法,应用非常广泛,比如之前介绍的数据库CMap,其核心算法就是借鉴KS检验. KS检验是一种统计检验方法,其通过 ...
- 非参数检验之K-S检验
一.定义 参考文章: SPSS中八类常用非参数检验之四:单样本K-S检验- dekevin - 博客园 (cnblogs.com) 单样本K-S检验是一种拟合优度的非参数检验方法.单样本K-S检验是利 ...
- ks检验python代码_python scipy stats.kstest用法及代码示例
进行Kolmogorov-Smirnov测试是否合身. 这将针对给定的分布G(x)对观察到的随机变量的分布F(x)进行测试.在原假设下,两个分布相同,F(x)= G(x).替代假设可以是" ...
- KS检验、qq图、Scalability可扩展性
1.KS检验 Kolmogorov-Smirnov test(KS检验)是一种重要的非参数检验方法,应用非常广泛,比如之前介绍的数据库CMap,其核心算法就是借鉴KS检验. KS检验是一种统计检验方法 ...
- ks检验正态分布结果_统计学里的数据正态性检验
在前面的文章中讲过,很多模型的假设条件都是数据是服从正态分布的.这篇文章主要讲讲如何判断数据是否符合正态分布.主要分为两种方法:描述统计方法和统计检验方法. 01.描述统计方法 描述统计就是用描述的数 ...
最新文章
- python语言中如何使用注释
- Mat转换为IplImage 类型和CvMat 类型
- linux 压缩 解压 命令大全
- LeetCode之Sort List
- python numpy:array、asarray、asanyarray的区别
- ADOQuery代替ClientDataSet做3-Tier系统
- OpenCASCADE绘制测试线束:几何命令之转换
- (转)AS3 Socket
- 活动预告|一个重塑区块链行业生态的新物种即将诞生!
- MCJE魔改材质包教程
- 传教士与野人过河问题
- 5G中大规模MIMO系统通信的若干分析
- O3 Interchange全面讲解
- JNLP的使用及碰到的一些问题
- intellij IDEA更换主题为Darcula后中文项目名称变口(方框)的解决办法
- 数据库sql语句面试题
- 前端播放rtmp协议的视频流文件
- mysql数据库名词术语_【千寻】MySQL数据库名词注释(持续更新)
- BTC不同格式私钥的相互转换
- python adb开发-adb常见用法