什么是K-S检验
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是K-S检验相关的知识,希望对你有一定的参考价值。
Kolmogorov-Smirnov是比较一个频率分布f(x)与理论分布g(x)或者两个观测值分布的检验方法。其原假设H0:两个数据分布一致或者数据符合理论分布。D=max| f(x)- g(x)|,当实际观测值D>D(n,α)则拒绝H0,否则则接受H0假设。KS检验与t-检验之类的其他方法不同是KS检验不需要知道数据的分布情况,可以算是一种非参数检验方法。当然这样方便的代价就是当检验的数据分布符合特定的分布事,KS检验的灵敏度没有相应的检验来的高。在样本量比较小的时候,KS检验作为非参数检验在分析两组数据之间是否不同时相当常用。假定两个样本的样本量分别为n1和n2,用F1(X)和F2(X)分别表示两个样本的累积经验分布函数。再记Dj=F1(Xj)-F2(Xj)。检验统计量近似正态分布,表达式为:Z=max| Dj |根号下(n1n2/(n1+n2))
方法步骤是:
(1)令f(x)为假设所特定的理论累积分布函数;
(2)令sn(x)为n个观察值的样本累积函数。对每一个观察值x,sn(x)=k/n,k是小于或等于x的观察例数;
(3)确定最大距离D,定义为:
D=max|f(x)-sn(x)|
检验假设H0: f(x)=sn(x)
备择假设H1:
(4)对于选定的显著水平,如果D值等于或大于附表的临界值,则拒绝原假设 参考技术A K-S检验是统计学中在对一组数据进行统计分析是所用到的一种方法。它是将需要做统计分析的数据和另一组标准数据进行对比,求得它和标准数据之间的偏差的方法。一般在K-S检验中,先计算需要做比较的两组观察数据的累积分布函数,然后求这两个累积分布函数的差的绝对值中的最大值D。最后通过查表以确定D值是否落在所要求对应的置信区间内。若D值落在了对应的置信区间内,说明被检测的数据满足要求。反之亦然。本回答被提问者采纳
假设检验和GPGPU
我是GPGPU和编程的新手。我很想知道是否可以使用CUDA在GPGPU(SIMD)中实现统计假设检验,如单样本Kolmogorov-Smirnov检验(K-S检验)和Levene检验?如果是这样,会有什么限制?
答案
我刚刚阅读了有关这些测试的Web定义,但是,如果我理解正确,它们可以通过SIMD表达的并行性(特别是由CUDA实现)来适当加速。
在K-S测试中,必须计算N个样本的函数和估计之间的差异,然后取最大差异。换句话说,必须对N个不同的值执行相同的操作,这恰好是SIMD(单指令,多数据)。
在Levene的测试中,在N个不同的值上再次存在相同的差异,平方和乘法。
SIMD可以做的是对N个值集的一种FOR语句,前提是迭代彼此独立。因此,例如在CUDA中,编译器可以将迭代分配给图形设备的处理元件,从而并行执行,在单次迭代时对所有数据运行FOR循环。
CUDA工具包提供了一个特定的C / C ++编译器(NVCC),其中特殊指令被分派到GPGPU而不是CPU,因此被分发到其并行处理元件。
以上是关于什么是K-S检验的主要内容,如果未能解决你的问题,请参考以下文章