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检验以及其余非参数检验的实现相关推荐

  1. python ks检验_python KS-检验(Kolmogorov-Smirnov test) -- 检验数据是否符合某种分布...

    python 检验数据分布,KS-检验(Kolmogorov-Smirnov test) – 检验数据是否符合某种分布 Kolmogorov-Smirnov是比较一个频率分布f(x)与理论分布g(x) ...

  2. python KS检验:检验数据是否服从指定分布;或两份数据源于同一分布

    KS检验 原假设:两份数据源于同一分布 拒绝假设:两份数据源于不同的分布 一般当p值低于0.01或0.05时,拒绝原假设,即认为两份数据源于不同的分布. 双样本KS检验 from scipy.stat ...

  3. python ks检验_python – 使用Scipy的stats.kstest模块进行拟合优度测试

    一些例子可能会说明如何使用scipy.stats.kstest.让我们首先设置一些测试数据,例如通常以平均值5和标准差10分布: >>> data = scipy.stats.nor ...

  4. python ks检验_在python scipy中实现Kolmogorov Smirnov检验

    您的数据是以mu = 0.07和sigma = 0.89生成的. 您正在使用平均值0和标准偏差1的正态分布来测试此数据. 零假设(H0)是您的数据是样本的分布等于标准正态分布,平均值为0,标准偏差为1 ...

  5. python怎么实现检验_用python进行KS检验

    简介 Kolmogorov-Smirnov test(KS检验)是一种重要的非参数检验方法,应用非常广泛,比如之前介绍的数据库CMap,其核心算法就是借鉴KS检验. KS检验是一种统计检验方法,其通过 ...

  6. 非参数检验之K-S检验

    一.定义 参考文章: SPSS中八类常用非参数检验之四:单样本K-S检验- dekevin - 博客园 (cnblogs.com) 单样本K-S检验是一种拟合优度的非参数检验方法.单样本K-S检验是利 ...

  7. ks检验python代码_python scipy stats.kstest用法及代码示例

    进行Kolmogorov-Smirnov测试是否合身. 这将针对给定的分布G(x)对观察到的随机变量的分布F(x)进行测试.在原假设下,两个分布相同,F(x)= G(x).替代假设可以是" ...

  8. KS检验、qq图、Scalability可扩展性

    1.KS检验 Kolmogorov-Smirnov test(KS检验)是一种重要的非参数检验方法,应用非常广泛,比如之前介绍的数据库CMap,其核心算法就是借鉴KS检验. KS检验是一种统计检验方法 ...

  9. ks检验正态分布结果_统计学里的数据正态性检验

    在前面的文章中讲过,很多模型的假设条件都是数据是服从正态分布的.这篇文章主要讲讲如何判断数据是否符合正态分布.主要分为两种方法:描述统计方法和统计检验方法. 01.描述统计方法 描述统计就是用描述的数 ...

最新文章

  1. python语言中如何使用注释
  2. Mat转换为IplImage 类型和CvMat 类型
  3. linux 压缩 解压 命令大全
  4. LeetCode之Sort List
  5. python numpy:array、asarray、asanyarray的区别
  6. ADOQuery代替ClientDataSet做3-Tier系统
  7. OpenCASCADE绘制测试线束:几何命令之转换
  8. (转)AS3 Socket
  9. 活动预告|一个重塑区块链行业生态的新物种即将诞生!
  10. MCJE魔改材质包教程
  11. 传教士与野人过河问题
  12. 5G中大规模MIMO系统通信的若干分析
  13. O3 Interchange全面讲解
  14. JNLP的使用及碰到的一些问题
  15. intellij IDEA更换主题为Darcula后中文项目名称变口(方框)的解决办法
  16. 数据库sql语句面试题
  17. 前端播放rtmp协议的视频流文件
  18. mysql数据库名词术语_【千寻】MySQL数据库名词注释(持续更新)
  19. BTC不同格式私钥的相互转换
  20. python adb开发-adb常见用法

热门文章

  1. 记一次laytpl语法踩坑
  2. 今天学习了access vba
  3. c# 在word中插入表格
  4. 剑灵力士卡刀ahk_关于暗枪卡刀AHK我研究了2个小时。感觉完美。
  5. 实测Windows server 2012 配置WSUS
  6. 正则表达式 替换:将叠词替换成
  7. 终于一个人租了房子~~
  8. 就柱体二维码论文中的一些关键点做一些备忘
  9. CST微波工作室学习笔记—2.工作界面
  10. poj 2459 Feed Accounting