Kolmogorov–Smirnov test(K-S检验)「建议收藏」

Kolmogorov–Smirnov test(K-S检验)「建议收藏」主要参考资料:(1)https://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test(2)https://wenku.baidu.com/view/ccfa573a3968011ca30091d6.htmlKolmogorov–Smirnovstatistic累计分布函数:其中I[−inf,x]I[−inf…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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 ] ( X i ) = { 1 , X i ≤ x ; 0 , X i > 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,Xix;0,Xi>x;
  • Kolmogorov–Smirnov statistic:
    对于一个样本集的累计分布函数 F n ( x ) F_n(x) Fn(x)和一个假设的理论分布 F ( x ) F(x) F(x),Kolmogorov–Smirnov statistic定义为:
    Kolmogorov–Smirnov statistic
    s u p x sup_x supx是距离的上确界(supremum), 基于Glivenko–Cantelli theorem,若 X i X_i Xi服从理论分布 F ( x ) F(x) F(x),则当n趋于无穷时 D n D_n Dn趋于0。
    ##Kolmogorov distribution
  • 准备知识:
    (1)独立增量过程
    顾名思义,就是指其增量是相互独立的。严格定义如下:
    独立增量过程
    (2)维纳过程(英语:Wiener process)
    大概可以理解为一种数学化的布朗运动,严格定义如下:
    维纳过程
    (3)布朗桥(英文:Brownian bridge)
    一种特殊的维纳过程,严格定义如下:
    布朗桥
    就是说一个在 [ 0 , T ] [0,T] [0,T]区间上,且 W T = 0 W_T=0 WT=0的维纳过程。
    如图:
    布朗桥
    红色和绿色的都是“布朗桥”。
  • Kolmogorov distribution
    (1)Kolmogorov distribution
    Kolmogorov distribution定义为:
    Kolmogorov distribution
    即是通过求布朗运动上确界得到的随机变量的分布。
    它的累积分布函数可以写为:
    累计分布函数
    (2)单样本K-S检验
    单样本K-S检验即是检验样本数据点是否满足某种理论分布。
    注意!若该理论分布的参数是由样本点估计的,该方法无效!
    20220502补充:有朋友在评论里提问这句话的理论依据,其实我也不清楚。我认为可能和自由度相关,用样本估计的参数(假设是极大似然估计)本身就是尽快可能“适合”现有样本的。
    我们从零假设出发。(即假设样本点不满足理论分布 20220502修改:零假设是样本点满足理论分布)
    20220502补充:这涉及对假设检验这个框架的理解。假设检验是检验零假设是否能“自然”的解释观测结果。比如我们的抛硬币,我们的零假设是这个硬币是公平的,正反面出现的概率相同,如果抛十次 4 正 6 反,我们可以说是试验次数有限造成的,但要是10 正 0 反,再这么说就显得不自然了。如何精确的描述“自然”以及具体的严格理论请参考其他资料。
    此时,若理论分布是一种连续分布,则有:
    趋于Kolmogorov distribution
    也就是说在有无限多的样本点的时候,不论F的具体形式, n D n \sqrt{n}D_n n
    Dn
    将趋向于一个Kolmogorov distribution。(好像也叫做“依分布收敛”)
    然而事实上,我们既不可能有无穷多样本点,也不是为了证明样本点和完全不满足理论分部。
    K-S检验给出了零假设被拒绝的可能性的一种衡量方法(即样本点满足理论分布的可能性) α \alpha α:
    20220502修改:还是以前对假设检验理解有误的锅,K-S检验给出的是现在从样本里看到的结果多大程度上能被零假设解释。直观上说就是累计分布和零假设预期的累计分布偏差越大就越不能被零假设解释,比如我们预期由于随机性的存在,即便在零假设成立的条件下,在当前样本容量下,出现大于等于当前看到的偏差的概率为 50%,那我们认为可以用零假设解释当前的情况。如果出现大于等于当前看到的偏差的概率为 10%,保守一些可能觉得还是可以用零假设解释当前的情况,激进一些可能就觉得不太能用零假设解释当前的情况。而下面给出的 α \alpha α 就是这个“零假设成立的条件下,在当前样本容量下,出现大于等于当前看到的偏差的概率”
    α = m i n ( [ α ′ ∣ n D n > K α ′ ] ) \alpha =min([\alpha^\prime|\sqrt{n}D_n>K_{\alpha^\prime}]) α=min([αn
    Dn>
    Kα])

    其中, K α ′ K_{\alpha^\prime} Kα由以下方式给出:
    P r ( K ≤ K α ′ ) = 1 − α ′ Pr(K \le K_{\alpha^\prime}) = 1 – \alpha^\prime Pr(KKα)=1α
    20220502补充:关于 α \alpha α 的式子比较绕,这里再说一下。先看 α \alpha α 的定义,就是在 n D n > K α ′ \sqrt{n}D_n>K_{\alpha^\prime} n
    Dn>
    Kα
    的约束下,最小的那个 α ′ \alpha^\prime α,再看 K α ′ K_{\alpha^\prime} Kα 是怎么来的,就是 K α ′ K_{\alpha^\prime} Kα 使得 K K K 小于等于它的概率为 1 − α 1-\alpha 1α(所以大于它的概率为 α \alpha α)。至于为啥要有个取最小值这还是假设检验框架下的惯用做法。还是用抛硬币的例子,我们用|正-反|来作为衡量是否公平的统计量,假设我们现在看到 8 正 2 反,那统计量为 6,那么 0,2,4 都小于 6,数字越大对应的正反面概率相等的硬币抛 10 次得到大于这个数字的概率 α ′ \alpha^\prime α 越小,我们必须找最小的那个 α ′ \alpha^\prime α(即大于 |正-反|=4 的概率,也就是我们想要的“大于等于当前看到的偏差(6)的概率”)才行。
    可以这样定性的理解,样本点越偏离理论分布,它的Kolmogorov–Smirnov statistic就会越大,那么我们找到的 K α K_\alpha Kα就越大, α \alpha α就越小,理论分布就越难解释现在的样本,反之亦然。
    PS:
    wiki上给出的并不是这样,而是:
    wiki
    但按照我的理解这种提法有些问题。因为我们知道 K 1 = 0 K_1=0 K1=0;而 n D n > 0 \sqrt{n}D_n>0 n
    Dn>
    0
    几乎总是成立的。那岂不是对于任何样本点,总有 α = 1 \alpha=1 α=1
    20220502补充:这没什么问题,“The null hypothesis is rejected at level α \alpha α” 其实就是说“零假设成立的条件下,在当前样本容量下,出现大于等于当前看到的偏差的概率小于等于 α \alpha α”,那任何时候出现大于等于当前看到的偏差的概率都小于等于 100%(但这样说没意思,任何一个概率都小于等于 100%,等于没说,也正是因为这个原因我们要找最小的 α ′ \alpha^\prime α
  • 当理论分布函数非连续时
    这里直接引用wiki上的内容

wiki

双样本集K-S检验

双样本K-S检验即是检验两个样本集是否满足同样的潜在分布。
其零假设被否定的可能性仍然以 α \alpha α给出:
α = m i n ( [ α ∣ D n , m > c ( α ) n + m n m ] ) , \alpha =min([\alpha|D_{n,m}>c(\alpha)\sqrt{\frac{n+m}{nm}}]), α=min([αDn,m>c(α)nmn+m
])

其中:
1
2
PS:
wiki上的提法与此不同,此处采用此种提法的原因与单样本K-S检验相同。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180543.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Python实现多线程并发下载大文件(断点续传支持)

    Python实现多线程并发下载大文件(断点续传支持)本文非常浅层的演示了python如何实现多线程文件下载,核心取决于现代服务器基本都支持范围下载的前提下。关于断点续传,文章已提供基本理论和实现思路,有兴趣通过python实现下载器的朋友都可以专门去实现一下。……

    2022年10月16日
  • Linux shell 字符串匹配

    Linux shell 字符串匹配最近进行脚本学习的时候,遇到了字符串匹配的问题,网上的内容也很乱,在这里我就写一个简单可行的方法吧。      首先假设一个场景:在一个文件夹里有很多后缀为sh的文件,那我怎么移动除了指定的某些文件之外文件到特定文件夹中呢?      具体程序如下(根据程序解决问题):forfilein$(ls*.sh)do ifecho $file|grep’move’ t

  • read函数的返回值问题

    read函数的返回值问题Read函数读取字符串返回值的问题1.前言在学习socket编程的途中,通过客户端给服务端发送字符串,然后服务端通过read或者recv来读取数据,然后返回读取的字节数.我在想read返回的读取字节数有没有包含’\0’或者’\n’呢,于是通过一些简单的小例子,来看看实际情况到底如何.2.read函数我们来看一下read函数的原型:ssize_tread(intfd,void…

  • kubernetes可以实现容器集群的哪些功能_docker二进制安装

    kubernetes可以实现容器集群的哪些功能_docker二进制安装二进制方式部署Kubernetes高可用集群文章目录二进制方式部署Kubernetes高可用集群1.环境准备1.1.Kubernetes高可用集群部署方式1.2.Kubernetes集群弃用docker容器1.3.Kubernetes集群所需的证书1.4.环境准备1.5.安装cfssl证书生成工具2.操作系统初始化配置3.部署Etcd集群3.1.使用cfssl证书工具生成etcd证书3.2.部署etcd集群4.部署Docker服务4.1.安装docker4.2.为docker创建systemctl启动脚本

  • 几款国产开源的Windows界面库

    几款国产开源的Windows界面库vchelp2013-3-212:10:47阅读(3972)评论(0)上次介绍的几款图形界面库http://blog.okbase.net/vchelp/archive/23.html都是国外的开源项目,今天介绍的几款都是国人的开源项目,大部分是采用DirectUI设计思想。 1. 炫彩界面库XCGUI炫彩界面库不仅是界面库,它是软件界面开发框架,让用户开发

  • 详细理解HashMap数据结构,太齐全了!「建议收藏」

    写在前面:小伙伴儿们,大家好!今天来学习HashMap相关内容,作为面试必问的知识点,来深入了解一波!思维导图:1,HashMap集合简介HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。JDK1.8之前的HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了节解决哈希碰

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号