📜  统计-Kolmogorov Smirnov检验(1)

📅  最后修改于: 2023-12-03 15:41:18.220000             🧑  作者: Mango

统计-Kolmogorov Smirnov检验

在统计学中,Kolmogorov-Smirnov检验(简称KS检验)是一种非参数检验方法,用于检验两组数据是否来自同一分布。KS检验的基本思想是比较两个样本的累计分布函数(CDF)之间的差异,从而得出一个统计量。

KS检验的原理

KS检验的原理就是根据两个样本的累计分布函数的值,算出它们之间的最大差值,用这个差值作为KS检验的统计量。

其中,样本的累计分布函数即按序排列后,每个数值出现的频率的累加和。用$F(x)$表示一个数据样本的累积分布函数,则令$F_n(x)$表示样本中小于等于x的数据所占的比例,即:

$F_n(x)=\frac{\text{小于等于}x\text{的数据个数}}{n}$

其中n表示样本个数。同理,用$G(x)$表示另一个数据样本的累计分布函数,则令$G_n(x)$表示另一个样本中小于等于x的数据所占的比例。其计算方法也是一样的。

KS检验的统计量通常用$D_n$表示,定义为:

$D_n=\max_x|F_n(x)-G_n(x)|$

其中,$|F_n(x)-G_n(x)|$表示两个累积分布函数之间的距离,$D_n$表示两个累积分布函数之间的最大距离,即它们之间的最大差异。

KS检验的原理就是如果两个分布函数相等,那么它们的差异应该很小,而如果它们的分布不同,那么它们之间的差异就会很大。

KS检验的步骤
  1. 获取两个数据样本。
  2. 对两个数据样本进行排序。
  3. 计算两个数据样本的累计分布函数。
  4. 计算两个数据样本的累计分布函数之差的绝对值。
  5. 计算两个数据样本的累计分布函数之差的最大值,即KS检验的统计量$D_n$。
  6. 根据设定的显著性水平$\alpha$,查对应的$D_n$值在Kolmogorov-Smirnov分布表中的临界值$D_{\alpha}$。
  7. 比较$D_n$和$D_{\alpha}$的大小,如果$D_n>D_{\alpha}$,则拒绝原假设,即认为两个数据样本不来自同一分布;否则,接受原假设,即认为两个数据样本来自同一分布。
KS检验的代码实现

KS检验在很多编程语言中都有相应的实现模块和库,如Python中的scipy.stats模块。以下是Python中使用scipy.stats模块实现KS检验的示例代码:

from scipy import stats

sample1 = [1, 2, 3, 4, 5]
sample2 = [1, 1, 2, 3, 4]

statistic, pvalue = stats.ks_2samp(sample1, sample2)

print("KS检验统计量D: {0}".format(statistic))
print("P值: {0}".format(pvalue))

代码说明:

  • scipy.stats模块提供了ks_2samp函数,用于计算两个样本的KS检验统计量。
  • sample1sample2分别表示两个数据样本,其中sample1是[1, 2, 3, 4, 5],sample2是[1, 1, 2, 3, 4]。
  • ks_2samp函数会返回两个值:KS检验统计量和P值。本示例代码将它们分别存储在statisticpvalue变量中。
  • 最后,将statisticpvalue打印出来。
参考资料
  1. Kolmogorov-Smirnov test - Wikipedia
  2. Python(统计分析)----kolmogorov-smirnov检验
  3. Python Scipy Statisitics-ks_2samp()