中国外贸出口网站,在线图片制作生成器,华为企业解决方案,专门做酒店的招聘网站假设检验的前提是确定数据的分布#xff0c;本文介绍Python检验数据样本是否服从一定分布。使用方法是柯尔莫可洛夫-斯米洛夫检验#xff08;Kolmogorov–Smirnov test#xff0c;K-S test#xff09;#xff0c;K-S检验方法适用于探索连续型随机变量的分布#xff0c;对… 假设检验的前提是确定数据的分布本文介绍Python检验数据样本是否服从一定分布。使用方法是柯尔莫可洛夫-斯米洛夫检验Kolmogorov–Smirnov testK-S testK-S检验方法适用于探索连续型随机变量的分布对于离散分布二项分布和泊松分布需要使用其他方法进行检验。 KS检验语法
K-S检验方法能够利用样本数据推断样本来自的总体是否服从某一理论分布是一种拟合优度的检验方法这里使用scipy.stats.kstest() 实现单样本检测 scipy.stats.ks_2samp() 实现双样本检测。下面通过两个示例进行说明。
单样本检测
首先生成测试样本数据
from numpy.random import seed
from numpy.random import poisson#set seed (e.g. make this example reproducible)
seed(0)# generate dataset of 100 values that follow a Poisson distribution with mean5
data poisson(5, 100)下面代码显示如何执行KS检验检验data数据集是否符合正太分布。
from scipy.stats import kstest# perform Kolmogorov-Smirnov test
kstest(data, norm)# 输出结果
# KstestResult(statistic0.9072498680518208, pvalue1.0908062873170218e-103)从输出可以看到检验统计量为0.9072对应的p值为1.0908e-103既然P值小于0.05我们拒绝原假设有足够证据说明样本不服从正太分布。因为我们使用poisson() 函数生成数据样本数据应该服从泊松分布。
除了正太分布还可以检测分布如指数分布、伽马分布、韦伯分布、T分布、F分布等。
双样本KS检验
首先我们生成两个不同分布的样本数据
from numpy.random import seed
from numpy.random import randn
from numpy.random import lognormal#set seed (e.g. make this example reproducible)
seed(0)#generate two datasets
data1 randn(100)
data2 lognormal(3, 1, 100)下面代码执行KS检验判断两个样本是否来自同一分布
from scipy.stats import ks_2samp#perform Kolmogorov-Smirnov test
ks_2samp(data1, data2)# 输出结果
# KstestResult(statistic0.99, pvalue4.417521386399011e-57)由输出可知检验统计量为0.99对应的p值为4.4175e-57。由于p值小于0.05我们拒绝原假设。我们有足够的证据表明这两个样本数据集不是来自同一个分布。
这个结果也不应该令人惊讶因为我们使用标准正态分布为第一个样本生成值使用对数正态分布为第二个样本生成值。
总结
本文介绍了如何利用python进行数据分布检验。参考内容How to Perform a Kolmogorov-Smirnov Test in Python - Statology官网文档scipy.stats.kstest — SciPy v1.11.2 Manual通过官方文档可以进一步学习其他参数的实现更多数据检验能力。