Kolmogorov–Smirnov test(K-S检验)
20220502:已经很长时间不用 CSDN 写博客了,今天偶然看到自己以前写的这篇,发现存在一些错误和讲的不清楚的地方,修改一下以免误人子弟。(当然可能改后还是有错的,请读者不要尽信,如果实在不能理解我说的,很可能是我说错了
主要参考资料:
(1)https://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test
(2)https://wenku.baidu.com/view/ccfa573a3968011ca30091d6.html
Kolmogorov–Smirnov statistic
- 累计分布函数:
其中 I[−inf,x]I_{[-\inf,x]}I[−inf,x] 为indicator function(指示函数),
I[−inf,x](Xi)={1,Xi≤x;0,Xi>x;I_{[-\inf,x]}(X_i)=\left\{\begin{matrix} 1,X_i\leq x;\\ 0,X_i> x; \end{matrix}\right. I[−inf,x](Xi)={1,Xi≤x;0,Xi>x; - Kolmogorov–Smirnov statistic:
对于一个样本集的累计分布函数Fn(x)F_n(x)Fn(x)和一个假设的理论分布F(x)F(x)F(x),Kolmogorov–Smirnov statistic定义为:
supxsup_xsupx是距离的上确界(supremum), 基于Glivenko–Cantelli theorem,若XiX_iXi服从理论分布F(x)F(x)F(x),则当n趋于无穷时DnD_nDn趋于0。
##Kolmogorov distribution - 准备知识:
(1)独立增量过程
顾名思义,就是指其增量是相互独立的。严格定义如下:
(2)维纳过程(英语:Wiener process)
大概可以理解为一种数学化的布朗运动,严格定义如下:
(3)布朗桥(英文:Brownian bridge)
一种特殊的维纳过程,严格定义如下:
就是说一个在[0,T][0,T][0,T]区间上,且WT=0W_T=0WT=0的维纳过程。
如图:
红色和绿色的都是“布朗桥”。 - Kolmogorov distribution
(1)Kolmogorov distribution
Kolmogorov distribution定义为:
即是通过求布朗运动上确界得到的随机变量的分布。
它的累积分布函数可以写为:
(2)单样本K-S检验
单样本K-S检验即是检验样本数据点是否满足某种理论分布。
注意!若该理论分布的参数是由样本点估计的,该方法无效!
20220502补充:有朋友在评论里提问这句话的理论依据,其实我也不清楚。我认为可能和自由度相关,用样本估计的参数(假设是极大似然估计)本身就是尽快可能“适合”现有样本的。
我们从零假设出发。(即假设样本点不满足理论分布 20220502修改:零假设是样本点满足理论分布)
20220502补充:这涉及对假设检验这个框架的理解。假设检验是检验零假设是否能“自然”的解释观测结果。比如我们的抛硬币,我们的零假设是这个硬币是公平的,正反面出现的概率相同,如果抛十次 4 正 6 反,我们可以说是试验次数有限造成的,但要是10 正 0 反,再这么说就显得不自然了。如何精确的描述“自然”以及具体的严格理论请参考其他资料。
此时,若理论分布是一种连续分布,则有:
也就是说在有无限多的样本点的时候,不论F的具体形式,nDn\sqrt{n}D_nnDn将趋向于一个Kolmogorov distribution。(好像也叫做“依分布收敛”)
然而事实上,我们既不可能有无穷多样本点,也不是为了证明样本点和完全不满足理论分部。
K-S检验给出了零假设被拒绝的可能性的一种衡量方法(即样本点满足理论分布的可能性) α\alphaα:
20220502修改:还是以前对假设检验理解有误的锅,K-S检验给出的是现在从样本里看到的结果多大程度上能被零假设解释。直观上说就是累计分布和零假设预期的累计分布偏差越大就越不能被零假设解释,比如我们预期由于随机性的存在,即便在零假设成立的条件下,在当前样本容量下,出现大于等于当前看到的偏差的概率为 50%,那我们认为可以用零假设解释当前的情况。如果出现大于等于当前看到的偏差的概率为 10%,保守一些可能觉得还是可以用零假设解释当前的情况,激进一些可能就觉得不太能用零假设解释当前的情况。而下面给出的 α\alphaα 就是这个“零假设成立的条件下,在当前样本容量下,出现大于等于当前看到的偏差的概率”
α=min([α′∣nDn>Kα′])\alpha =min([\alpha^\prime|\sqrt{n}D_n>K_{\alpha^\prime}]) α=min([α′∣nDn>Kα′])
其中,Kα′K_{\alpha^\prime}Kα′由以下方式给出:
Pr(K≤Kα′)=1−α′Pr(K \le K_{\alpha^\prime}) = 1 - \alpha^\prime Pr(K≤Kα′)=1−α′
20220502补充:关于 α\alphaα 的式子比较绕,这里再说一下。先看 α\alphaα 的定义,就是在 nDn>Kα′\sqrt{n}D_n>K_{\alpha^\prime}nDn>Kα′ 的约束下,最小的那个 α′\alpha^\primeα′,再看 Kα′K_{\alpha^\prime}Kα′ 是怎么来的,就是 Kα′K_{\alpha^\prime}Kα′ 使得 KKK 小于等于它的概率为 1−α1-\alpha1−α(所以大于它的概率为 α\alphaα)。至于为啥要有个取最小值这还是假设检验框架下的惯用做法。还是用抛硬币的例子,我们用|正-反|来作为衡量是否公平的统计量,假设我们现在看到 8 正 2 反,那统计量为 6,那么 0,2,4 都小于 6,数字越大对应的正反面概率相等的硬币抛 10 次得到大于这个数字的概率α′\alpha^\primeα′ 越小,我们必须找最小的那个 α′\alpha^\primeα′(即大于 |正-反|=4 的概率,也就是我们想要的“大于等于当前看到的偏差(6)的概率”)才行。
可以这样定性的理解,样本点越偏离理论分布,它的Kolmogorov–Smirnov statistic就会越大,那么我们找到的KαK_\alphaKα就越大,α\alphaα就越小,理论分布就越难解释现在的样本,反之亦然。
PS:
wiki上给出的并不是这样,而是:
但按照我的理解这种提法有些问题。因为我们知道K1=0K_1=0K1=0;而nDn>0\sqrt{n}D_n>0nDn>0几乎总是成立的。那岂不是对于任何样本点,总有α=1\alpha=1α=1?
20220502补充:这没什么问题,“The null hypothesis is rejected at level α\alphaα” 其实就是说“零假设成立的条件下,在当前样本容量下,出现大于等于当前看到的偏差的概率小于等于 α\alphaα”,那任何时候出现大于等于当前看到的偏差的概率都小于等于 100%(但这样说没意思,任何一个概率都小于等于 100%,等于没说,也正是因为这个原因我们要找最小的 α′\alpha^\primeα′) - 当理论分布函数非连续时
这里直接引用wiki上的内容
双样本集K-S检验
双样本K-S检验即是检验两个样本集是否满足同样的潜在分布。
其零假设被否定的可能性仍然以α\alphaα给出:
α=min([α∣Dn,m>c(α)n+mnm]),\alpha =min([\alpha|D_{n,m}>c(\alpha)\sqrt{\frac{n+m}{nm}}]), α=min([α∣Dn,m>c(α)nmn+m]),
其中:
PS:
wiki上的提法与此不同,此处采用此种提法的原因与单样本K-S检验相同。
Kolmogorov–Smirnov test(K-S检验)相关推荐
- 柯尔莫可洛夫-斯米洛夫检验(Kolmogorov–Smirnov test,K-S test)
柯尔莫哥洛夫-斯米尔诺夫检验(Колмогоров-Смирнов检验)基于累计分布函数,用以检验两个经验分布是否不同或一个经验分布与另一个理想分布是否不同. 在进行cumulative probab ...
- matlab的k s检验,K-S 检验(Kolmogorov–Smirnov kurtosis-skewness)
本文与普通的讲述 K-S 检验的文章略有不同,分为两部分: (1). 针对大部分分布的 Kolmogorov–Smirnov 检验(真正的K-S检验) (2). 仅适用于高斯分布的基于分布曲线形状的 ...
- Kolmogorov Smirnov 检验
Kolmogorov-Smirnov检验 一个例子 假设你拿到下面的这100个观察值: -0.16 -0.68 -0.32 -0.85 0.89 -2.28 0.63 0.41 0.15 0.74 1 ...
- python ks检验_在python scipy中实现Kolmogorov Smirnov检验
您的数据是以mu = 0.07和sigma = 0.89生成的. 您正在使用平均值0和标准偏差1的正态分布来测试此数据. 零假设(H0)是您的数据是样本的分布等于标准正态分布,平均值为0,标准偏差为1 ...
- Kolmogorov–Smirnov test
柯尔莫可洛夫-斯米洛夫检验(K-S test) 在统计学中,柯尔莫可洛夫-斯米洛夫检验基于累计分布函数,用以检验两个经验分布是否不同或一个经验分布与另一个理想分布是否不同. 在进行累计概率(cumul ...
- 正态检验 (Normality Test)——常见方法汇总与简述
前 言 在科学研究中,往往需要对数据进行差异性检验,而常用的参数检验需要数据服从正态分布,因此在决定是否采用参数检验之前需要先对数据进行正态性检验.这一步在任何统计学软件中(如SPSS.SAS.Ori ...
- 如何做到长期稳定的禅修?
关注"心仪脑"查看更多脑科学知识的分享. 关键词:禅修.脑科学 禅修,印度语意思是"心灵的培育",就是把心灵中的良好状态培育出来.西方英语中的"Med ...
- ks检验正态分布结果_KS检验及其在机器学习中的应用
KS检验及其在机器学习中的应用 什么是KS检验 Kolmogorov–Smirnov 检验,简称KS检验,是统计学中的一种非参数假设检验,用来检测单样本是否服从某一分布,或者两样本是否服从相同分布.在 ...
- bartlett方差齐性检验_数据总体分布检验
不管是在练习项目还是实际工作中,我们基本上是抽样获取数据,通过一定的抽样设置得到一定数据量,然后从样本数据推断总体分布.但是不同情景下的数据分布是不同的,为了数据分析和后期模型建立,我们需要了解数据的 ...
最新文章
- 使用python学线性代数_最简单的神经网络简介| 使用Python的线性代数
- 解决firebug报“illegal character错误的问题
- 事业编和公务员哪个好?
- Moses Staff攻陷以色列网络并加密数据,拒绝谈判
- paip.软件开发之COOKIE调试
- dnf外挂java代码,使用Java实现简朴的斗地主案例_rust辅助,绝地求生卡盟
- 13种常见软件体系结构风格定义分析、结构图、优缺点
- Ms08067联合360漏洞响应平台(SRC)送给白帽子20本“精选的10本安全好书”
- convolution backbone network——Deep Pyramidal Residual Networks
- C 语言实例 - 判断元音/辅音
- lua服务器客户端消息回调,lua服务器客户端消息回调
- python好学吗一般要学多久-python好学吗
- java面试题大全2
- Alibaba Java 2021 技术图谱——学习永无止境
- 初中计算机案例交流,初中语文与信息技术整合教学案例——《爱莲说》
- JSON和BSON的区别
- 英飞凌单片机--GTM(Generic Timer Module)
- Matlab2017a出现错误使用 mex 未找到支持的编译器或 SDK。
- Python tkinter canvas方法的Bitmap、stipple参数和组件Bitmap属性的使用以及xbm文件
- java跳骚市场的代码,Java常用API包及骚操作