如何在Python中检查样本是否具有与总体相同的概率分布?

如何在Python中检查样本是否具有与总体相同的概率分布?,python,machine-learning,probability,Python,Machine Learning,Probability,我有一个包含数百万行的数据框,为了创建一个模型,我使用dataset.sample(int(len(dataset)/5))从这个数据集中随机抽取了一个样本,它从对象的一个轴返回一个项目的随机样本。现在我想验证样本是否没有从总体上失去统计意义,也就是说,确保样本的每个特征(列)的概率分布对于整个数据集(总体)具有相同的概率分布。我有数字和分类特征。如何在Python中检查特征是否具有相同的概率分布?对于连续变量,可以使用Kolmogorov-Smirnov统计量。此测试是否从同一分布中抽取两个样

我有一个包含数百万行的数据框,为了创建一个模型,我使用
dataset.sample(int(len(dataset)/5))
从这个数据集中随机抽取了一个样本,它从对象的一个轴返回一个项目的随机样本。现在我想验证样本是否没有从总体上失去统计意义,也就是说,确保样本的每个特征(列)的概率分布对于整个数据集(总体)具有相同的概率分布。我有数字和分类特征。如何在Python中检查特征是否具有相同的概率分布?

对于连续变量,可以使用Kolmogorov-Smirnov统计量。此测试是否从同一分布中抽取两个样本

scipy
中的用法:

scipy.stats.ks_2samp(data1, data2, alternative='two-sided', mode='auto')

或者,如果您已经知道该分布,您可以使用KS测试,该测试根据给定的分布测试您的数据:


这不需要测试。如果从整个数据帧中抽取一个简单的随机样本,那么数据集具有的任何特征的概率分布实际上就是整个数据集。这是一个简单随机样本的性质

不幸的是,除非数据集也进行了适当的采样(我假设此时您无法控制),否则无法保证数据集和样本具有相同的分布。概率分布在数据采样点确定


但是,如果你愿意这样假设,那么你就不需要额外的检查步骤来确保你的随机样本完成了它的工作-这是可以证明的。

如果我有兴趣检查两个样本是否具有相同的概率分布,那么情况如何?如果它们是以相同的方式(随机)抽取的,它们保证具有相同的概率分布。如果您无法控制采样,并且希望检查,那么KS测试将起作用(如所述)。然而,在上述问题的约束条件下,不需要进行测试(事实上,发现的任何重要结果基本上都是错误的)。