判断俩个样本是否属于同一分布:
from scipy.stats import ks_2samp
import numpy as np
# 假设这是两个数据集的数据
data_set_1 = np.random.normal(0, 1, 1000) # 正态分布,均值0,标准差1
data_set_2 = np.random.normal(0.5, 1.5, 1000) # 正态分布,均值0.5,标准差1.5
# 进行KS检验
statistic, p_value = ks_2samp(data_set_1, data_set_2)
# 输出结果
print(f"KS统计量: {statistic}")
print(f"P值: {p_value}")
# 判断显著性
alpha = 0.05
if p_value < alpha:
print("两个数据集的分布有显著差异。")
else:
print("两个数据集的分布没有显著差异。")
基本原理
KS检验的基本思想是比较两个累积分布函数(CDF),并根据这两个 CDF 之间的最大差异来评估两个样本分布是否有显著差异。
KS 检验的类型
- 单样本 KS 检验
- 通常用于比较单个样本的经验分布表与参考分布间是否具备显著差异。( 如正态分布,指数分布等 )
- 检验的目的:确定样本数据是否来自特点的理论分布。
- 双样本 KS 检验
- 通常用于比较两个独立样本的累积分布函数。
- 检验的目的:判断两个样本是否来自同一个分布。